Onboarding ERP Customers with Alloys Installation Manager
ERP systems pose a particular challenge when it comes to integration. The systems are loaded with features, multiple ways to do the same thing, different approval flows, custom objects and fields, and other business logic differences between customers that makes building templated integrations between your app and an ERP challenging and in some cases, not possible.
Traditionally, doing these customized, per-client integrations in house involves:
- Defining mappings with the customer on a call (usually in a spreadsheet)
- Tooling/Setup to input those customizations in the system
- Engineering support for non 1:1 field mappings (ex. "Full Name" --> "first_name" "last_name")
With iPaaS, application developers often have an even greater challenge. iPaaS traditionally have been built to create templates that cater to the "vast majority" of your customer integration use-cases. But what about when there is no "majority" to cater to?
Alloy's installation Manager allows you to securely requisition client credentials, build on their customized data, and launch integrations with per-customer customizations. Let's see how.
Base Workflows
First, determine the conceptual architecture for the integration you want to offer, we'll use an Order Sync as our example
To enable a Full Order Sync, we'll want to
- Fetch historical Orders
- Listen for New and Updated Orders
- Write data back to the ERP (like a tracking number after shipment)
All customers will haver this same high-level data flow, though it's likely with ERP customers they may have Custom Objects, Custom Fields, or require additional logic such as filtering or conditionals that need to be handled during onboarding.
Retrieving/Receiving Data from 3rd parties (Netsuite)
In this example for Fetch Historical Orders, the initial flow has a Stop Workflow
block. Since each Netsuite user has unique Purchase Order fields, we'll want to do that mapping per-customer, so it doesn't make sense to proceed til we've built that out.
Now we release this workflow, and a user installs it
The installation triggers the workflow, and it stops
Customizing Workflows
After the Netsuite user has connected their account. An integration specialist, business analyst, or an onboarding team member should agree on the mappings between Your Application and their Netsuite Purchase Orders. Here's a simple example of how that can look
YourApp | Netsuite |
---|---|
external_order_id | OrderId |
vendor.name | Subsidiary.refName |
vendor.email | Email |
lineItems[*].sku | lines[*].ItemSku |
lineItems[*].product_name | lines[*].Name |
lineItems[*].quantity | lines[*].Quantity |
lineItems[*].unit_cost | lines[*].Rate |
custom_field_1 | cust_Assigned_Procurement_Rep |
custom_field_2 | cust_ShippingPriority |
In practice, you may have more fields than this to map and Ideally you can bake standard fields like OrderId
into the default template, then only add the user-specific customizations in the next step.
Here's an example of how we might pre-map some fields into our destination data structure. This is the default workflow the user installs
We've pre-mapped some of the standard fields like external_id
and email
which are usually standard. lineItems
today are handled separately in a custom code block, and we've left additional fields blank to be filled in with the User Specific mappings you determine with the end user.
Now, let's customize it according to the mappings in the table for the specific user. Find the installation and workflow for the specific user in Installation Manager.
Click into the Initial Sync Workflow
and Create New User-Specific Version
.
Remove the Stop Workflow Block
and fill in the mappings