Proper Integration of 1C with Other Systems

How to simplify and standardize 1C integrations with Enterprise Service Bus (ESB): setup, data flow control, and scalability

  • How Data Is Structured in 1C: A Task with Many Variables
  • Integration options for 1C and other applications
  • Useful resource on integration types
  • Direct integrations

What this article is about

26.9.2023 Reading time: 13 min. One and a half million CIS companies use one or more 1C products for management and accounting, project and product management, enterprise management, procurement, and sales. In most cases, 1C is not the only product in the IT architecture, so for most of these companies, data exchange between applications in the IT environment is an urgent issue.

In this article, we will explain how to properly structure integrations between 1C applications and third-party vendor apps to avoid data conflicts and information loss.

How Data Is Structured in 1C: A Task with Many Variables

The storage system in any 1C application is built as a complex, multi-layered database. It defines data relationships and dependencies, and their links to objects at a high level of abstraction. However, in our experience, companies very rarely use 1C in the same form and configuration that is initially delivered to the user out of the box.

Each company customizes its systems to fit its own business processes, organizational structure, products, and so on.

As a result, the data structure becomes even more specific and unique.

As long as all of this runs inside a single system, there are no problems.

But if you need to integrate 1C with other systems, the specifics of how information is stored make the task more complex.

It becomes necessary to work through the following details

Which system will the integration belong to itself: 1C or the second participant in the process?

This determines which development team will build and revise the integration and which system will bear the load.

What format data should be sent and received in

Different systems consume data in different formats. 1C:ERP Enterprise Management

- in EnterpriseData (XML-based), while Axapta, for example, also uses XML, but in plain form.

The differences may seem minor, but they can affect data quality

And you will need to configure conversion to the required format either in the receiving system or in the data source system.

Which exact data needs to be pulled and sent?

As a rule, the receiving system does not need everything everywhere all at once, only specific fields or records for a certain time period.

You need to identify which fields they are, separate them from the overall data set, and route them into the appropriate receiver slots.

Which exact entity attributes need to be sent to and from 1C

And what should you do if the target system does not have the needed value? For example, item attributes in 1C may be stored as several reference lists that are updated independently. For example, you send 1C:Retail data about the item master "desk lamp", where the reference attribute "color" has the value "red".

If the color reference list in 1C:Retail does not yet contain the value "red," it will be impossible to save such data.

All of this must be taken into account at the initial integration development stage. 1C regularly releases updates and refreshes its product code.

The data structure you built your integration for may become outdated after any update.

Field names will change, some fields will split into two or merge into one. And all integrations related to 1C will have to be reworked to match the new conditions.

Changes can also happen on the side of the second system involved in the data exchange, and the integration will have to be changed again.

Integration options for 1C and other applications

In essence, there are only two ways to integrate 1C with applications in the IT environment: direct integrations and integrations through an enterprise service bus, or ESB (short for enterprise service bus). Each approach has its own characteristics.

Direct integrations: OData protocol and API

The first, and in practice the preferable, option for implementing direct integrations is to use the universal OData protocol (short for open data protocol). 1C products, in particular 1C:Enterprise version 8.3.5 and later, come with built-in OData support, an open web protocol for querying, adding, deleting, and updating data. OData allows resource operations through HTTP requests and returns responses in XML and JSON formats.

This is a universal protocol used not only by 1C but also by other systems.

As a result, the systems in the environment will more easily understand the received data.

To use the OData protocol, you need to enable support for it in the 1C settings.

After that, the system will automatically create a REST interface for data exchange between 1C and other systems. The integration can then be connected to it, and data export and import can be configured.

If the system is older than version 8.3.5 (for example, 8.2), you will not be able to use the universal OData protocol.

You will have to build an API and integration for each connected system.

Building APIs is the standard way to set up communication between two systems.

But it is worth remembering that APIs are written by people.

And the people involved were different, with different experience and different ways of thinking.

They can even solve the same task in different ways

As a result, if you have a dozen systems integrated with 1C and several 1C developers, you will very likely end up with a zoo of ten or more APIs.

Each of them is written with its own logic, operates according to its own logic, and in the future must be further developed, yes, again according to its own logic.

After every 1C update, your team will have to separately adapt each API to the latest changes and the API's internal logic. Best case, the same specialist who developed the API will do it, since it will be easier for them to reconstruct their own reasoning when writing the code. Worst case, from a time perspective, it will be a completely new specialist who uses different approaches to API development.

The “wild zoo” problem can be addressed by imposing strict API design standards, though in practice that does not always work, or by artificially reducing the number of integrations.

We saw an example of such a reduction in one of our projects.

To reduce the “wild zoo” in the 1C source system, the system where supplier product data was stored, the company's developers implemented a chained integration. Bitrix collected stock, pricing, product, and similar data from other systems and sent it to the 1C source system. The 1C source system then passed all product data to the 1C system responsible for offline retail.

A part of the initial information flowed from it into 1C, which was responsible for the online storefront. On the one hand, this reduced the number of integrations overall. On the other hand, each additional link made the landscape more vulnerable and created more room for errors and data loss.

Any failure in the integration or in an intermediate system caused information to get stuck and not reach the next stages.

Direct integration summary

  1. 1C can be integrated directly with other systems via the OData protocol or via API.

  2. The OData protocol is universal and makes it easy to exchange data between 1C and other systems. By default, OData is available only in relatively recent 1C versions.

  3. API development in 1C is not standardized.

  4. Each developer implements it based on their own experience, logic, and approach.

  5. After updates to 1C and other systems, all APIs will need to be changed.

  6. If they are built on different logic, the task becomes more difficult.

  7. Reducing the number of integrations by making system interaction logic more complex actually makes the entire environment more error-prone.

Assess where AI can deliver impact in your process

1C integration through a data bus (ESB)

  1. If the company landscape has only two applications (for example, 1C:ERP Enterprise Management

  2. and WMS), you can choose a point-to-point integration.

  3. You know exactly what data is stored in 1C and in what volume, what is stored in the warehouse management system, what each system must send, and what it should keep for itself.

  4. No major growth is planned in the coming years, nor is the implementation of other IT systems.

  5. But if the IT architecture includes more systems, more entities move between them, and growth is planned in the foreseeable future, it is better to look for fundamentally different solutions. Ones that will be easy to support and will not require building something unique every time the company adds new systems to its IT landscape.

  6. That solution is integrating 1C and other systems through an enterprise service bus. ESB is a software solution that acts as a single messaging hub between information systems and applications.

  7. The service bus takes information from the source system in the form that is easiest to extract, stores it in repositories or routes it through a message broker, and transforms it into the target system's format when needed.

  8. Logging and monitoring tools that can be integrated with an ESB, and in some systems are already included out of the box, make it possible to track data delivery between systems and quickly detect and fix errors.

  9. A very simplified and schematic view of system integration through ESB looks like this.

  10. Each system sends and receives data not directly from other systems, but through the ESB.

Integration options through ESB and protocol selection

An ESB cannot be called a magic bullet for integrating 1C with anything. First, the integrations still need to be designed properly by separating domains and information flows. Second, to create a connection between 1C and the ESB, you will have to develop a separate API for each entity or use the same OData protocol.

Most often, 1C exchanges not one or two, but five or even ten data flows with each system. And the real data exchange scheme is a bit more complex than a simple web.

We do not recommend funneling the entire data set through a single connector and a single stream when integrating via ESB.

Moreover, we strongly do not recommend doing this, because it increases the integration load by tens of times and proportionally raises the risk of failures.

The most rational approach, based on our integration development experience, is to separate entities and send each one through its own data stream.

Depending on how complex the entity data storage is, you can choose a transfer protocol: if the entity data is stored in one or two tables, it is better to use JDBC with a direct database connection, without an API; for a more complex data storage structure (for example, if the entity is described through several additional reference catalogs at once), you will need to build an API and use OData, RESTful, SOAP, or GraphQL data transfer protocols.

Benefits of Integrating 1C Through ESB

Reducing the load on 1C and on the target systems In a point-to-point setup, one of the systems is always responsible for data transfer and for converting data between the formats in which it is stored. These tasks can be split among the exchange participants or assigned to one of the systems. In any case, implementing them requires expanding the system's codebase and increasing its load. In an ESB setup, the only additional element is the API.

All data splitting, filtering, and conversion happens within the ESB layer.

Reducing the volume of data transferred In a direct integration setup, systems are forced to send the same information repeatedly. For example, 1C sends order information to WMS, a logistics application, CRM, a sales commission calculation system, and so on. The same data has to be transmitted five, ten, twenty times. With ESB, instead of sending customer or order information ten times to different systems at different frequencies, 1C sends the information once at a defined interval.

The receiving systems then pull this information from the ESB-layer repository through separate integrations at the frequency they need. KT.Team had a case where a client had integrations set up with three systems. One handled stock levels (WMS), another handled prices, and the third handled product information (PIM).

Stock levels change most often: to keep the online store data up to date, 1C had to fetch stock information every 15 seconds, about 40,000 times per week. But the integration logic was set up so that every 15 seconds 1C queried all three systems and received 120,000 data packets per week in response. Both 1C and the other systems in the landscape were overloaded.

When the KT.Team team built the integrations through ESB, each system began receiving and sending information at the required frequency. WMS still sends stock information every 15 seconds. The system responsible for prices sends data once an hour (168 times a week). And PIM reduced its scheduled data transfer to once a week, by 40,000 times. As a result, 1C began pulling a little more than 40,000 data packets instead of 120,000!

Accounting for system performance The ESB logic can be configured to set data export and import speeds for target systems based on their performance and daily load patterns. For example, if your CRM can handle 100 transactions per minute during the day and 500 at night, the ESB will take that logic into account and will not overload your systems.

Timely error detection As a rule,

Direct integrations

  1. do not necessarily include logging and monitoring.

  2. The company only learns about emerging issues when they start affecting the business.

  3. A properly designed ESB layer must include logging, monitoring, and alerting systems for emerging issues.

  4. As soon as a message delivery problem occurs in any of the systems, engineers or support receive an incident alert and its location.

Example of Building Integrations Between 1C and Other Systems

In one of our recent projects for an international company in e-commerce and retail, the KT.Team team set up integrations for several 1C systems: ERP, OMS, UMP, CMS.

We implemented an integration bus and built 13 connectors for seven data streams: one connector receives orders from OMS; one connector passes order data to ERP; two connectors handle order status exchange between OMS and ERP; one connector sends order data to the rewards calculation service; two connectors send user data to the rewards calculation service; four connectors handle user currency and country data; two connectors are needed for warehouse filtering.

A separate connector is configured for each entity, or several if the logic requires it.

This makes it possible to transfer data between systems in a more controlled way.

Summary

  1. : 1C can be integrated with ESB via JDBC (direct connection to simple databases) or through APIs using OData, RESTful, SOAP, JDBC, or GraphQL protocols (if the entity is defined by a complex database with many tables).

  2. Each entity needs a separate connector and a separate API.

  3. Integration through ESB allows 1C to transfer each entity once and at a defined frequency, regardless of the number of receiving systems.

  4. Integration through ESB reduces system load, shrinks the codebase, lowers the total volume of transferred data, takes system performance into account, and loosens system coupling.

Which ESB to Choose for 1C Integration

If you have already looked into the topic, the first and most logical answer may be 1C:Shina.

A product from the same family is indeed easy to integrate with 1C:ERP Enterprise Management

, "1C:Accounting", "1C:Payroll and HR Management", and so on. Another CIS data bus, DATAREON, is also fairly well adapted for working with 1C products. But if your landscape includes applications from other vendors, it makes sense to choose a data bus based on a broader set of criteria than 1C compatibility alone. Especially since practice shows that any ESB can be easily integrated with 1C.

For example, we have worked with Mule on projects with hundreds of 1C connectors and heavy bus load, and saw no problems even during peak periods.

When choosing a bus, our clients usually pay attention to the following parameters: the availability of an OData connector for 1C (this is extremely rare, and a ready-made connector is unlikely to exist in non-CIS ESBs); the presence of low-code implementation issues; the way related message information is stored; the ability to build a microservice-based exchange architecture with flexible scaling; the ability to keep the full scope of one connector's responsibility entirely within a single job (i.e.

small program for working with the data stream) or a set of jobs; version control; stream encryption; availability of a visual development interface; support for asynchronous mode; availability of a message transformation mechanism and the formats it supports; transformation method; licensing cost.

If you need to integrate 1C products with other systems and are not sure which ESB can do it, send us a message through the form.

Discuss the article: Proper integration of 1C with other systems...

Send via: