This article is relevant if you are looking to produce integrations with NetSuite to remote systems using technologies such as HTTP Rest or sFTP.
Background
In early 2019, Oracle changed its policies to offer add-on technologies that extend the NetSuite platform. These technologies were crafted by the SuiteSolutions practice group within the Oracle NetSuite organization. As such, a number of new software technologies are now available to the NetSuite community which opens up the capacity to solve more business challenges. This article is about NetSuite’s SuiteAdapter.
Since my firm Prolecto Resources is a NetSuite Systems Integrator, we take great interest in understanding all the powerful “out-of-the-box” potential available at our command. In our quest to solve our clients’ business systems challenges, we first leverage everything at hand — and then we invent where we need to. Thus, the slew of now available SuiteSoutions bundle offerings represents a significant opportunity to more rapidly solve our clients’ concerns. We have previously written about our evaluation of these bundles. Readers may be interested in these related SuiteSolution evaluation articles:
- Learn and Assess the Value of NetSuite’s CSV Integrator Add-On Bundle
- Understand NetSuite Allocation Methods and Explore Shared Vendor Bills
- Assess Your Options with a Review of NetSuite’s Credit Card Reauthorization Bundle
- Understand and Contrast NetSuite Vendor Prepayment Options
- Sort Out NetSuite’s Options for Approval Workflows
Accordingly, in this article, I asked Boris M., aka Borko, a technical consultant on our team, to evaluate the SuiteSolutions SuiteAdapter bundle to make assessments of the inner-workings. Once Borko configured the software to work against various test scenarios, I was able to interview Borko to learn about the software. Thus, this article is a first glance overview based on my interpretations of Borko’s work. I recommend anyone that reads this article ground their own interpretations.
Integration Framework Considerations
As a NetSuite Systems Integrator, my firm has developed an array of software libraries (some samples are here). As I work with the team to create applications and tools, we often need to take care of basic application concerns, such as configuration constants, hook points from business records, file storage pointers, and user and/or role authentication. It was good to evaluate NetSuite’s SuiteAdapter as it represents another viewpoint on how to tackle the mechanics for fundamental application integration. In my mind, this framework is designed to help the NetSuite Administrator get a level of control over integration technologies without having to revert to program scripting and workflows.
NetSuite SuiteAdapter Evaluation
Borko evaluated NetSuite’s SuiteAdapter version 1.2. The bundle ID is 161223. After installing the bundle, he configured a number of profiles to help assess how the software works. The software is provided with an administrator guide. I reviewed the guide and I assess it is well written and easy to follow. Borko did find that there are a few documentation omissions as he was trying to configure the software; he was able to inspect the code behind the structure to understand better how the configuration works and ultimately get confirmation to execute properly.
General Architecture
I created a diagram to help conceptualize the software stack. As such, I will outline how I interpret the elements and offer thinking in contrast to my experience and the many tools my firm has created in the last 10+ years. These contrasts may be helpful in your evaluation.
- Configuration Profile: The application is designed around a configuration profile record designed to hold all the constants and pointers to drive related and supporting scripts. Each configuration profile is designed to support a single purpose. For example, if you want to transmit the results of a saved search to a remote sFTP server, you would define that in a configuration record. If you have a second saved search to send information, that would be yet another configuration profile.
- HTTPs / sFTP Managers: the application supports two transport layers. The HTTP transport layer is designed to post JSON information to a web endpoint (often referred to as REST services). The application is also designed to collect or send file-based information from a saved search to a remote sFTP server. Note sFTP and FTP servers are not the same and they are not compatible.
- Data Transformations: the framework offers a mechanism to take matching elements of information and transform them into other information using the FreeMarker template technology — the same technology that is used in NetSuite’s Advanced PDF generator.
- Response Logs: logs of remote communications responses help administrators diagnose connections and review the information exchange.
- Work Queue: for integration work that is to be scheduled, the work queue stores requests for subsequent remote calls. With a queue, retry logic becomes available should the remote service be down for maintenance.
- Scripting Services: a set of SuiteScripts are provided to allow Administrators to hook to business records or to schedule integration work. These scripts do the real work and demand configuration before the framework becomes active and useful. A NetSuite administrator with a development background should be comfortable with these concepts when defining the integration.
- File Cabinet: the file cabinet is used to store payloads between remote systems and NetSuite.
- Email Notifications: the framework can be used to produce email-based file transmission or notifications that may be important to interested parties.
Server or Client Mode
The framework can operate in two major models:
- REST Server Mode: the system provides a way to expose NetSuite hosted REST services. In the framework’s ‘Get’ mode, the remote system can call NetSuite to retrieve the results of a saved search. In the ‘Set’ mode, the remote system can create or update business records. Note, NetSuite independently provides a SOAP-based web services tier that does this well — although the learning curve to become productive is high. Finally, NetSuite is soon to support a REST Web Services tier (in beta at the time of this writing) which will become a published API.
- Client Mode: the majority of the application is designed around having NetSuite act as a client to a remote system. In this case, the two transport layers is HTTP(s) and sFTP as destination points.
Script Execution Methods
The framework supports three different execution modes. This gives the administrator control over the way the integration behaves:
- Real-time (synchronous): triggered during a business record update, information can be exchanged with a remote system. In general, I would be cautious about using this approach because of the user experience for performance and other issues when the remote system is offline.
- Near Real-time (asynchronous): I favor a mechanism that allows for the business record to commit but then the integration work is queued. In this manner, the user has a quality experience while the actual integration work happens later. This system uses the Work Queue discussed above.
- Scheduled/Batch: instead of a business record being updated to trigger integration work, a scheduled script can produce batched integration work. This mode is designed to run a saved search, package results, and transmit to the remote site.
Authentication Methods
The application supports three different authentication methods. In each authenticated method, NetSuite provides a utility to create user names and passwords in a secure manner by encrypting and storing that data in the NetSuite database. The application then securely decrypts credentials during execution. Here are the methods:
- Basic HTTP: used for an older means of connecting to remote HTTP servers.
- sFTP: used to connect with sFTP servers via user name/password or via a host key.
- Unauthenticated: this method is used when you want to use some type of API key that is typically passed as part of HTTP headers. I suspect this one will be tricky to set up and is likely the more common approach used these days to connect to remote APIs.
NetSuite SuiteAdapter Assessment
In reviewing the framework, I was able to make assessments relative to the free tools that we provide to our clients and our years of experience. In general, I think the framework is an opportunity for a NetSuite account that does not have any other integration tools at their disposal. The tools may be challenging to learn for a less experienced administrator. I believe that there is a good chance that the administrator will need to review the inner workings of script definitions and likely will need to modify code to get the results they need. At the same time, I think the bundle provides an excellent toolkit for a new programmer to learn various patterns for producing SuiteScript.
sFTP File Methods
The sFTP method, in this version, has a significant weakness in that it needs to know ahead of time the name of the file that it wants to fetch. Many times, the integration pattern is to retrieve a full directory of files without knowing their filename. NetSuite has announced that their sFTP SuiteScript library is being enhanced and in due course, I suspect this limitation will be overcome. We solve all the sFTP / FTP challenges (including connecting to Amazon Web Services (AWS) or any remote store) in an integration service. Please see my article, Link NetSuite to FTP via Open Source Middleware
Saved Search Mechanism
I like the Saved Search tool. But too often, we found that Saved Search can’t reach all the data needed in one query. We have solved linking multiple saved searches together with our Content Renderer Engine (CRE) and thus we use it to instead create a profile-driven data universe that can be tailored to deliver exactly the data that is needed.
REST Business Templates
Like the Server mode offered here, we can supply a whole framework of REST interfaces with complex patterns to produce common but challenging eCommerce and third-party warehouse integrations. See my article, Accelerate your NetSuite REST Development with Pre-Defined Business Templates. In particular, we provide a rich saved search mechanism that supports data paging and page-size which we found missing in the SuiteAdpater framework.
Keys and Certificates
NetSuite is preparing for better Key and Certificate management. The trend in the general market place is for more token-based authentication and API level keys. It would make sense to see this framework use NetSuite’s own key managers and I look forward to that part of the platform to be more open.
CSV Import Challenges
SuiteAdapter has a mechanism to automatically generate a CSV import for the data it retrieved remotely and which was subsequently stored on the NetSuite file system. We found that the basics of CSV import works reasonably well. However, we built a tool called the Record Import Export Manager (RIEM) which can transform data in any format and target many tables at once while providing a full table-driven job control to monitor import status. We even can target all the records that are not supported by CSV import — such as item fulfillments.
Software Adaptation
Per the provided documentation, the software footprint is open which allows you to modify to make it fit your unique situation. Naturally, when you modify the software, be careful when upgrading as your version will be different from NetSuite’s. Generally, we recommend making adaptations in a copy of a provided script file so your changes will not be clobbered in a future bundle upgrade.
Conclusion
Finally, I would like to thank Borko for making the investment to learn the software — like all the things we do in our firm, we strive to use the best of what NetSuite has to offer and choose the best tool for our clients’ specific situation. We intend to use this framework for more simple integration requirements when we can.
If you found this article valuable, subscribe to get email notifications of future articles. If you would like assistance with your NetSuite integration, let’s have a conversation.
Unfortunately, it seems like NetSuite has made an about-face and is no longer offering SuiteSolutions for free 🙁
Hello Michael,
Yes, indeed, it does look like the policies have changed. It does though look like some are still available if you review Suite Answer Id: 49490
Marty