Automatic, from an alert
Each alert type can open a ticket by itself, with nobody copying the error from one screen to another.
Industry 4.Now
Your MES was built to run production, not to keep dozens of connections alive and overloaded. CMS takes over the integrations, the security and the monitoring — and scales, giving you end-to-end visibility of every integration.
The only industrial integrator with AI: describe the field mapping in plain language and CMS builds the transformer between applications, simply and quickly.
Platform
When there is no integration layer, factory data ends up scattered, integrations become hard to trace and the knowledge remains tied to individuals. The result is an operation that is more dependent, less transparent and more exposed to risk.
We built CMS – Collaborative Manufacturing Suite, a platform designed to centralise, control and monitor the integrations between shop-floor systems and corporate systems, covering both the SAP and non-SAP ecosystems.
CMS was conceived to support the main integration needs of an industrial operation, connecting machines, equipment, factory applications, MES systems, ERPs and other corporate platforms.
The five stages
Every flow goes through the same five stages. That is what turns a new integration into configuration instead of a software project.
A ready REST endpoint for each definition and a SOAP web service with a dynamically generated WSDL. Authentication by application API Token or WS-Security.
When data does not come to you, CMS goes after it: SQL query, BAPI call, MQTT topic, an OPC UA tag that changed, a Modbus register, an HTTP endpoint. On a schedule or on an event.
Given the source and destination payloads, you can use an AI prompt to map the fields in plain language and let CMS build a transformer to be used in your collection and delivery definitions.
Asynchronous or synchronous interface with sequential or parallel ordering, plus timeout, retries and backoff per definition. The destination can be an ERP, a database, an MQTT broker — or a PLC tag.
Application availability by keep-alive, blocked interfaces, message backlog, technical and business errors — with alerts by e-mail, WhatsApp and on-screen notification.
Many plants live with them thinking it is normal. Tick the ones that happen at yours.
Tick the signs that happen at your plant. See how it looks with CMS →
The same scenario without an integration layer: each system talks straight to the other. It works on the day everything is up — the problems show up on the other days.
The LIMS goes down and the order sent by the ERP is lost. Storing and resending becomes the producer’s job — and each system does it its own way, if at all.
The ERP fires 2,000 messages at once and the MES cannot cope. With no queue in between, nobody holds the volume and delivers at the target’s pace.
Nobody is notified. The failure shows up when production notices, and every team says everything is fine on its side.
Each link has its own format translation, scattered across systems. Replacing the MES means touching every integration that talks to it.
Each system has its own log, on a different screen. Finding one message means opening five consoles — and nobody sees the integration end to end.
| Without CMS | With CMS |
|---|---|
| Connection drops and the message is lost; resending falls on the producer | The Interface blocks, holds the message and delivers when the connection is back |
| A peak of messages takes the target down | The queue absorbs the peak and delivers at the target’s pace |
| The failure shows up when production notices | The alert opens a help desk ticket and notifies a phone |
| One format conversion per pair of systems | The Transformer lives in one place, reused across integrations |
| No history: no way to prove what was sent or to reprocess | History per message, with single or bulk reprocessing |
| Messages out of order: the confirmation arrives before the released order | Sequential Interface: each message waits for the previous one |
| Each system with its own log; nobody sees the whole integration | One panel with every integration, message by message |
From intake to destination confirmation, every step is persisted. When something fails, the difference between a technical problem and a data problem is already classified.
The message arrives over REST, SOAP or an active collection, and is stored before any processing.
It becomes a job in the interface. A blocked interface holds the message instead of failing against a destination that is down.
If the definition has a transformer, the payload is converted to the destination format.
Sent with its own timeout. A technical failure goes back into retry, with a wait between attempts.
Every message ends in an outcome, stored in its history, that says where it stopped.
Errors are resent one by one or in bulk, always as a new attempt. Retention purges old history.
Architecture
Pick the scenario and follow every step of the data. CMS connects enterprise and industrial systems, whatever the protocol, making sure data is received, processed and delivered with every integration fully monitored.
Integrations
Pick a category to see what CMS talks to, how and in which direction. Collection is data coming into CMS; Delivery is data going out.
RFC/BAPI, IDoc and OData (SAP Gateway), with PP, QM and PM packs
Dedicated connection, with tracking of CPI messages
Protheus REST API
Datasul REST API
REST or SOAP API, or straight to the Oracle database
REST API (OData)
Transformer library for production, material and quality messages
Siemens · ISA-95/B2MML, API or database
Rockwell Automation · ISA-95/B2MML, API or database
Rockwell Automation, cloud · API REST
AVEVA · ISA-95/B2MML, API or database
Dassault Systèmes · ISA-95/B2MML, API or database
GE Vernova · API or database
Critical Manufacturing · ISA-95/B2MML, API or database
SAP, cloud · API OData/REST
PPI-Multitask, Brazil · API or database
Tag reads, trigger on value change and guarded writes
Market examples
Cyclic register reads, trigger on change and writes
Market examples
Topic subscribe and publish, with retain and QoS
Market examples
Devices published on the broker and command sending
Market examples
Sensor uplinks through the Network Server and downlink sending
Market examples
PI Web API: current value, history, interpolated and writes
Versions 1.8, 2.x and 3.x: point queries and writes
Time series through the PostgreSQL connector
PTC · OPC UA server
Inductive Automation · OPC UA server
AspenTech · OPC UA server
Siemens · OPC UA server
AVEVA · OPC UA server
Honeywell Matrikon · OPC UA server
Tables, views and procedures, marking what was already read
Tables, views and procedures, marking what was already read
Tables, views and procedures
Including Atlas, Azure Cosmos DB and AWS DocumentDB
File-based database
Versions 1.8, 2.x and 3.x: point queries and writes
Time series through the PostgreSQL connector
API queries and a ready endpoint to receive calls
Web service published by CMS, with WSDL, and calls to the vendor’s services
Queries and writes on OData v2, v3 and v4 services, with entities discovered by the Integration Assistant
Ticket opened from an alert or from a failed message
Ticket opened from an alert or from a failed message
Ticket opened from an alert or from a failed message
Ticket opened from an alert or from a failed message
Ticket opened from an alert or from a failed message
Ticket opened from an alert or from a failed message
Maintenance notification opened from an alert or from a failed message
Monitoring of a server folder and file generation in it
Shared network folder, reached by the CMS server: reads incoming files and writes new ones
Vendor names appear as examples of systems CMS talks to through open protocols and standards; they do not imply partnership or certification. Trademarks belong to their owners.
| Technology | Inbound (Collection) | Outbound (Delivery) |
|---|---|---|
| HTTP REST | Queries to APIs and inbound calls | Sending, updating and deleting records |
| SOAP | Service published by CMS for the other system to call | Calls to the vendor web services |
| MQTT | Subscription to broker topics | Publishing to topics |
| SQL Server | Reading tables and views, marking what has been read | Writing records and running procedures |
| Oracle | Reading tables and views, marking what has been read | Writing records and running procedures |
| PostgreSQL (includes TimescaleDB) | Reading tables, views and time series | Writing records and running procedures |
| SQLite (file-based database) | Reading tables and views | Writing records |
| InfluxDB (1.8, 2.x and 3.x) | Time series queries and aggregations | Writing measurement points |
| MongoDB | Reading collections, only what changed since the last run | Writing documents |
| MongoDB Atlas | Reading cloud collections over an encrypted connection | Writing documents |
| Azure Cosmos DB (Mongo API) and AWS DocumentDB | Reading collections, through MongoDB compatibility | Writing documents |
| SAP RFC / BAPI | Calling SAP functions and BAPIs | Calling SAP functions and BAPIs |
| SAP IDoc | Receiving IDocs of any type | Sending to SAP through a function or BAPI |
| OPC UA | Reading tags and triggering on value change | Writing tags on the equipment |
| Modbus TCP | Cyclic register reads and triggering on change | Writing to registers |
| Sparkplug B | Subscription to the devices published on the broker | Sending commands to devices |
| LoRaWAN (through the Network Server) | Sensor uplinks, from ChirpStack or The Things Stack | Sending downlinks to the sensors |
| PI Web API (AVEVA/OSIsoft) | Current value, history, interpolated and summary | Writing values back to PI |
| Files (directory) | Watching a folder and reading the files that arrive | Generating files in a folder or share |
Ticket opening
When an interface blocks, a connection drops or a message fails, CMS opens the ticket in the company’s support tool, with the application, interface and error already filled in — and notifies whoever is on call by e-mail or WhatsApp.
Each alert type can open a ticket by itself, with nobody copying the error from one screen to another.
On a failed message, one button opens the ticket with the failure context attached.
The integration with each help desk comes as a pack: just provide the connection and the credential.
Tools already mapped in CMS
SAP Manufacturing Packs
The expensive part of integrating with SAP is not the software: it is working out which BAPI to call, which fields it requires, in what order and how to read the return. The CMS ships with that knowledge packaged — you pick the scenario and the interfaces are created configured.
Time ticket or order confirmations, component goods issue, finished goods receipt, order release and technical completion, batches and order backlog reads.
Inspection lot backlog, characteristics to measure with nominal and tolerances, result recording, in-process inspection points, usage decision and quality notifications.
Create and close notifications, technician time confirmation, orders and assets — plus measurement recording straight from OPC UA, Modbus or PI.
PP, QM or PM, on the application that talks to SAP.
The essentials preset comes checked. Add the rest when you need it.
Plant, storage location and movement types. Once, for every interface.
You see exactly what will be created before anything is written.
AI-assisted configuration
The packs solve SAP, the system we already know from the inside. The assistant solves the rest of the estate: any API with Swagger, OData, WSDL or a Postman collection — and, when there is no documentation at all, the address plus a sentence saying what you need.
Swagger/OpenAPI in JSON or YAML, the OData $metadata of SAP Gateway, a SOAP WSDL or a Postman collection. CMS recognises it by content, not by extension, and looks through the conventional paths on its own when you give it only the base address.
With no documentation, CMS makes a fenced-in read of the URL — GET only, with limits on time, size and redirects — and uses the real response as its base. You add the intent in plain language: "I need to pull open orders and confirm production".
PostgreSQL, SQL Server, Oracle, SQLite, MongoDB and InfluxDB. The tables, the types and the key are already in there: reading and writing come out ready, with the SQL command in plain sight before anything is saved.
A URL, a contract or a database connection you already registered.
Operations arrive grouped by business scenario, not as a raw list of endpoints.
You see what will be created, rename whatever you want and can reuse existing interfaces.
Everything is born disabled. Nothing starts running because the system decided so.
Included in CMS. The AI is optional and can run on your own infrastructure.
AI Agent
A queue blocks at three in the morning. Today that becomes an e-mail with an error code and someone opening five screens to work out what happened. The agent walks that path before you do: it runs the tools of the CMS itself against your installation, looks at what actually came back, and hands over a report with the evidence behind every step.
"Why did the ORDERS interface stop?" — it chains interface status, recent errors, message search and the definition, and every line of the report shows what the tool returned. In this mode it only reads: the worst case is a poor answer, never damage.
Given a goal in plain language it probes the source, assembles the plan of Interfaces, Collections and Deliveries, and tests it before showing anything. Writing stays parked until someone approves it on the review screen, object by object.
Blocked queue, piled-up messages, application offline: the alert that fires becomes an investigation, and the report lands in the inbox of whoever receives that alert. It ships switched off — it is the one part of the product that would spend the AI key with nobody having clicked.
One sentence. The scope is the application in focus in the header, not one more form to fill in.
Every tool runs against your installation and the real result goes back into the reasoning. When a probe returns 401, it is the agent that fixes the path — before any screen opens.
The timeline shows which tool ran, what came back and how long it took. There is no conclusion without the step that supports it.
Writing happens on your click, in a review that lists object by object — and it is recorded so it can be undone.
Features
56 screens, grouped as in the product menu and subject to each user's access profile.
Screens
A sample: these are some of the screens for the main features, among the dozens the system ships. The interface is available in Portuguese, English and Spanish, in light and dark themes.
Security
Production payloads carry sensitive data: production orders, costs, customer identification. Controlling that data is part of the product.
AES-256-GCM before persisting, without changing the content delivered to the destination. One key per rule, conditional on text and flow direction.
Viewing an encrypted payload requires being on the key authorisation list, re-authenticating with your own password (and 2FA, if enabled) and writing a justification.
Every decryption attempt — allowed or denied — records the user, result, technical reason, justification, affected entity and source IP.
TOTP through an authenticator app, activated per user with a configurable global requirement.
Corporate login as an alternative to local users, without duplicating identity management.
Each screen is a tool released in the role — it governs the menu and the API authorisation, not just the interface.
Outbound credentials and API keys are encrypted at rest and never re-displayed by the API once saved.
All external traffic goes through nginx with TLS; the SAP connectors stay on the internal network only, with no published port, protected by an internal token.
Content-Security-Policy on both domains: scripts, styles and fonts only count when they come from the installation itself. Even the code editor in the screens is served by it, not by a third-party CDN.
How pricing works
The question that stalls any integration decision is whether the cost will grow along with the estate. Here it does not: the number of plants changes the price, and nothing else.
One key per installation. Each plant licences its own, and what runs inside it is not metered.
Five integrations or two hundred, the licence is the same. There is no cap on applications or interfaces.
SAP RFC/BAPI and IDoc, OPC UA, Modbus, MQTT, databases, REST and SOAP all come in the same package.
The volume the plant produces does not change the price. Nothing is billed per event.
The 108 ready scenarios for PP, QM and PM are part of the product, not a separate module.
It runs on the plant own server. There is no cloud subscription, and no data has to leave the factory.
The AI Agent — which investigates the alert on its own, points to the cause with evidence and says what to do — is licensed separately. Everything else is included. We would rather say so here than at renewal.
The licence price is quoted on request, after an assessment of the environment: the size of the estate changes the implementation effort, not the licensing rule. Talk about your scenario
To prove it works in practice, we run an end-to-end demo: we connect CMS to a test SAP system, a simulated OPC UA server, the database and the API, showing the whole integration cycle, from intake to final delivery.