This article is relevant if you are considering how you can use NetSuite to manage information that is stored in a remote system.
Background
I am often brought into situations where clients have good technology people who have invented interesting proprietary web based database applications but they want experts to help them implement NetSuite. My team and I are in these conversations all the time. When we discuss getting applications to work with each other, the most common way people integrate system is synchronize the data. However, another pattern may be more valuable.
Since NetSuite is a powerful business platform, it can be used to provision accounts, products and services in remote systems. Here, I illustrate how we have taken NetSuite to provision accounts in our very own proprietary Bitcoin Transaction Coordinator SuiteApp application. We deliberately avoided any user interface on the administrative side of that application because NetSuite is very good at this task. The key to making this work is to present a business interface in NetSuite that looks completely like all other NetSuite elements. The idea is to remove the need to synchronize data and present information real time with no risk for duplication or misinterpretation.
Under this pattern, we need to link up NetSuite to the remote system. If the remote system supports a REST based interface, which is common by today’s integration strategies, you have all you need to drive this solution with minimal need to create custom NetSuite fields and synchronization code.
NetSuite Systems Architecture for Remote System Linking
The pattern, as illustrated in the diagram, is to account for the following:
- BeforeLoad: While your normal NetSuite form, such as a Customer Form, is loading, call out to the Remote System to retrieve the data elements you need. Dynamically draw the elements on the screen using the NetSuite form and field API.
- User Interface: The NetSuite User Interface will work just like it does for all other fields. In this mode, NetSuite will not really care about the fact that some data came natively from NetSuite’s database and your custom information came from a remote system. Hence, any data validation or logic can be implemented via NetSuite client side code.
- AfterSubmit: When you commit your record, the AfterSubmit will still have reference to your custom field values. These will not get saved to NetSuite’s database. But you then have the opportunity to save these values in the remote system.
- With No Remote ID: You can detect that you are in a New Record mode and present blank field information so the user can create a record in the remote system.
- With a Remote ID: You can detect that you are in an Update Record mode, draw what is presently in the remote system, and push new information as required. If desired, you can even support a delete event.