My client is looking to integrate Netsuite with Ignition. The problem is Netsuite came out with a REST api in March 2020, so most of the endpoints are in Beta. I will not use non-stable endpoints for this integration for obvious reasons.
The other alternative for integration is to use Netsuite’s SOAP features. I’ve spent about 10 hours so far just trying to understand WSDL and SOAP and I can’t even get a simple feature working (for instance, to read a value from a Bin). There is virtually no documentation / examples of working integrations with Python and few examples on how to accomplish relatively simple tasks. I come from a REST background.
Is it worth spending the time to integrate Ignition with Netsuite using SOAP? I will need to do many reads and writes to Netsuite, including bulk operations. I read online that SOAP integrations are inefficient and inconsistent (based on some forums I’ve read). What has been your experience working with SOAP / Ignition integrations?
SOAP has its place, but certainly if you have the option for REST, even in Beta, I would go for it.
If you do want to try the SOAP route, I have used the suds python library in Ignition. Super simple and gets the job done, but I always struggled with more complex objects.
If you have a lot of integrations, you may want to check out the Sepasoft Web Connector module. It wraps a GUI around your API calls and makes dealing with SOAP much easier, but its quite expensive for just a few API calls, we could never justify the cost and it was very buggy with our MES SOAP API, so never went that route.
Do you know what performance is like for SOAP requests? I read on a forum post that there is no way to really retrieve all records for a table, the workaround is to pass a null value for the table ID and then parse the results page by page.
Can you explain why you would use a Beta version of a REST api? The problem with not having a stable version yet is that the endpoint can be completely rewritten and I would have to redo the work I already did. Once a stable release is available, usually the new versions don’t replace the old api endpoint, so I wouldn’t need to babysit the integration; eg. the old api endpoint might be https://netsuite.com/api/v1/... and a new version might be https://netsuite.com/api/v2/..., where the new version doesn’t break the old one. Also, the fact that Netsuite came out with REST endpoints less than a year ago tells me that there will probably be changes to the API endpoints. That was my thought process when I said I don’t want to use Beta.
I’m using SUDS, but I am aware of the fact that is hasn’t been updated for quite some time.
My $.02 is that you should not.
I had significant performance/memory leak issues using SUDS in Jython 2.5. The easiest solution for us at the time was using the Sepasoft web services module, as the plant production was dependent on the app in question.
I cannot say whether Jython 2.7 would have the same issues with hanging connections when using the SUDS library. It may be fixed, but the SUDS library is still unmaintained, regardless. IMO, even if it works for you, you may be buying yourself a maintenance nightmare.
Ignition has a robust support for integration with third party apps thru REST api’s using the scripts, hence the REST approach should be preferred. Your decision is more dependent on your confidence with what Netsuite offers for integration.