ml-connector
Oracle NetSuiteServiceNow

Oracle NetSuite and ServiceNow integration

Oracle NetSuite runs your ERP, procurement, and accounting. ServiceNow runs your IT operations and procurement automation. Connecting them keeps purchase orders, vendor invoices, and general ledger postings in sync across both systems. New purchase orders and vendor bills in Oracle NetSuite flow into ServiceNow's procurement and accounts payable modules on a schedule you control, so your operational and financial records stay aligned without manual re-entry.

How Oracle NetSuite works

Oracle NetSuite exposes purchase orders, vendor bills, vendors, GL accounts, departments, and inventory items through SuiteTalk REST Web Services. Authentication uses OAuth 2.0 Client Credentials (recommended) or Token-Based Authentication against the account-specific endpoint at https://<accountId>.suitetalk.api.netsuite.com. Oracle NetSuite supports event subscriptions for push webhooks on sales orders, invoices, and customer records, but vendor bills and purchase orders are reliably read via SuiteQL polling queries. OAuth tokens in Oracle NetSuite are valid for 60 minutes without refresh tokens, so ml-connector refreshes credentials frequently.

How ServiceNow works

ServiceNow exposes procurement, purchase order, invoice, GL account, and cost center records through Table APIs on each customer's isolated instance at https://{instance}.service-now.com. Authentication uses OAuth 2.0 Client Credentials (the recommended machine-to-machine approach) or Basic Auth. ServiceNow offers no native outbound webhook system, so ml-connector polls the Source-to-Pay staging tables using filters on sysparm_query to detect updated records. Accounts payable and procurement modules are licensed add-ons, and every table operation requires the service account to hold appropriate module roles such as sn_apay.apo_user.

What moves between them

Purchase orders, vendor bills, vendors, and GL accounts flow from Oracle NetSuite into ServiceNow on a poll schedule you set, typically aligned with your financial close or procurement cycle. Vendors are written to ServiceNow's supplier tables, purchase orders to proc_po and proc_po_item, and vendor invoices to sn_apo_invoice. GL account codes and cost center mappings are synchronized in both directions so that procurement records land on valid accounts in ServiceNow. Oracle NetSuite general ledger postings can also feed ServiceNow's GL account table for visibility in financial reporting.

How ml-connector handles it

ml-connector stores OAuth credentials for both systems encrypted and refreshes the Oracle NetSuite bearer token every 50 minutes (before expiry). It polls Oracle NetSuite's SuiteQL endpoint for purchase orders, vendor bills, and vendors on your schedule, mapping vendor IDs and GL account codes to the corresponding ServiceNow records. For each record, ml-connector validates that the target GL account and cost center exist in ServiceNow before writing; if a dimension is missing, the record fails with a clear audit entry so you can resolve the mapping. ServiceNow's default OAuth token lifespan is 30 minutes, so ml-connector requests new tokens as needed. Webhook retries in Oracle NetSuite use exponential backoff, and ml-connector tracks job state in Redis so that a failed write to ServiceNow can be replayed after the missing GL account is added. Sandbox accounts in Oracle NetSuite require the _SB suffix in the account ID (for example, 1234567_SB1), and ml-connector detects and routes to the correct endpoint.

A real-world example

A mid-sized procurement-heavy manufacturer runs Oracle NetSuite for ERP, general ledger, and supplier management, and uses ServiceNow for IT operations and procurement automation across four regional offices. Before the integration, purchase orders and invoices entered in Oracle NetSuite had to be manually re-entered into ServiceNow's accounts payable module by the finance team, creating duplicate entry effort and reconciliation mismatches at month-end close. With Oracle NetSuite and ServiceNow connected, every purchase order and vendor invoice flows into ServiceNow automatically on a daily schedule, matched to the correct GL accounts and cost centers per office. The finance team spends no time on re-entry, and the accounts payable aging and spend analysis in ServiceNow stays current with the ERP.

What you can do

  • Sync purchase orders and purchase order line items from Oracle NetSuite to ServiceNow's procurement tables on a schedule you control.
  • Post vendor bills from Oracle NetSuite to ServiceNow accounts payable with GL account and cost center mapping.
  • Keep vendor master records synchronized between Oracle NetSuite and ServiceNow's supplier tables.
  • Handle OAuth 2.0 credential refresh on both sides and manage token lifespan differences between the two systems.
  • Validate GL account codes and cost centers in ServiceNow before writing records, with a full audit trail for mapping mismatches.

Questions

Does ml-connector support vendor bills with multiple GL account lines in Oracle NetSuite?
Yes. ml-connector reads vendor bills from Oracle NetSuite's SuiteQL endpoint, which exposes the full line-level detail including GL accounts, departments, and amounts. Each line is mapped to the corresponding ServiceNow GL account and cost center before the invoice is written to sn_apo_invoice. If a GL account code in Oracle NetSuite does not exist in ServiceNow, ml-connector records the mismatch in the audit log so you can add the missing account.
How does ml-connector handle the token lifespan difference between Oracle NetSuite (60 minutes) and ServiceNow (30 minutes)?
ml-connector refreshes Oracle NetSuite OAuth tokens every 50 minutes to stay ahead of expiry, and it requests new ServiceNow tokens with each poll cycle, effectively staying within the 30-minute window. If a ServiceNow call returns 401, ml-connector immediately refreshes the token and retries, so a token expiry does not cause a failed record write.
Can ml-connector write general ledger postings from Oracle NetSuite into ServiceNow's GL account table?
Yes. Oracle NetSuite GL postings are read via SuiteQL and can be synced to ServiceNow's itfm_gl_accounts table or a custom GL posting staging table for visibility in ServiceNow's financial reporting. Postings are read-only in ServiceNow, so ml-connector does not write modifications back to Oracle NetSuite.

Related integrations

Connect Oracle NetSuite and ServiceNow

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started