SYSPRO

Provides integration into SYSPRO via E.Net Business Objects.

Revision History

8.0.0.1 - Version supports WCF Load Balancer services.
8.0.0.2 - Improved error messages.
8.0.1.2 - Updated to .NET Framework 4.8 and made sample changes.

Properties

Connection

Type: Connection Input
Identifies the SYSPRO Company and Operator to impersonate. See the Remarks section for further information on configuring E.Net licenses.

WcfServiceUrl

Type: String
When connecting to Syspro using the Wcf Load Balancer services (mandatory as of Syspro V8) you will need to specify the url and port on which your Wcf service is operating.

Operator

Type: String

Password

Type: String

Company

Type: String

CompanyPassword

Type: String

Binding

Type: Dropdown
Specifies how you want to connect to Syspro's WCF services, if you have your WCF service running on basic http then you select BasicHttp for example.

Instance

Type: String
Allows you to specify which instance core you want to connect to.

UseMutex

Type: Boolean
When enabled, ensures that requests do not process concurrently. See Remarks for more information.

SerialisationTimeoutSecs

Type: Int32
The maximum amount of time the Node should allow for a request to run before running the next queued request. Only applies when UseMutex is turned on. 0 causes the Node to wait indefinitely. This setting ensures that queued transactions will be able to process if a processing transaction hangs.

Action

Type: List Input
Specifies the E.Net Action.

Query - Query Class
Post - Post Class
SetupAdd - Add Method for Setup Class
SetupAddUpdate - Performs a SetupAdd followed by a SetupUpdate. This is useful for master data such as customer information but take care in using it as there can be side-effects for certain types of master data.
SetupUpdate Update Method for Setup Class
SetupDelete Delete Method for Setup Class
Build Build Method for Transaction Class
Browse Browse Method for Query Class
Fetch Fetch Method for Query Class
NextKey NextKey Method for Query Class
PreviousKey PreviousKey Method for Query Class

BusinessObject

Type: String Input
The SYSPRO Business Object to be specified for the call. This is typically a 6 character value composed of a short name for the module and a short name for the type of transaction. For Example "APSTIN".

DataXml

Type: Xml Input
An XML representation of the data to be integrated.

ParameterXml

Type: Xml Input
The Parameter XML that governs how the Data XML should be treated.

ResponseXml

Type: Xml Output
The XML response returned by SYSPRO.

CorrectXmlCase

Type: Boolean Input
Certain SYSPRO Business Objects case XML nodes differently in the response. For example, the node SalesOrder in DataXml may be returned as salesorder in the ResponseXml. This inconsistency can be compensated for by setting CorrectXmlCase to true. When true, the casing of the returned XML nodes in ResponseXml will be modified to match corresponding node casing in DataXml.

Remarks

You can obtain detailed business object information from the SYSPRO InfoZone. Although this Node includes schemas and sample data, you may find additional schemas and sample payloads in the SYSPRO install folder (BASE\Schemas). Refer to Node Samples for additional information on using samples.

Connecting to SYSPRO

The Flowgear SYSPRO Connector does not use any of the WebServices that ship with the product (this includes both the legacy SOAP and newer WCF/RESTful services). Instead, install a DropPoint on the application server. This approach eliminates problems associated with firewalling, payload restrictions, timeout restrictions, security account restrictions and registry access restrictions.

Acquiring Licensing

All E.Net calls require the appropriate licensing. Licenses can be requested from SYSPRO or a SYSPRO VAR. The licensed Business objects are defined by modules in the License.Xml file and can be located under the Enet XML node in this file. If this node is not present, no E.Net licenses are present.

To determine exactly which modules need to be licensed, refer to the Business Object Reference Library in the Support Zone. Locate the transaction you would like to perform and then check which module it is grouped into. For example the SORTOI Business Object (Sales Order Import) is listed under the Sales Orders Primary Posting Functional Area. This is the name of the module that must be licensed in order to have the ability to make a SORTOI call.

Configuring Licensing

Once you have obtained a License.Xml file containing the appropriate licensing, import it as normal. In addition, the license needs to be installed for use in E.Net:

SYSPRO E.NET License

  • Click Setup -> Setup Options, then click “Configure e.net license” under the Define menu

  • If you’ve never used e.net before, you need to import your license.xml file here first – click Next and follow the prompts, then go back to the Configure e.net license screen again and choose the “Configure e.net licenses” radio button
  • Click Business Objects and in the screen that comes up, step through each business object you’re going to be using in the tree on the left and tick the operators you want to have access to the business object in the list on the right.

Your Operator

  • Go to Setup/Security/Operators and edit your Operator (this is the Operator you will be using in the Connection property of the SYSPRO Connector)
  • In the e.net tab, ensure that access to relevant areas has been granted
  • Check the operator usage for e.net business objects option – this should be set to Named User

Operator Security Group

  • In SYSPRO, all operators are assigned to a security group. By default, only the Admin group has full rights to e.net. If the operator in question belongs to another group, go to Setup/Security/Groups and edit the group for the operator in question.
  • Click Security Access
  • In the tree on the left, ensure the appropriate permissions have been set for each module. To change a permission, right click the item in the list on the right and choose “Allow” as appropriate
  • Scroll to the bottom of the tree and expand “e.net solutions” which appears right at the bottom of the tree
  • Set the appropriate permissions for Utility, Query, Transaction and Setup per business object

Parsing SYSPRO Response XML

The naming and nesting of the Response XML document is not always consistent as SYSPRO varies it depending on the Business Object, Class (Setup/Query/Post), Method (Add/Update/Delete) and other factors such as whether a transaction is being integrated or validated only.

Take care to test for the appropriate response information when building integrations. Generally it is recommended that a precise XPath Match is used to test for success. If you wish to present general failure information, descriptive failure strings are usually present within Error or ErrorDescription XML nodes in the response.

Handling Simultaneous Requests

It is not recommended that the same session is used to process multiple transactions simultaneously. For this reason, the UseMutex toggle in the Connection is turned on by default and it ensures that only one request can be processed at a time. Any other requests received are queued and processed on a first-in first-out basis.

Note that the Node can only ensure that requests are processed serially (i.e. one at a time) per Node version. In other words, if multiple SYSPRO Node versions are using the same DropPoint to invoke SYSPRO at the same time, you may encounter problems because the Node can only regulate requests that that are made by the same Node version.

To deal with this issue, ensure that all SYSPRO Nodes using the same DropPoint are the same at the same Node version.

If you are encountering cases where a SYSPRO invoke hangs (i.e. never completes), consider setting SerialisationTimeoutSecs to a value greater than zero. This will ensure that enqueued requests are able to execute even if the request at the front of the line is failing to complete.

Troubleshooting

Here are some common error messages and their resolutions.

Unable to open and read operator file (ADMOPR.DAT)

Indicates that the service or user account under which the DropPoint Windows service is running does not have permission to this file.

Ensure that the the user account the service is running under (SYSTEM by default) has read and write permission to the entire SYSPRO folder.

Retrieving the COM class factory for component with CLSID

This happens because the COM object did not register correctly during installation.

Run Command Prompt as Administrator. Type regsvr32 \Encore.dll where is the path to the base directory in Syspro - default is C:\Syspro61\BASE\Encore.dll or C:\Syspro71\BASE\Encore.dll depending on the version of Syspro.

Access denied to Functional Area '

Either the functional area is not enabled for the operator, or the functional area is not purchased.

Refer to the SYSPRO E.NET License section of this article.

XML parsing error 'The root tag '

If you are using RESTHttp in the connection, it can be that the request is too long. Using RESTHttp stuffs the properties in the URL (and does not encode a & correctly) and the URL does have a max length. Consider using NetTcp instead.

The supplied UserID is invalid. Either you were not logged in or your session has expired. You will need to logon again

This issue occurs when multiple requests are sent to SYSPRO using the same session. See Handling Simultaneous Requests for information on how to resolve this.

Examples

See Sample Workflow for examples.