--- alias: integration-index tags: - integration - erp description: "The system facilitates data exchange between external systems through configurable integration packages and entries, enabling automated data processing and system" --- # System Integrations :lock: Administration.**NavigationPane** :lock: Administration.**SystemIntegrations** Interoperability is paramount to ensuring data integrity, enhancing security and achieving a new complex engineering system paradigm. The Critical Manufacturing MES System integrates these concepts and adds a versatile layer of extensibility by using a engine called **Integration Entries**. ## Integration Entries In the Critical Manufacturing MES, Integration Entries are a set of records that work as a queue system and are processed periodically by an engine. That same engine is also used to calculate, in real time, which integration package should be responsible for the handling of each integration entry. The rules are supplied by an integration resolution table which is also configured in the system. ![integration_entries_overview][integration_entries_overview] !!! info The processing period or pooling interval is by default 60 seconds, but can be reconfigured in config table at `/Cmf/System/Configuration/Integration/PollingInterval/`. Critical Manufacturing MES is able to integrate with external systems through its integration interface, an extensible mechanism where a plugin is loaded to handle the communication details between the MES and the external system. A plugin is made available upon MES installation in order to provide a way to record the received messages and to process them either synchronously or asynchronously. Critical Manufacturing MES supplies three integration packages: * [Enterprise Integration](enterprise_integration.md) * [SAP](sap_integration.md) * [MES](mes_integration.md) ### Activate Integration Engine | Configuration entry | Description | |:--------|:--------------------------| | `/Cmf/System/Configuration/Integration/IntegrationSchedulerIsActive/` | Define if engine is active (boolean) | Table: Integration Scheduler configuration entries ![activate_integration_scheduler][activate_integration_scheduler] ## Integration Systems The integration systems area managed within a Generic Table named *IntegrationSystem*, and they specify which systems will be in communication with MES. ![integration_systems][integration_systems] ## Integration Packages Integration Packages are software libraries that expose one integration handler as an entry point. These packages and their handlers are configurable within a Generic Table called *IntegrationHandler*. ![integration_handler][integration_handler] Each line points to an assembly that was developed and tested by the Critical Manufacturing team. The technical instructions can be found within developer area. ![integration_handler_edit][integration_handler_edit] ## Integration Handler Resolution The integration engine for each integration entry looks up to a mapping table to infer what handler must be invoked to treat the record. The configuration ensures a high level of flexibility through the usage of certain specific parameters: * **From System** - Sender Integration System * **To System** - Destination Integration System * **Message Type** - Message Type supported by both systems * **Handler** - Reference to IntegrationHandler Generic Table * **Action Name** - DEE Action that will be called from the handler * **Error Handling Action Name** - DEE Action that will be called in error scenarios * **IoT Event Definition** - Event to be posted on Enterprise Integration scenarios ![integration_handler_resolution][integration_handler_resolution] ## Managing System Integrations The Administration area provides a user interface to allow authorized users to manage system integrations. In System Integrations, the entry point will present a simple dashboard that can be viewed as a summary for each system type. For now, it will show the number of errors in previous integration entries as well as the number of successful integration entries processed by the system. ![manage_system_integrations][manage_system_integrations] A list of the integration entries in different states can be seen in the SAP System Integration page. The entries are grouped by state and can be filtered to allow a bird's eye view of the current status. ## Integration System Main View Depending on the optional modules that are licensed in the system, the main view will display some or all of the following page sections: * **Integration Entries** - displays general information on the **Integration Entries** that have been processed in the system. ![erp_page_entries_view][erp_page_entries_view] ## Integration Entry Details Selecting an integration entry will open a new page with details of the selected entry. There are several views available: ### Body View This view displays the actual information contained in the body of the **Integration Entry**. ![erp_integrationentry_page_body_view][erp_integrationentry_page_body_view] !!! info The data that is receive in the integration message can be used to name any object that is created by the integration in the system. If this information is not present in the message, [[user-guide-name-generator]] can be used to name newly created objects. For more information, see the [[tutorials-name-generator-integration]] use case of the [[tutorials-name-generator-index]] tutorial. ### Details View Depending on the optional modules that are licensed in the system, the **Details** view will display some or all of the following page sections: * **Details** - displays general information on the **Integration Entry**. * **Attributes** - enables the visualization of existing **Attributes** and the possibility to create new ones. For more information on **Attributes**, visit the section [Attributes](../../general/screen-layout/page-sections/attributes.md). * **Automation Jobs** - displays general information on the **System Jobs** (created by the **Integration Entry**). * **Iot Events Queue** - displays general information on the **IoT Events** (associated with the **Integration Entry**). * **Attachments** - shows the documents that are attached to the **Integration Entry** and enables the user to attach additional documentation to the **Integration Entry**. ![erp_integrationentry_page_details_view][erp_integrationentry_page_details_view] ![Screenshot showing a details view of an integration entry with attachments.](./../images/automation_jobs_iot_event.png) ## References View This view combines information concerning other objects that have references to the current object: * **Relations** - displays the existing **Relations** between the **Integration Entry** and other entities and enables the user to edit them. For more information on **Relations**, visit the section [Relations](../../general/screen-layout/page-sections/relations.md). * **Where Used** - displays the set of relationships between the **Integration Entry** and the other objects used throughout the system. ## History View This view combines information concerning other objects that have references to the current **Integration Entry** object: * **History** - displays the history of the operations, associated information, user(s) performing the changes and date and time of the changes. ## Integration Entry Actions Depending on the current state of the **Integration Entry**, the user can perform the following actions: | State / Operation | Reprocess | Reject | Resend | Download Body | |-----------------------|:-----------------------------:|:------:|:------------------------------:|:-------------:| | **Received** | Yes (if Target System is MES) | Yes | Yes (if Source System is MES) | Yes | | **Failed** | Yes (if Target System is MES) | Yes | Yes (if Source System is MES) | Yes | | **Processing** | No | No | No | Yes | | **Processed** | No | No | No | Yes | | **Rejected** | No | No | No | Yes | Table: Integration Entry actions ### Reprocess Integration Entry To attempt manual reprocessing of an **Integration Entry**, press the *Reprocess Integration Entry* in the top ribbon. !!! info This operation will only work if the Target System property of the **Integration Entry** is set to *MES*. ![erp_integrationentry_reprocess] ### Reject Integration Entry To reject the processing of an **Integration Entry**, press the *Reject Integration Entry* in the top ribbon. ![erp_integrationentry_reject] ### Resend Integration Entry To resend the **Integration Entry**, press the *Resend Integration Entry* in the top ribbon. !!! info This operation will only work if the Source System property of the **Integration Entry** is set to *MES*. ![erp_integrationentry_resend] ### Download Integration Entry body and schema A user can download the body of the **Integration Entry** by pressing the *Download Body* button in the top ribbon. Similarly, the schema used to parse the message can also be downloaded by pressing the *Download Schema* button in the top ribbon. In both cases, an XML file will be downloaded to the user's machine, containing the body or the schema, respectively. ## Integration Entry Retry Logic Whenever an **Integration Entry** fails and is set to be automatically reprocessed (marked as *Retriable*), the underlying reprocessing mechanism will use a timer (*RetryIntegrationEntry*) that adds a specific amount of time between each retry attempt. This period will increase by an exponential increase factor so as to avoid overburdening the system. A simple example can be the following scenario: If the value for `RecurrenceDefinedSeconds` in the *RetryIntegrationEntry* timer is set to 10 seconds, the following table lists the expected execution times of the next integration entry reprocessing events (where Tn = Timestamp of the nth failed execution): | Attempt | Time between attempts | Next attempt at | |-|-----|------| | 1 | 10 seconds | T + 10 seconds | | 2 | 20 seconds | T1 + 20 seconds | | 3 | 40 seconds | T2 + 40 seconds | | 4 | 80 seconds | T3 + 80 seconds | Table: Integration Entry Retry Logic [erp_integrationentry_page_body_view]: ./../images/erp_integrationentry_page_body_view.png [erp_integrationentry_page_details_view]: ./../images/erp_integrationentry_page_details_view.png [erp_integrationentry_reject]: ./../images/erp_integrationentry_reject.png [erp_integrationentry_reprocess]: ./../images/erp_integrationentry_reprocess.png [erp_integrationentry_resend]: ./../images/erp_integrationentry_resend.png [erp_page_entries_view]: ./../images/erp_page_entries_view.png [integration_entries_overview]: ./../images/integration_entries_overview.png [integration_systems]: ./../images/integration_systems.png [integration_handler]: ./../images/integration_handler.png [integration_handler_edit]: ./../images/integration_handler_edit.png [integration_handler_resolution]: ./../images/integration_handler_resolution.png [manage_system_integrations]: ./../images/manage_system_integrations.png [activate_integration_scheduler]: ./../images/activate_integration_scheduler.png {{ generate_index() }}