The Salesforce-Acumatica quickstart template comprises a set of pre-built integration flows. These flows help you to sync information of accounts, contacts, sales orders, customers, financials, opportunities, currency exchange rates, service contracts, products, and shipments between Salesforce and Acumatica.
Important: Before you run the below integration flow, be sure that the Salesforce package is installed.
Understand and configure the integration flows
Acumatica sales order to Salesforce opportunities (add)
The flow syncs the new sales orders and their customers from Acumatica to Salesforce opportunity.
Important: The Acumatica items and Salesforce products must be in sync.
-
Built-in export:
- Get Acumatica sales orders
- Get Acumatica customers
-
Built-in import:
- Import Salesforce accounts
- Import Salesforce opportunities
- Import Salesforce opportunities product
- Update Acumatica sales order
Configure the following as per your business needs, before you run the flow:
-
In the Import Salesforce opportunities import, configure the following mapping:
Source record field Salesforce field “Closed Won” Stage -
In the Import Salesforce accounts import, configure the following mapping:
Source record field Salesforce field “Yes” Active -
In the Import Salesforce opportunities product import, configure a dynamic mapping for Price Book Entry ID to fetch the Salesforce price book entry ID by using the Acumatica Inventory ID as a lookup identifier.
-
- After you configure the below mapping, click Settings next to the mapping.
- In the Field Mapping Type field, choose Lookup.
- In the Options field, choose Dynamic: Salesforce Search.
-
In the SObject Type drop-down menu, choose Price Book Entry.
- Acumatica_Item_ID = InventoryID.value
- Where Clause is (Acumatica_Item_ID_c = {{{string InventoryID.value}}})
-
In the Result Field drop-down menu, choose Price Book Entry ID.
Source record field Salesforce field InventoryID.value Price Book Entry ID
-
- On the Import Salesforce Accounts: Check the Ignore Existing Records check box, and define the clause for finding the existing records as (Acumatica_Customer_ID__c = {{{string CustomerID.value}}})
Acumatica customers to Salesforce accounts (add or update)
The flow syncs the new customers created in Acumatica to Salesforce accounts. When an existing customer is updated in Acumatica, the flow syncs the updated information to the Salesforce account. If this flow is enabled, it runs in sequence with the Acumatica sales orders to Salesforce opportunity (add) flow.
- Built-in export: Get Acumatica customers
- Built-in import: Import Salesforce accounts
Configure the following as per your business needs, before you run the flow:
-
Change the Acumatica customer ID length:
- In Acumatica, in the global search box, enter “Segment Keys”
- Select BIZACCT as the segment key ID.
- Find the length on that page and change the value to 20.
- In Salesforce, in the account record, create a custom field of type text to store the Acumatica customer ID.
- In the Import Salesforce accounts import, configure the following mapping:
Source record field Salesforce field “Yes” Active -
In the Acumatica customers to Salesforce accounts (add or update) flow’s field mappings, in the import (Import Salesforce accounts), configure the following mapping with lookup criteria as Acumatica_Customer_ID = CustomerID.value.
Source record field
Salesforce field
CustomerID.value
Acumatica_Customer_ID
- On the import (Import Salesforce accounts) side, define the clause as Acumatica_Customer_ID__c = {{{string CustomerID.value}}}).
Acumatica contacts to Salesforce contacts (add or update)
The flow syncs new contacts from Acumatica to Salesforce contacts. When an existing contact is updated in Acumatica, the flow syncs the updated information to the Salesforce contact.
- Built-in export: Get Acumatica contacts
- Built-in import: Import Salesforce contacts
Configure the following as per your business needs, before you run the flow:
-
In the Acumatica contacts to Salesforce contacts (add or update) flow’s field mappings, in the import (Import Salesforce contacts), configure the following mapping with lookup criteria as Acumatica_Contact_ID = ContactID.value.
Source record field
Salesforce field
ContactID.value
Acumatica_Contact_ID
- On the import (Import Salesforce contacts) side, define the clause expression as (Acumatica_Contact_ID__c = {{{string ContactID.value}}})
Acumatica items to Salesforce products (add or update) (excludes item groups)
The flow syncs new items from Acumatica as Salesforce products. When an existing item is updated in Acumatica, the flow syncs the updated information to the Salesforce product.
Important: The supported item types in Acumatica are non-stock items and stock items.
-
Built-in export:
- Get Acumatica stock items
- Get Acumatica non-stock items
-
Built-in import:
- Import Salesforce products
- Import Salesforce product standard price
- Update Salesforce product standard price
Configure the following as per your business needs, before you run the flow:
-
In the Import Salesforce products import, configure the following mapping:
Source record field
Salesforce field
“USD”
Currency ISO Code
“true”
Active
- In the Import Salesforce product standard price import, configure the following mappings:
Source record field
Salesforce field
“USD”
Currency ISO Code
“01s5A000004lkJC”
Price Book ID
“true”
Active
- In the Update Salesforce product standard price import, configure the following mapping:
Source record field
Salesforce field
“true”
Active
- For the three imports (Import Salesforce products, Import Salesforce product standard price, and Update Salesforce product standard price), define the clause expression as (Acumatica_Item_ID__c = {{{string InventoryID.value}}})
Acumatica item groups to Salesforce products (add or update)
The flow syncs new item groups from Acumatica to Salesforce products. When an existing item group is updated in Acumatica, the flow syncs the updated information to the Salesforce product.
-
Built-in export:
- Get Acumatica item groups
- Get Acumatica item groups(Sales price worksheet) by ID
-
Built-in import:
- Import Salesforce products
- Import Salesforce product standard price
- Update Salesforce product standard price
Configure the following as per your business needs, before you run the flow:
-
In the Import Salesforce products import, configure the following mappings:
Source record field
Salesforce field
“USD”
Currency ISO Code
“true”
Active
-
In the Import Salesforce product standard price import, configure the following mappings:
Source record field
Salesforce field
“USD”
Currency ISO Code
“01s5A000004lkJC”
Price Book ID
“true”
Active
-
In the Update Salesforce product standard price import, configure the following mappings:
Source record field
Salesforce field
“true”
Active
- For the three imports (Import Salesforce products, Import Salesforce product standard price, and Update Salesforce product standard price), define the clause expression as Acumatica_SalesPriceWorksheet_ID__c = {{{string ReferenceNbr.value}}})
Acumatica shipments to Salesforce item fulfillment (add) (custom record) (real-time flow)
The flow syncs new shipments from Acumatica as an item fulfillment custom record in Salesforce.
Create Acumatica webhook
- Log in to your Acumatica account.
-
In Acumatica, in the global search enter Push Notifications. From the search results, click on the Push Notifications link.
Note: On the Customization Projects page, be sure to create the appropriate projects before you proceed further. - In the System tab, click Integration.
- In the navigation pane, navigate to Configure > Push Notifications.
- In the Destination Name field, enter the target notification destination name, it can be the name of your external application.
- In the Destination menu, select Webhook.
- In the Address field, type the HTTP address to which Acumatica ERP should send the push notifications, such as http://localhost:80/main.
-
For each generic inquiry for which you want Acumatica ERP to send notifications on changes in the inquiry results, do the following:
- On the table toolbar of the Generic Inquiries tab, click Add Row. The new row has the Active box checked.
- In the Inquiry Title column of the added row, select the generic inquiry for which you want Acumatica ERP to send notifications.
-
For each built-in definition for which you want Acumatica ERP to send notifications on changes in the results, do the following:
- On the table toolbar of the Built-In Definitions tab, click Add Row. The new row has the Active check box selected.
- In the Class Name column of the added row, select the class that defines the data query for which you want Acumatica ERP to send notifications.
- On the form toolbar, click Save.
Be sure that,
- The Salesforce accounts and Acumatica customers are in sync. The customer ID of Acumatica must be stored on the respective Salesforce account.
- The Salesforce opportunities and Acumatica sales orders are in sync. The Acumatica sales order number must be stored on the respective Salesforce opportunity.
Built-in export:
- Get Acumatica shipments
- Get Acumatica sales order by order number
Built-in import:
- Import Salesforce item fulfillments
- Import Salesforce item fulfillment lines
Configure the following as per your business needs, before you run the flow:
-
In the Import Salesforce item fulfillments import, configure a static mapping:
Source Record Field
Salesforce Field
AcumaticaOrders.Status.value
Status
- Next to the mapping, click Settings.
- In the Options field, choose Static: Value to Value.
-
Define the values as:
Export Field (Webhook)
Import Field (Salesforce)
Shipping
Draft
-
In the Import Salesforce item fulfillments import, configure the following dynamic mappings:
Source Record Field
Salesforce Field
Account
Order Name
Product Name
-
In the Import Salesforce item fulfillment lines import, configure the following dynamic mappings:
Source Record Field
Salesforce Field
Name
-
For Account:
- After you configure the above mapping, click Settings next to the mapping.
- In the Options field, choose Dynamic: Salesforce Search.
-
In the SObject Type drop-down menu, choose Account.
- Acumatica_Customer_ID = AcumaticaOrders.Custom
- where Clause is (Acumatica_Customer_ID_c = {{{string AcumaticaOrders.CustomerID.value}}})
- In the Result Field drop-down menu, choose Account ID.
- For Order Name:
- After you configure the above mapping, click Settings next to the mapping.
- In the Options field, choose Dynamic: Salesforce Search.
-
In the SObject Type drop-down menu, choose Order.
- Acumatica Order ID = OrderNbr
- where Clause is (Acumatica_Order_ID_c = {{{string OrderNbr}}})
- In the Result Field drop-down menu, choose Order ID.
-
For Product
- After you configure the above mapping, click Settings next to the mapping.
- In the Options field, choose Dynamic: Salesforce Search.
-
In the SObject Type drop-down menu, choose Product.
- Acumatica_Item_ID = AcumaticaOrder.Details.0
- Where Clause is (Acumatica_Item_ID_c = {{{string AcumaticaOrder.Details.0.InventoryID.value}}}
- In the Result Field drop-down menu, choose Product ID.
-
For Account:
- Create an additional lookup on the export (Get Acumatica salesorder by ordernumber) side. Get a Sales order by OrderType and OrderNumber.
- On the import (Import Salesforce itemfulfillments) side, define the clause expression to find the existing records as (Name = {{{string ShipmentNbr}}})
- On the import ( Import Salesforce itemfulfillment lines) side, define the clause expression to find the existing records as (Acumatica_Item_Fulfillments__c = {{{reference SFitemfulfillmentID}}})
Acumatica financials to Salesforce financials (add or update)
When a new invoice, credit memo, cash sale. cash return, payment, or customer refund is created in Acumatica, the flow syncs the financials from Acumatica to Salesforce.
Note: Acumatica does not support customer deposit transactions.
Be sure that,
- The Salesforce accounts and Acumatica customers are in sync. The customer ID of Acumatica must be stored on the respective Salesforce account.
- The Salesforce opportunities and Acumatica sales orders are in sync. The Acumatica sales order number must be stored on the respective Salesforce opportunity.
Built-in export:
- Get Acumatica SalesInvoices
- Get Acumatica payments
- Get Acumatica invoices by ReferenceNbr value
- Get Acumatica Cash sales by ReferenceNbr value
- Get Acumatica cash return by ReferenceNbr value
- Get Acumatica credit memo by ReferenceNbr value
- Get Acumatica payment by id
Built-in import:
- Import Salesforce financials
Configure the following as per your business needs, before you run the flow:
-
Configure a dynamic mapping for Account and Opportunity:
Source record field
Salesforce field
Account
Opportunity
-
For Account:
- After you configure the above mapping, click Settings next to the mapping.
- In the Options field, choose Dynamic: Salesforce Search.
-
In the SObject Type drop-down menu, choose Account.
- Acumatica_Customer_ID = financial.CustomerId
- Where Clause is (Acumatica_Customer_ID_c = {{{string financial.CustomerId}}})
- In the Result Field drop-down menu, choose Account ID.
-
For Opportunity
- After you configure the above mapping, click Settings next to the mapping.
- In the Options field, choose Dynamic: Salesforce Search.
-
In the SObject Type drop-down menu, choose Opportunity.
- Acumatica Order Id = financial.OrderNumber
- Where Clause is (Acumatica_Order_ID_c = {{{string financial.OrderNumber}}})
- In the Result Field drop-down menu, choose Name.
-
For Account:
- On the export (Get Acumatica payments) side, configure the search parameters to Select ReferenceNbr, Type, Status of a payment.
- On the export (Get Acumatica payment by id) side, create an additional lookup to get the sales order by PaymentType and ReferenceNumber.
- On the import (Import Salesforce financials) side, define the clause expression to define the existing records as (Name = {{{string financial.[Reference Number]}}}).
Acumatica currency rates to Salesforce currency exchange rates (add or update)
The flow syncs the new currency rates from Acumatica as Salesforce currency exchange rates. When an existing currency rate is updated in Acumatica, the flow syncs the updated information to the Salesforce currency exchange rates.
Important: This is a custom integration flow and is available only upon request (not installed with the template).
- Create a custom Acumatica endpoint connection.
- Before installing an integration with this flow, you must set up the Acumatica custom record bundle, as described in Install the bundle containing custom Acumatica endpoint fields.
- Be sure the currencies Acumatica and Salesforce match.
Built-in export: Get Acumatica currency rates
Built-in import: Import Salesforce currency exchange rates
Configure the following as per your business needs, before you run the flow:
-
A static mapping:
Source record field
Salesforce field
ToCurrency.value
Currency ISO Code
-
For Currency ISO Code
- Next to the mapping, click Settings.
- In the Options field, choose Static: Value to Value.
-
Define the values as:
Export Field (HTTP)
Import Field (Salesforce)
CAD
Canadian Dollar
INR
Indian Rupee
SGD
Singapore Dollar
USD
U.S. Dollar
- On the import (Import Salesforce currency exchange rates) side, define the clause expression to find the existing records as (Name = {{{string CuryRateID.value}}})
Acumatica service contracts to Salesforce contracts (add or update)
The flow syncs the new service contracts from Acumatica as Salesforce contracts. When an existing service contract is updated in Acumatica, the flow syncs the updated information to the Salesforce contracts.
Important: This is a custom integration flow and is available only upon request (not installed with the template).
Before you run the flow,
- Create a custom Acumatica endpoint connection.
- Before installing an integration with this flow, you must set up the Acumatica custom record bundle, as described in Install the bundle containing custom Acumatica endpoint fields.
Built-in export:
- Get Acumatica Service Contracts
- Get Acumatica customer by id
Built-in import:
- Import Salesforce contracts
Configure the following as per your business needs, before you run the flow:
-
A dynamic mapping:
Source record field
Salesforce field
Account ID
- After you configure the above mapping, click Settings next to the mapping.
- In the Options field, choose Dynamic: Salesforce Search.
-
In the SObject Type drop-down menu, choose Account.
- Acumatica Name = Customer.value
- Where Clause is (Name = {{{string Customer.value}}})
- In the Result Field drop-down menu, choose Account ID.
-
Static mappings:
Source record field
Salesforce field
AcumaticaCustomers[0].CurrencyID.value
Currency ISO Code
Status.value
Status
-
For Currency ISO Code
- Next to the mapping, click Settings.
- In the Options field, choose Static: Value to Value.
-
Define the values as:
Export Field (HTTP)
Import Field (Salesforce)
USD
U.S. Dollar
-
For Status
- Next to the mapping, click Settings.
- In the Options field, choose Static: Value to Value.
-
Define the values as:
Export Field (HTTP)
Import Field (Salesforce)
Draft
Draft
Active
Draft
- On the import (Import Salesforce contracts) side, define the clause expression to find the existing records as (Acumatica_Service_Contract__c = {{{textarea ServiceContractID.value}}})
Salesforce accounts to Acumatica customers (add or update)
The flow syncs the new customers created in Salesforce accounts as Acumatica customers. When an existing customer is updated in Salesforce, the flow syncs the updated information to the Acumatica customer record. If this flow is enabled, it runs in sequence with the Salesforce opportunity to Acumatica sales order (add) flow.
- Built-in export: Get Salesforce accounts
- Built-in import: Import Acumatica customers
The quickstart integration template has Salesforce import with lookup expression as (Id = {{{id Id}}})
Configure the following as per your business needs, before you run the flow:
-
Mappings:
Source record field
Acumatica field
“false”
ShippingAddressSameAsMain.value
“true”
BillingAddressSameAsMain.value
“Active”
Status.value
“LOCAL”
CustomerClass.value
“EOM”
StatementCycleID.value
-
Static Mapping:
Source record field
Acumatica field
ShippingCountry
ShippingContact.Address.Country.value
BillingCountry
MainContact.Address.Country.value
-
In the Acumatica customers to Salesforce accounts (add or update) flow’s field mappings, in the import (Import Salesforce accounts), configure the following mapping with lookup criteria as Acumatica_Customer_ID = CustomerID.value.
Source record field
Salesforce field
Id
Acumatica_Customer_ID
Salesforce contacts to Acumatica contacts (add or update)
The flow syncs new contacts from Salesforce to Acumatica contacts. When an existing contact is updated in Salesforce, the flow syncs the updated information to the Acumatica contact.
- Built-in export: Get Salesforce contacts
- Built-in import: Import Acumatica contacts
Configure the following as per your business needs, before you run the flow:
-
Create a static mapping for Address.Country.value as:
Source record field
Acumatica field
MailingCountry
Address.Country.value
-
Configure dynamic mapping for ContactID.value as follows:
- After you configure the below mapping, click Settings next to the mapping.
- In the Field Mapping Type field, choose Lookup.
- In the Options field, choose Dynamic: Search.
- Define the Relative URI.
- In the HTTP Method drop-down menu, choose GET.
- In the Resource Identifier Path field, enter ContactID.value.
Salesforce orders to Acumatica sales order (add) (real-time flow)
When a new order is created in Salesforce and if this flow is enabled, it auto-triggers and syncs the Salesforce order as Acumatica sales order. This is a real-time flow.
Be sure:
- The Acumatica items and Salesforce products must be in sync.
- The Salesforce accounts and Acumatica customers must be in sync.
Built-in export:
- Get Salesforce orders
- Get Salesforce Orders items
Built-in import:
- Import Acumatica customers
- Update Salesforce accounts
- Import Acumatica Sales Order
- Update Salesforce orders
Configure the following as per your business needs, before you run the flow:
-
In the Import Acumatica customers import, configure the following mappings:
Source Record Field
Acumatica Field
“false”
ShippingAddressSameAsMain.value
“true”
BillingAddressSameAsMain.value
“Active”
Status.value
“LOCAL”
CustomerClass.value
“EOM”
StatementCycleID.value
Site
MainContact.Email.value
-
In the Import Acumatica Sales Order import, configure the following mappings:
Source Record Field
Acumatica Field
“SO”
OrderType.value
“true”
BillToAddressOverride.value
“true”
BillToContactOverride.value
“true”
ShipToAddressOverride.value
“true”
ShipToContactOverride.value
“CAPITAL”
Details[*].Branch.value
“RETAIL”
Details[*].WarehouseID.value
-
In the Import Acumatica customers import, configure the following static mappings:
Source Record Field
Acumatica Field
ShippingCountry
ShippingContact.Address.Country.value
BillingCountry
MainContact.Address.Country.value
- On the import (Update Salesforce accounts and Update Salesforce orders) side, define the clause expression as (Id = {{{id Account.Id}}})
Salesforce opportunity to Acumatica sales order (add)
The flow syncs new opportunities from Salesforce to Acumatica sales order.
-
Built-in export:
- Get Salesforce opportunities
-
Built-in import:
- Import Acumatica customers
- Update Salesforce accounts
- Import Acumatica sales order
Be sure:
- The Salesforce line items product code and Acumatica inventory ID must match.
- Enable Discount field on Salesforce opportunity product record.
Configure the following as per your business needs, before you run the flow:
-
In the Import Acumatica customers import, configure the following mappings:
Source Record Field
Acumatica Field
“true”
BillingAddressSameAsMain.value
“false”
ShippingAddressSameAsMain.value
“Active”
Status.value
“LOCAL”
CustomerClass.value
“EOM”
StatementCycleID.value
- In the Import Acumatica customers import, configure the following static mappings:
Source Record Field
Acumatica Field
Account.BillingCountry
MainContact.Address.Country.value
Account.ShippingCountry
ShippingContact.Address.Country.value
-
In the Import Acumatica sales order, configure the following mapping:
Source Record Field
Acumatica Field
“SO”
OrderType.value
- On the import (Update Salesforce accounts) side, define the clause expression as (Id = {{{id Account.Name}}})
Run your flow
You need to enable the flow for it to run and perform the sync between your apps.
- From your integrator.io home page, click the Salesforce-Acumatica integration tile.
- In the Flows section, enable the On/Off toggle button next to the flow.
- On the confirmation window, click Yes.
- Click Run next to the appropriate flow.
Comments
Please sign in to leave a comment.