Business objects are SYSPRO programs that do not have a graphical user interface. Their architecture is designed to accept input via XML and send output via XML. They are typically used by developers (internal and external) as building blocks for constructing solutions around SYSPRO.
Unlike traditional SYSPRO programs that require operator input at various stages of processing, business objects require all the necessary information before it can start processing and there is no operator input during processing. For this reason, business objects tend to be subsets of a SYSPRO program with a very specific function (i.e. they do not necessarily match the functionality of a standard SYSPRO program).
Business objects tend to be subsets of a SYSPRO program with a very specific function. For example: The Inventory Movement program comprises 11 primary functions which equate to nine separate business objects. Business object functionality also does not necessarily match the functionality of a standard SYSPRO program.
Business objects reside in the \Programs folder of your SYSPRO installation. The naming convention for business objects is similar to SYSPRO programs - six characters long, where the first three characters refer to the module and the fourth character specifies the type of business object (e.g. Query, Setup, Transaction or Build).
Some business objects contain multiple methods (e.g. the Setup classes each contain an Add, Update and Delete method) whereas others only contain one (e.g. the Transaction class has one business object for the Build method and a separate one for the Post method).
Business objects use the same security model as the core SYSPRO product. For this reason you do not need to build security into your solution. If an operator is restricted from seeing specific information within SYSPRO (e.g. costs, access to a specific warehouse, bank account details, etc.) then the XML returned by the business object will exclude this information.
The security configuration is handled from within SYSPRO and configured against the operator code, operator group, or role. You can further fine-tune these requirements using additional e.net options against the operator Activities, Electronic Signatures, Events and Triggers.
Within the Operator Groups program, the Security Access pane includes four e.net Solutions areas that you can specifically target to restrict operator access to business objects (unless the operator belongs to a group with administrator rights):
Module e.net Solutions - Query
Module e.net Solutions - Setup
Module e.net Solutions - Transaction
Module e.net Solutions - Utility
Business object entries are listed within each section and you can restrict access by ticking the relevant checkbox in the Access allowed column.
Within the Operator Maintenance program, the Activities function enables you to configure the level of access an operator has to activities within SYSPRO ( -> -> -> ). Activities specific to e.net are indicated within the e.net specific activity column.
List of e.net specific Activities |
---|
AP Posting to previous period |
AR Customer placed on hold |
AR Customer released from hold |
AR Deletion of customers |
AR Posting a payment in Payments and Adjustments |
AR Posting an adjustment in Payments and Adjustments |
AR Posting to previous period |
AR Re-establishing of invoices |
CB Posting to previous period |
CMS Add attendees for existing activities |
CMS Delete attendees for existing activities |
CMS Maintain list of attachments for existing activities |
Inv Override on inventory cost variance |
Inv Posting to previous period |
Product Configurator Library maintenance |
Product Configurator Override stocked parent list price |
PO Allow change to purchase order details in LCT |
PO Maintenance of printed purchase orders |
PO Manual entry of cost when receipting purchase orders |
PO Override lot expiry date calculated from shelf life |
PO Override on early/late supply of purchase orders |
PO Override on over receipt from inspection into stock |
PO Override on over supply of purchase orders |
PO Override on under receipt from inspection into stock |
PO Override on under supply of purchase orders |
PO Receipt into stock using zero purchase orders price |
PO Req originator allowed to route requisition |
SO Allow decimal overflow on aum quantity |
SO Cost margin override in sales order entry |
SO Entry of credit authority on release of sales order |
SO Maintenance of sales orders |
SO Price changes |
SO Processing invoices in batch |
SO Reset customer credit status after credit invoice |
SO Sales order discount changes |
WIP Accept into stock as alternate stock code |
WIP Allow Factory Scheduling SYSPRO update |
WIP Complete job if outst. P/O's, materials or operations |
WIP Maintenance of scrap inspection quantity |
WIP Override on gross profit check in Part Billings |
WIP Posting to a completed job |
WIP Posting to previous period |
Within the Operator Maintenance program, the E.net tab enables you to configure restrictions and preferences against an operator with regard to the customers they can access and is applied to business objects when sales orders are processed.
Field | Description |
---|---|
Functional role |
This indicates the role of the user who is linked to this operator code. It enables you to filter information returned by business objects according to the user's role. Available roles that can be assigned include:
|
Language |
This indicates the language in which you want to display the user interface for business objects loaded by this operator. You can choose a language from the drop-down menu, or select {custom} to enter a user-defined language code (only entries in the range 30 to 99 are allowed). The business object retrieves the operator's language code automatically and returns the value as an XML attribute in the root element of the returned document (e.g. a language code of 07 is displayed as: <InvQuery Language="07"...>) Translating the user interface of business objects is accomplished using two files:
|
Date format |
This indicates the format in which you want the user interface to display dates within business objects loaded by this operator. The business object retrieves the operator's date format automatically, and returns the value as an XML attribute in the root element of the returned document (e.g. A date format of 05 is displayed as: <InvQuery DateFormat="05"Tgt;) Select 08 - {custom} to define exactly how dates must be transformed if the predefined settings are not suitable. This is achieved using an XSLT stylesheet called format.xsl which is stored below the root folder of the e.net web applications folder (i.e. \Main\Transform). If you do not modify this stylesheet file then the format default to 01. |
Decimal format |
This indicates the format in which you want the user interface to display value, price and cost fields within business objects loaded by this operator. The business object retrieves the operator's decimal format automatically, and returns the value as an XML attribute in the root element of the returned document (e.g. a decimal format of 02 is displayed as: <InvQuery DecFormat="02"Tgt;). Select 03 - {custom} to define exactly how decimals must be transformed if the predefined settings are not suitable. This is achieved using an XSLT stylesheet called format.xsl which is stored below the root folder of the e.net web applications folder (i.e. \Main\Transform). If you do not modify this stylesheet file then the format default to 01. |
Default supplier | This indicates the primary supplier code that is associated with this operator profile. |
Option | Description |
---|---|
Usage for e.net business objects | This enables you to indicate how you want to control operator access to functional areas of e.net Solutions according to the terms of your software license agreement. These are apportioned using the Admin e.net License Import Wizard program. |
No access | Indicates the operator code cannot be used as a login for the business objects of e.net Solutions. |
Named user | Indicates the operator code can be used as a single-user
login to functional areas of e.net Solutions. If a second user
accesses e.net Solutions using this operator login, then the first
user is effectively logged out. This enables you to selectively monitor the activities processed by the user. Each named user effectively consumes one license, regardless of whether they are logged in. You would not use this option if you have a large number of users but only a few require access to the business objects at any one time. |
Guest/anonymous user |
Indicates the operator code can be used by a concurrent number of users as a login to functional areas of e.net Solutions (e.g. if your license caters for 10 concurrent users, then although any user can login using this operator code, only 10 can be logged in within a 30 minute period). This method can consume more licenses than necessary (e.g. a user who logs off and then logs back in within 30 minutes will consume two licenses). You would typically use this option if you have a large number of users, but only a few require access to the business objects at any one time. A benefit of this method is that you do not require a SYSPRO operator code for each person that needs the same access to the business objects of e.net Solutions. However, because the users of this operator login are anonymous, you will be unable to place restrictions on individual users (i.e. all users of this operator login will have the same defaults and restrictions) and you will be unable to use job logging and journals to establish which user performed a specific task. The Concurrent users field indicates the number of times that this operator code can be used as a login to the business objects of e.net Solutions within 30 minutes. |
Field | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|
Customers |
|
The Customer orders field enables you to configure settings for up to 100 customers who can enter orders using SYSPRO e.net Solutions, regardless of the salesperson to whom they are linked.
Field | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Warehouse selection | |||||||||||||
Warehouses | Enables you to indicate a list of warehouses for which the customer associated with this operator profile can create orders. | ||||||||||||
Access Control | |||||||||||||
Product Classes by Customer | Enables you to indicate the product classes for which the customer associated with this operator profile can create orders. You can select all product classes, or specify a list of up to 50 product classes. | ||||||||||||
Order creation | |||||||||||||
Type of order | Indicates the type of order that must be created when the
customer associated with this operator profile places an
order.
|
||||||||||||
Order status | Indicates the specific status that you want to assign to
the capture of scheduled orders by the customer associated with
this operator profile.
|
||||||||||||
Minimum number of days to ship | Indicates the number of days it typically takes to package and prepare a shipment for the customer associated with this operator profile. The order ship date is calculated as today's date plus your entry made here. | ||||||||||||
Allow non-stocked items | Indicates that the entry of an invalid stock code must be treated as if it were a non-stocked item. | ||||||||||||
Accept orders that fail credit check | Indicates that orders must be placed into suspense if the customer's credit limit/terms are exceeded. | ||||||||||||
Message to send if credit check failed | Indicates the message that must be sent if an order causes the credit limit/terms to be exceeded. | ||||||||||||
Operator to inform about new orders placed |
Indicates the operator who must be notified of any new orders placed by the customer associated with this operator profile. A message file (ADMMSG.DAT) is created by the order entry application in SYSPRO's working directory. This message file will contain information about orders created over the web. You can view this file from the SYSPRO Ribbon bar (SO Orders Created Externally. -> -> ). See |
||||||||||||
User defined sales message | Indicates user-defined text for this operator profile that will be displayed prominently within the sales order applet. |
SYSPRO license details (which include e.net Solutions functional areas) are specified within the LICENSE.XML file that accompanies your initial software purchase and any upgrade to your existing software. If at any stage you change your number of SYSPRO users, modules, functional areas, or renew your annual license, you receive a new LICENSE.XML file.
The e.net Solutions section of the LICENSE.XML file is imported using the Configure e.net License function of the Admin System Setup program. This loads a wizard that guides you through the process of importing functional area licenses and apportioning them to specific operator codes.
Option | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|
Import LICENSE.XML file |
Select this to import the LICENSE.XML file that by default resides in the \Work folder of your SYSPRO installation. |
||||||||
Configure e.net licenses |
|
A named user is a SYSPRO operator code. The business logic components of e.net Solutions are referred to as business objects. These are subdivided into functional areas (e.g. Requisition System functional area) and it is these functional areas that are licensed for the number of named users that will use them.
Unlike the core SYSPRO product, the different functional areas can be licensed for different numbers of users. For example: you could have 150 users of the Requisition System functional area and 10 users of the Purchase Order Primary Posting functional area.
Against the functional area you specify which named users can use the functional area. This allows the named user to have one concurrent logon to e.net Solutions. If another user attempts to logon to e.net Solutions (using the same operator code) while the initial user is still logged on, the existing user will either be logged off and the new user logged on, or the new user will be prevented from logging on, depending on XML parameters passed during the second logon attempt.
You can prevent the second user from logging on by supplying the following XML entry during the logon process:
<logon><FailWhenAlreadyLoggedIn>Y</FailWhenAlreadyLoggedIn></logon>
This is a SYSPRO operator code that allows more than one e.net user to logon at the same time.
Against the operator code you configure the number of logons that must be allowed within a 30 minute time period. This effectively becomes the number of concurrent users (i.e. the number of licenses consumed when the operator is licensed to use a functional area).
Guest/anonymous user licensing is available for business objects and Web-based Applications. The idea of the guest/anonymous user is that you do not need one SYSPRO operator for each person that requires the same access to e.net Solutions. For example: if a SYSPRO company wants to provide an application to 300 customers that allows them to capture sales orders remotely and upload them using web services, they may not want to provide a license for each one, particularly since some order daily, some only order monthly and some order infrequently. By establishing how often their customers order they can work out the maximum number that could logon during any 30 minute time period. They could then create an operator to process these orders and set it to be a guest/anonymous user. Against this they can set the number of concurrent users during a 30 minute time period.
If a guest/anonymous user has a concurrent user count of three, then each functional area to which the guest/anonymous user is given access will consume three licenses.
If a guest/anonymous user logs on to e.net Solutions, logs off and logs back on again within 30 minutes, then two licenses will have been consumed. Because this method could use more licenses than that consumed in a named user environment, we recommend that you only use this licensing method when appropriate.
Because each of the users that are logging on with a guest/anonymous operator code are using the same operator code, you cannot place restrictions (or set defaults) individually. All users of the operator code will have the same defaults and restrictions. You also cannot tell (using job logging, or journals) exactly which person performed a task, or made a change, as it will all be logged under the same guest/anonymous operator code.
A guest/anonymous user who successfully logs on to e.net Solutions is allocated a 33 character UserID which is placed in the COMSTATE file, together with its state information. Each time this user uses a business object, a timestamp is updated against the UserID in the COMSTATE file. Unlike a named user, when a guest/anonymous user exits e.net Solutions their UserID and matching state information is not removed from the COMSTATE file, but the timestamp is updated.
When another attempt is made to logon using the same guest/anonymous user account, a check is made to see how many users of this operator code are already logged on.
The user is allowed to logon if the number is less than the number of concurrent users allowed for this operator code.
If the number is the same as the number allowed, then a check is made to establish which existing user of the operator code has the highest period of inactivity. If this period of inactivity is 30 minutes or greater, they are logged out and the new user logged on. If the highest period of inactivity is less than 30 minutes the new user is informed that this guest account has exceeded the maximum number of concurrent users.
If a guest/anonymous user is already consuming licenses for functional areas and the number of concurrent users against the operator is increased using the Operator Maintenance program, it is possible that this will cause the number of licenses to exceed those available. If this occurs, a message is displayed, indicating that you have apportioned more licenses to business objects than you are licensed to use.
To use a business object outside of SYSPRO it must be licensed and you must first logon to e.net Solutions (using the Logon method that forms part of the Utilities class).
If the logon to e.net Solutions is successful, a 34-character UserID is returned. This UserID must be supplied each time the business object is called and must be valid. The business object is accessed using the permissions associated with the operator who performed the logon.
The 34-character UserID comprises a 32-character GUID followed by a single digit e.net Solutions instance number (i.e. the instance of e.net Solutions to use if more than one copy resides on the machine) and a final digit indicating the type of user (0 indicates a normal e.net Solutions user, while 1 or 2 indicates one of two possible SYSPRO Espresso users).
When you perform the logon there are eight items of information that you can provide. Some are mandatory (i.e. SYSPRO operator code) but most are either optional or can be configured to a default setting.
Logon information | Description |
---|---|
Operator | This must be a valid SYSPRO operator code. Depending on setup options, this may also be a network user login. |
Operator Password | This is the password that matches the operator code. |
Company ID | This is the company to which you want to logon. If a default company is configured against this operator code then it will be used if you do not supply a company ID. |
Company Password | This is the password for this company ID. |
Language Code | This is the language code used for error and
information messages. If you do not supply a language code,
then the code held against the operator is used. If language
files do not exist for this language code it defaults to
English. Valid codes are: EN (English) FR (French) ES
(Spanish) and ZH (Simplified Chinese). Prior to SYSPRO 6.1, language codes were numeric (i.e. 05, 07, 12, and 15 respectively). This functionality has been retained for backwards compatibility (i.e. if you logon using these numeric language codes it will continue to work). This language code is also used for menus and screens if you are performing a logon to the e.net Solutions Web-based Applications. The Log Level can be 0 or 1 (where 1 indicates that invalid elements are reported and 0 ignores elements that are invalid. |
SYSPRO Instance | This indicates the BaseDir entry to use from the Windows Registry (i.e. which copy of SYSPRO and data to use). |
XMLIn | Additional parameters can be supplied within an XML string at logon time to affect how e.net Solutions interacts with the user while logged in. |
Parameter | Description |
---|---|
<Logon> | This is the root element. |
<Siteid> | This element supplies the identification code of a site. This is sometimes used by SYSPRO to activate functionality that is only applicable when a specific site code is present (e.g. an Early Adopter who is testing the functionality before it is available on general release). |
<FailWhenAlreadyLoggedIn> |
A value of Y for this element will preserve the admstate of a UserID that is already logged in. Otherwise, the original operator is logged out and the UserID removed from the admstate file. |
<BuildToPost> | This element informs a Build method business object to return the XML output with its element names by the matching Post business object. |
<SourceApp> | This element accepts a 30-character string that describes the application in use. It is intended for future use. For example, SYSPRO's Electronic Signatures system will provide a mechanism for using a $SourceApp system variable in conditional statements, detail logging, and email notifications. |
<SystemInformationReqd> | This element causes additional information to be returned by a business object within a <SystemInformation> node (e.g. company name, operator group, currency, etc). In addition, items that would normally be returned as attributes of the root element (e.g. language, decimals, role, business object version, etc.) are returned as elements within the <SystemInformation> node. |
<DefaultRole> | This element enables an operator (who belongs to
multiple roles) to override their primary role by
supplying the 3-digit role number. In the core SYSPRO product an operator can change roles using the Switch Roles option on the Home tab of the Ribbon bar. You can establish the role number using the Roles program. By default, the Role column does not appear in the listview, but you can use the Field Chooser function to add it. The Field Chooser is available from the shortcut menu that is displayed when you right-click a column header. |
<NameSpaceReqd> | This caters for elements that have the same name
across different tables in the database, by declaring
namespaces as attributes against the root element (i.e.
the element name is prefixed with the namespace).
The namespace used is a 6-character file code for the table name (e.g. SALSLS for Sales Analysis Salesperson table which will appear as xmlns:SALSLS="SALSLS" against the root element of a business object). Columns that are duplicated but which come from the primary table used by the business object will appear without a namespace. Duplicated columns from all other tables will have namespaces (e.g. the ARSQRY business object needs to return Name elements with values from both the Customer Master table and the Salesperson table, so it writes out the one from the Customer Master table as <Name> and the one from the Salesperson table as <SALSLS:Name>. Set the <NameSpaceReqd> element to N if your application does not cater for namespaces. This removes the namespace attributes from the root element and replaces the colon between the namespace and the element name with an underscore (i.e. effectively making this just an element name). So the <SALSLS:Name> element would become <SALSLS_Name>. |
Unlike the core SYSPRO product (that can be launched from a desktop or menu shortcut which contains entries to locate the \Base folder and SYSPRO executable and components) e.net Solutions requires an entry in your Windows Registry to establish the location of your SYSPRO \Base folder.
During a typical SYSPRO installation, an entry is created in your Windows Registry that specifies the location of your SYSPRO base folder. The entry that is created is called BaseDir and it exists within a key called e.net solutions.
It is possible to install multiple copies of SYSPRO on the SYSPRO application server. This is typically done in a test or support environment, where each install is a different version. To cater for each of these copies having their own instance of e.net Solutions, the e.net solutions Registry key allows for multiple BaseDir entries (i.e. up to BaseDir9).
An instance number is assigned to each BaseDir entry:
BaseDir entry | Instance number |
---|---|
BaseDir | 0 |
BaseDir1 | 1 |
BaseDir2 | 2 |
BaseDir3 | 3 |
When you login to e.net Solutions and receive the UserID, entries are written to the ADMSTATE.DAT file (with its matching index file) which resides in SYSPRO's \Work folder on the application server.
Prior to SYSPRO 7, this was named COMSTATE.DAT (with its matching index file) and resided in the SYSPRO \Base\Comstate folder on the application server.
This file retains state information for each user such as the company settings at the time they logged on, their operator permissions, restrictions, etc.
The key to the file is the UserID. When you logoff from e.net Solutions, the entries related to this UserID are removed from the comstate file. When you call a business object from outside of SYSPRO you must supply a valid UserID.
A business object can return errors as exceptions or as messages in the XML.
An exception indicates an error that prevents the business object from continuing processing. This can be caused by a number of conditions:
Attempting to logon with an invalid value (e.g. the operator is invalid).
The supplied UserID is not valid/no longer valid.
Calling a Query or Build business object and the supplied key value is not valid (e.g. when using either the ARSQRY or SORRSH business objects and the supplied customer account number is invalid).
A file error is reported (e.g. corrupt file index).
A parsing error occurs when SYSPRO is processing the supplied XML (e.g. the supplied closing element name does not match the opening element name).
The debug option is set during the logon and one of the XML element names is invalid for the business object (e.g. the customer maintenance business object - ARSSCS - is called using the Update method, and the supplied customer does not exist).
Indicating errors messages within the XML returned from a business object is useful in that more than one message can be returned at a time. This avoids the developer having to resubmit the XML after correcting each issue that is detected.
Messages returned within the XML can be warnings or errors, where a warning indicates a problem that does not affect processing and an error prevents you from continuing.
Most Post method, and Setup class business objects include the <IgnoreWarnings> element within the parameter XML string which allows you to manipulate the behavior of these messages.
A value of N indicates that all warnings must appear as error messages; a value of Y indicates that messages relating to warnings must not be included in the returned XML and a value of W indicates that all warning messages must have a <WarningNumber> element instead of an <ErrorNumber> element and a <WarningDescription> element instead of a <ErrorDescription> element. The values against these elements will still be the same.
The W value enables a developer to search through the returned XML looking to see if there are any errors that will prevent the posting from happening (i.e. those with an <ErrorNumber> element). They can also search through the returned XML looking for any warnings (i.e. those with a <WarningNumber> element).
The English error messages are stored in four text files within the \Programs folder of the SYSPRO application server. These are called:
MSGCOMEN.IMP
MSGDISEN.IMP
MSGFINEN.IMP
MSGMANEN.IMP
The structure of an error message filename is that it begins with MSG, the next three letters relate to the SYSPRO development area (COMmen, FINancials, DIStribution, and MANufacturing), followed by the two letter language code used during the e.net Solutions logon (where EN is for English).