Query Sage X3 Cloud Data as a SQL Server Database in Node.js

Jerod Johnson
Jerod Johnson
Director, Technology Evangelism
Execute SQL Server queries against Sage X3 Cloud data from Node.js.

You can use CData Connect AI to query Sage X3 Cloud data through a SQL Server interface. Follow the procedure below to create a virtual database for Sage X3 Cloud in Connect AI and start querying using Node.js.

CData Connect AI provides a pure MySQL, cloud-to-cloud interface for Sage X3 Cloud, allowing you to easily query live Sage X3 Cloud data in Node.js — without replicating the data to a natively supported database. As you query data in Node.js, CData Connect AI pushes all supported SQL operations (filters, JOINs, etc) directly to Sage X3 Cloud, leveraging server-side processing to quickly return Sage X3 Cloud data.

Configure Sage X3 Cloud Connectivity for NodeJS

Connectivity to Sage X3 Cloud from NodeJS is made possible through CData Connect AI. To work with Sage X3 Cloud data from NodeJS, we start by creating and configuring a Sage X3 Cloud connection.

  1. Log into Connect AI, click Sources, and then click Add Connection
  2. Adding a Connection
  3. Select "Sage X3 Cloud" from the Add Connection panel
  4. Selecting a data source
  5. Enter the necessary authentication properties to connect to Sage X3 Cloud.

    Sage X3 Cloud uses the OAuth 2.0 Client Credentials flow, and an X-API-Key is also required for API access. Set AuthScheme to OAuth and specify the following connection properties:

    • URL: The base URL of your Sage X3 Cloud instance.
    • OAuthAccessTokenUrl: The OAuth token endpoint (e.g., https://your-auth-domain/oauth/token).
    • OAuthClientId: Your OAuth application client ID.
    • OAuthClientSecret: Your OAuth application client secret.
    • Audience: The API audience value for the token request.
    • XAPIKey: The X-API-Key provided by your Sage X3 Cloud administrator.
    • Folder: The Sage X3 folder name (e.g., SEED). This folder is used as the default schema.
    • Folders (optional): A comma-separated list of Sage X3 folders (e.g., SEED,PERF). Each folder is exposed as a separate schema, so you can query across folders with the Schema.Table syntax.

    The driver obtains an access token with the Client Credentials flow and sends it with the X-API-Key on every API request. With InitiateOAuth set to GETANDREFRESH (the default), the driver acquires and refreshes the token automatically.

    Configuring a connection (Salesforce is shown)
  6. Click Save & Test
  7. Navigate to the Permissions tab in the Add Sage X3 Cloud Connection page and update the User-based permissions. Updating permissions

Add a Personal Access Token

When connecting to Connect AI through the REST API, the OData API, or the Virtual SQL Server, a Personal Access Token (PAT) is used to authenticate the connection to Connect AI. It is best practice to create a separate PAT for each service to maintain granularity of access.

  1. Click on the Gear icon () at the top right of the Connect AI app to open the settings page.
  2. On the Settings page, go to the Access Tokens section and click Create PAT.
  3. Give the PAT a name and click Create. Creating a new PAT
  4. The personal access token is only visible at creation, so be sure to copy it and store it securely for future use.

With the connection configured and a PAT generated, you are ready to connect to Sage X3 Cloud data from Node.js.

Query Sage X3 Cloud from Node.js

The following example shows how to define a connection and execute queries to Sage X3 Cloud with the SQL Server module. You will need the following information:

  • server: tds.cdata.com
  • port: 14333
  • user: a Connect AI user (e.g. [email protected])
  • password: the PAT for the above user
  • database: The connection you configured for Sage X3 Cloud (SageX3Cloud1)

Connect to Sage X3 Cloud data and start executing queries with the code below:

var sql = require('mssql')
var config = {
	server: 'tds.cdata.com',
	port: 14333, 
	user: '[email protected]', //update me
	password: 'CONNECT_USER_PAT', //update me	
	options: {
		encrypt: true,
		database: 'SageX3Cloud1'
	}
}

sql.connect(config, err => { 
    if(err){
        throw err ;
    }
    new sql.Request().query('SELECT * FROM BPCUSTOMER', (err, result) => {
        console.dir(result)
    })
        
});

sql.on('error', err => {
    console.log("SQL Error: " ,err);
})

Ready to get started?

Learn more about CData Connect AI or sign up for free trial access:

Free Trial