Intercompany
Learn to use Pryme intercompany.
Master data is the foundation for intercompany projects. It refers to customers, resources and projects. Transfer data between different tenants (data bases) regardless of their location. Improve your data quality by sharing it in a reliable way. Forget about manually copying data from one business to another.
Maintain a single copy of master data to ensure consistency of important information that is shared across companies within the group.
Whether in the form of centralised data sharing, or in the form of dynamic data exchange, choose which scenario suits you best. With the first option you act as the primary source of data for the entire group. Where as with the second option you and other companies within the group can easily transfer data to one another as needed. In both cases you’re ensuring that all companies in the group have access to the same accurate and up-to-date information.
This video shows how intercompany data flow between entities
We offer two specialized apps to streamline master data sharing:
- Pryme Intercompany Data Management is an extension on Microsoft Dynamics 365 Business Central for managing, sharing, and automatically process master data between a free selection of companies.
- Pryme Intercompany for Projects is an extension that managing and sharing project, resources, and entries for time, expenses and items. This app requires Progressus Advanced Project.

YouTube channel
Watch our YouTube channel for more information about Pryme Intercompany.
1 - Setup and configuration
Set up and configure Pryme Intercompany
Pryme Intercompany enables seamless data sharing between Business Central companies through Messages. This system is based on three core components: Parties, Topics, and Subscriptions.
- Parties: Business Central companies that exchange data with other companies via Messages.
- Topics: Messages published by one Party and made available for other Parties to subscribe to.
- Subscriptions: Mechanisms that allow a Party to receive data from a Topic.
Configuration Differences
Both apps follow the same process for configuring Parties. However, the setup of Topics and Subscriptions differs.
Pryme Intercompany Master Data App
- Does not include pre-configured templates.
- Data exchanges require manual configuration of Topics and Subscriptions, offering increased flexibility for custom use cases.
Pryme Intercompany Project App
- Includes pre-defined templates for Topics and Subscriptions that are tailored to project-related data (e.g., time entries, expenses).
- Simplifies the setup process and accelerates implementation for project-specific data sharing.

1.1 - Before you start
Things to do and consider before setting up the Pryme Intercompany app
Before setting up Pryme Intercompany, ensure that the following key considerations are addressed to facilitate smooth implementation and integration.
Party Code
- All companies involved must agree on a unique intercompany partner identification code, referred to as the Party Code. This code helps identify each company within the system.
- Establish a consistent and scalable naming convention. For instance, instead of using only a land code (e.g., “UK”), combine it with a number, such as “UK10,” “UK11,” and so on.
Data Conflicts
Ensure there are no data conflicts before setting up the app. Review and update existing entries to prevent issues.
Key Areas to Check:
- Project numbers
- Resource codes
- Other shared references
Tip!
Use the company code as a prefix in the number series for projects to avoid overlap and improve clarity.Master Data
Determine how master data will be managed across the group. Decide whether one company will act as the central master data provider for the entire group or if each company will manage its own master data. In the case of a centralized approach, designate one company to provide the master data to the others.
Key Considerations:
- Tables to Transfer: Identify which master data tables need to be shared.
- Field-Level Restrictions or Filters: Ensure any necessary restrictions, filters, or field-level mappings are identified and implemented.
- Code Harmonization: Check if consistent coding schemes are used across the companies for master data. If not, align and update the codes to ensure consistency throughout the group.
If Pryme Intercompany for Projects is installed, exclude projects and resources from the master data, as these are managed by the app.
Ensure that related tables required for importing data are included in the master data setup. This will prevent data errors due to missing or incorrect data and save time during setup.
Transfer Time, Expense, and Item Entries Between Companies
The Pryme Intercompany Project App includes two predefined templates for transferring time entries and project ledger entries. These templates can be used individually or together.
Time Entries Template
Functionality:
- Transfers time entries to the External Time Entries table when timesheets are submitted by the performing company.
- The project manager in the selling company can preview the entries, approve them, and add comments in an approval flow for informational purposes only.
- After posting, project ledger entries are created in both the performing and selling companies.
Limitations:
- Only time entries will be transferred. Entries moved between projects using Move Entries or a Project Journal will not be transferred through intercompany automation, as they do not create time entries; only project ledger entries are created.
Project Ledger Entries Template
Functionality:
- Transfers posted time, expense, and item entries to the Project Journal. When posting these entries, Project Ledger Entries are created in the selling company.
Limitations:
- Preview and Approval: Project managers in the selling company will not be able to preview time entries before posting.
Combining Templates
To preview time entries (and use the approval flow) and also transfer expenses and item entries, use the templates together.
- Time Entries β Time and Resources
- Project Ledger Entries β Expenses and Item Entries
1.2 - Basic setup
Learn about the basic set up that needs to be done before you start setting up parties, topics and subscriptions in Pryme Intercompany
Add your Party Code
Each company must have a unique Party Code for identification. A naming strategy should be agreed upon with all companies within the group to ensure consistency in Party code naming. Follow these steps to set it up:
- Select the π icon, enter Pryme Intercompany Setup, and choose the related link.
- Enter a Party Code in the My Party Code field.
Exclude a Dimension in the Intercompany Data
If local dimensions are used by your company (i.e., dimensions relevant only for a specific company) and should not be shared with other companies, they can be excluded from the Topic Message. Follow these steps:
- Select the π icon, enter Dimensions, and choose the related link.
- Set Skip for Intercompany (IDM) to On/Selected for any dimension to exclude.
Expense Payment Type
When using the Project Ledger Entries functionality to transfer expenses between companies, add an Expense Payment type to prevent expenses from posting to the general ledger. The general ledger will be updated when the Purchase Invoice is posted. This Expense Payment Type is specifically for intercompany transactions.
- Select the π icon, enter Expense Payment Type, and choose the related link.
- Create a new expense payment type, setting the Expense Payment Function to Company Paid and the Expense Posting to NONE.
- Select the π icon, enter Project Expense Posting Setup, and choose the related link.
- Create an Expense Code for each code and assign the newly created Expense Payment Type.
- Complete the necessary fields. Hover over each field for a short description.
Permissions
Users who need to send projects to other companies must have the USER IDMYME permission.
1.3 - Step by step Project, Time, Expense, Item
Step by step how to setup Intercompany for Project and Time entries
When setting up Pryme Intercompany Projects, it is essential to follow a structured approach to ensure proper configuration of both sending and receiving companies for transferring projects and time entries. The process involves setting up Parties, Topics, and Subscriptions in the correct order. Below is a step-by-step guide to help with the setup process.
In Pryme Intercompany Projects, data can be transferred using two pre-defined templates. These templates can be used separately or in combination, depending on the types of data being transferred between companies. More details can be found here.
- Time Entries: This template is used for transferring time entries.
- Project Ledger Entries: This template includes time entries, as well as expenses and item entries.
For bi-directional data transfer, set up the Topics and Subscriptions in both companies.
Parties
- Create a Party in Company A for Company B.
- Create a Party in Company B for Company A.
Project
- Create a Topic in Company A. Select the template for Projects.
- Create a Subscription in Company B for Projects on the Party Code for Company A.
- Review and update the table definitions.
Time (Alternative 1)
The pre-defined Time Entries template transfers resources and time entries. When a timesheet is submitted, the entries are transferred to External Time Entries, allowing a project manager to preview the entries. An approval flow is also available for informational purposes only.
- Create a Topic in Company B. Select the template Time Entries.
- Create a Subscription in Company A for Time Entries on the Party Code for Company B.
- Review and update the table definitions.
Expense and Item Entries
If the Time Entries template is used and project ledger entries for expenses and items should also be transferred, use the Project Ledger Entries template for this purpose.
- Create a Topic in Company A. Select the template for Project Ledger Entries.
- Review and update the table definitions. Add a Condition on the Type field to include only G/L Account and Item in the data message.
- Create Expense Payment Types in Company B and update the Expense Posting Groups.
- Create a Subscription in Company B for Project Ledger Entries on the Party Code for Company A.
- Review and update the table definitions.
Time (Alternative 2), Including Expenses and Item Entries
If project ledger entries for time, expenses, and items need to be transferred without the option for a project manager to preview the time entries, use the Project Ledger Entries template. With this template, project ledger entries are transferred to a project journal, where they can be posted.
- Create a Topic in Company A. Select the template Project Ledger Entries.
- Review and update the table definitions.
- Create Expense Payment Types in Company B and update the Expense Posting Groups.
- Create a Subscription in Company B for Project Ledger Entries on the Party Code for Company A.
- Review and update the table definitions.
Summary Table
Company A | Company B |
---|
Parties | |
1a | Create a Party for Company B. |
1b | Create a Party for Company A. |
Project | |
2a | Create a Topic. Select the template for Projects. |
2b | Create a Subscription for Projects from Company A and update the table definitions. |
Time, Alternative 1, via Time Sheet (External Time Entries) | |
3a | Create a Topic. Select the template for Time Entries. |
3b | Create a Subscription for Time Entries from Company B and check the table definitions. |
Expense and Item Entries (in addition to Time Entries) | |
4a | Create a Topic. Select the template for Project Ledger Entries. Update the table definitions. Add a Condition to include only G/L Account and Item in the data message. |
4b | Create Expense Payment Types and update the Expense Posting Groups. |
4c | Create a Subscription for Project Ledger Entries from Company B and check the table definitions. |
Time, Alternative 2, via Project Ledger Entries (includes expenses and items) | |
5a | Create a Topic. Select the template for Project Ledger Entries. Update the table definitions. |
5b | Create Expense Payment Types and update the Expense Posting Groups. |
5c | Create a Subscription for Project Ledger Entries from Company A and check the table definitions. |
1.4 - Parties
Learn how to setup a Party, a company in Business Central sharing data with other companies.
A Party refers to a Business Central company that shares data with other companies. Each Party can send and receive data. All companies involved in data sharing must be set up as a Party.
Before setting up the Parties, ensure a consistent format for Party Codes is chosen. It is recommended to combine a land code with a number for uniqueness and clarity (e.g., UK10, UK11).
Set Up the Standard Party Code
- Choose the π icon, enter Pryme Intercompany Setup, and then select the related link.
- Enter the Party code in the My Party Code field.
Parties
Each company must have a unique Party code to identify it. Establish a consistent naming strategy and adhere to it.
- Choose the π icon, enter Parties (IDM), and then select the related link.
- Fill in the required fields. Hover over a field to read a short description.
Party Groups
A Party Group is a subset of parties that can be used in a Topic to restrict which companies are allowed to receive data.
- Choose the π icon, enter Party Groups (IDM), and then select the related link.
- Fill in the required fields. Hover over a field to read a short description.
- Enter the code of the Parties that should be grouped under the Parties subpage.
1.5 - Topics
Learn how to set up Topics in Pryme Intercompany, used for publishing data to other Business Central companies.
Topics are used for publishing data to other parties. Topics themselves do not send data directly but act as a notification system that alerts subscribers to pull data.
The Topic defines the types of data (tables and fields) that are available to be transferred to other parties. Conditions can be added to filter and control which data should be transferred.
Topic card
- Choose the π icon, enter Topics (IDM), and select the related link. Fill in the fields as necessary. Hover over a field to read a short description. Some of the most important fields are as follows:
Field | Comment |
---|
Message processing | Pryme Intercompany Masterdata -> Generic |
| Pryme Intercompany Project -> Project, Time entries or Project ledger entries. |
Subscription type | This field is used to restrict the Topic to a specific Party or to a group of Parties. |
Subscription Code | If the Subscription Type is Party or Group, add the Party or Party group to whom data is published the Topic. |
- Open the Topic Tables action under Related.
Transfer time entries
Two predefined templates are provided for transferring time entries: Time entries and Project ledger entries.
Time entries
This template transfers both time and resources. Once time entries are submitted, they are transferred to the External Time Entries table in the receiving company. This enables project managers in the selling company to preview the entries. Additionally, an approval flow is included for informational purposes.
When time entries are posted in the performing company, project ledger entries are automatically created in both the selling and performing companies.
Project ledger entries
This template transfers time (excluding resources), expenses, and item entries. It creates transactions in a project journal, and when posted, project ledger entries are generated in the selling company. Unlike the Time Entries template, this option does not include preview or approval functionality when the timesheet is submitted in the performing company.
Both templates cannot be used simultaneously for time entries, as this will result in duplicate project ledger entries. However, the templates can be used in combination for different purposes:
- Time Entries: For transferring time and resources.
- Project Ledger Entries: For transferring expenses and item entries (add a Condition to only include Type g/l account and Item).
Note!
The template Project ledger entries is a preview feature and should be tested in a sandbox environment. Contact support for use in a production environment.Topic tables
There is a difference between the two intercompany apps when setting up Topic tables:
- Pryme Intercompany Masterdata - Tables and table definitions must be added manually. By default, all fields are included in the data message unless specified otherwise.
- Pryme Intercompany Project - Predefined templates are available, with tables and table definitions already populated.
- Select New and search for the table to add.
- Fill in the fields as necessary. Hover over a field to read a short description. Some of the most important fields are as follows:
Field | Comment |
---|
Allow On-Demand Publish | Enables users to manually publish records to this topic using an on-demand page action, provided the conditions are fulfilled. This field is valid only for tables with special on-demand functionality. |
Conditions | Use this field to set filters that define whether data should be included or excluded in the Topic record. |
Included fields | Use this option to exclude specific fields from the Topic. It opens Message Data Content (IDM), where the restrictions are defined. If Pryme Intercompany Project is installed, and the transfer pricing list is in another currency than LCY, the fields Invoice currency code and Time sheet currency code must be added in the Topic. |
- Go back to the Topic card and Set status to Ready.
- Restart the company. The changelog will be updated with new and updated entries that will generate Topic records for the subscribers.
Transfer all entries in a table
The intercompany apps only transfer new and updated entries. To ensure consistency across all subscribing companies, transfer all entries in a table using the Topic Table -> Create Messages function. Key points to remember:
- Use this for Master data tables after setting up the Topic to synchronize data across companies.
- This action adds and updates entries but does not delete records in subscribing companies.
- If invalid records exist in subscribing companies, manual cleanup may be required.
Update a topic with new fields
To add a new field to an existing Topic, follow these steps:
- Choose the π icon, enter Topics (IDM), and select the related link.
- Set the Topic to On hold.
- Open the Topic Tables action under Related.
- Click on Included fields. Message Data Content (IDM) will open.
- Go back to the Topic card and Set status to Ready.
- Restart the company.
- Add the field in the Subscription. See Updating a Subscription after changing the Topic.
1.6 - Create a subscriptions
Learn how to setup Subscriptions, used for receiving data from other Business Central companies.
After setting up the Topic, create a Subscription for each Party in the receiving company or companies. Each Subscription corresponds to a Party from which data is received.
In a multiple Business Central environment using Azure Service Bus, run the Topic in the sending company before setting up the Subscription.
Subscription Card
- Select the π icon, enter Subscriptions (IDM), and select the related link.
- Enter the Party code for the sending company and select the related Topic.
- Pryme Intercompany Project only:
- Inv. Setup template defines the default invoice template for intercompany projects. Leave blank to add templates manually.
- Res. price template specifies the transfer pricing list for projects.
- Review and adjust tables under Subscription Tables. Delete tables that should not be imported. Re-add deleted tables if needed (limited to tables present in the Topic).
- Use Subscription Fields to modify field-level data processing, mapping, and rules.
Subscription Fields
Subscription fields control how data is imported and processed. When importing a table, field-level mapping is possible, provided the field is included in the Topic message.
When changing or mapping a field, use the Comment field to document the changes. The Relation Table Caption specifies the related table. If a related table exists, the imported value must be present in the receiving company’s table; otherwise, the record will not be imported.
A field can be mapped in four different ways:
Type | Description |
---|
Value | One-to-one mapping. |
Filter | Conditional updates based on filters. |
Fixed | Assigns a fixed value to all imported transactions. |
Currency | Manages local currency conversions. |
Currency Mapping
Currency mapping ensures proper handling of differing local currencies (LCY) between companies. Setup requires configuring the Currency Code for each Party and the LCY Code in the General Ledger Setup.
- If the currency code in the subscription message is blank, the Currency Code from the Party code will be used.
- If the currency code in the subscription message matches the Currency Code on the Party code, the currency field will be set to blank.
Note!
When a record is received from another company through a Topic, a Subscription record is created. This record tracks its origin and whether it was created by another company or updated. If a record was originally created by another company, any local changes will not be sent to other companies. If a record, such as a payment term, was created outside the Intercompany (IC) process, there will be no agreement on ownership. Consequently, changes made across companies will be synchronized and transferred. To resolve such conflicts, update the Subscription record manually by setting the Data owned by party field.Subscription Fields in Pryme Intercompany Project
In the Pryme Intercompany Project app, specific fields must be mapped to ensure correct values in the receiving companyβs projects.
Project (Table 167 β Job)
Target Field No | Target Field Name | Mapping Value | Comment |
---|
5 | Bill-to Customer No. | Fixed | Always map to the sending companyβs customer number in the receiving company. |
20 | Person Responsible | | Verify if it matches the sending company. |
23 | Job Posting Group | | Verify if it matches the sending company. |
1011 | Invoice Currency Code | Currency | Use Currency if an intercompany transfer pricing list exists in another currency. |
2000 | Sell-to Customer No. | Fixed | If the customer table is not part of Master Data, map to the sending companyβs customer number. |
14045651 | Resource Invoice Type | Value | Map to T&M if a fixed price agreement exists. |
14045655 | Item Invoice Type | Value | Map to T&M if a fixed price agreement exists. |
14045656 | Expense Invoice Type | Value | Map to T&M if a fixed price agreement exists. |
14045674 | Project Manager PGS | | Verify if the resource matches the sending company. |
14045753 | Timesheet Currency Code | Currency | Use Currency if an intercompany transfer pricing list exists in another currency. |
Job Task (Table 1001 β Job Task)
Target Field No | Target Field Name | Mapping Value | Comment |
---|
14045764 | Contract Type PGS | Value | Map to T&M if a fixed price agreement exists. |
14045709 | Project Manager PGS | | Verify if the resource matches the sending company. |
Permissions (Table 14045676 - Permissions PM)
This table is not mandatory. If permission from the sending company is unnecessary, delete the table.
Target Field No | Target Field Name | Mapping Value | Comment |
---|
1 | No | | Verify if the resource matches the sending company. |
Time (Table 156 β Resource)
Target Field No | Target Field Name | Mapping Value | Comment |
---|
51 | Gen Prod Posting Grp | | Verify if it matches the sending company. |
58 | VAT Prod Posting Grp | | Verify if it matches the sending company. |
Note!
The Intercompany Project app does not include cost price as part of its default setup. Handle cost prices using one of the following approaches:
- Manually input the cost price for external resources in the receiving company.
- Automate using Resource Group / Resource Subgroup. Create a dedicated group/subgroup for IC resources and add transfer pricing rates. Map IC resources to the designated group/subgroup.
Project Ledger Entries (Preview Feature)
This feature transfers resource, expense, and item ledgers between companies. Testing should be conducted in a Sandbox environment before production use. Contact support to enable it in a production environment.
Job Journal Line (Table 210)
Target Field No | Target Field Name | Mapping Value | Comment |
---|
1008 | Currency Code | Currency | See Currency Mapping. |
14045810 | Expense Payment Type | Value | Map expense payment types for intercompany transactions. |
Test the Setup
After creating the Topic and corresponding Subscription, test the setup:
- Send one entry from the sending company.
- Run the subscription manually in the receiving company using Run Subscription.
- When successful, configure a Job Queue for automated subscription processing.
For details on job queue setup, see Set Up Job Queues.
Update a Subscription After Changing the Topic
If changes are made to the Topic field definitions, update the Subscription manually:
- Select the π icon, enter Subscriptions (IDM), and select the related link.
- Navigate to Update Source Fields under the Action tab.
- Open the Subscription Card.
- Select Subscription Fields in the table to update.
- Locate the field to add.
- In Source Field No, add the Table No (same as Target Field No).
1.7 - Run topics and subscriptions
Learn how to run topics and subscriptions, or setup job queues to run them automatically.
Once the Topics and Subscriptions are set up, data transfer can be done manually or automatically using a Job queue. In a sandbox environment, it is recommended to run Topics and Subscriptions manually, as the Job queue is set to On hold after each run.
Run Topics
The Schedule run on Changelog value in the Topic determines whether it should be run. If set to FALSE, the Topic must be started manually using Action -> Run Topic or scheduled through a Job queue.
- Choose the π icon, enter Topics, and select the related link.
- Go to Actions β Create Job Queue Entry.
- Fill in the fields as necessary. Hover over a field to read a short description.
- Set Status to Ready.
Run Subscriptions
Manually
- Choose the π icon, enter Subscriptions (IDM), and select the related link.
- Choose the Subscription to run and select Run Subscription under the Home action.
- If a prompt appears about updating values, always choose the selected answer.
Job Queue
- Choose the π icon, enter Subscriptions (IDM), and select the related link.
- Go to Actions β Create Job Queue Entry.
- Fill in the fields as necessary. Hover over a field to read a short description.
Schedule jobs to run automatically.
Note!
If a job queue is created in a sandbox, it will automatically be set to On hold after each run.1.8 - Set up Azure Service Bus
Learn how to setup an Azure Service Bus connection for intercompany data transfer between Business Central companies in different environments.
When using multiple Business Central environments, you can use Azure Service Bus to transfer data between the companies. Azure Service Bus is a cloud-based messaging service that enables you to send messages between applications and services. Azure Service Bus supports a set of cloud-based, message-oriented middleware technologies including reliable message queuing and durable publish/subscribe messaging. For more information, see Azure Service Bus.
Before configuring the connection to Azure Service Bus in Business Central, a namespace must be created in Azure Service Bus. The namespace is the container for all messaging components in Azure Service Bus. The namespace is created in the Azure portal.
To create a namespace in Azure Service Bus
- Register an application for API connection: Register an application (MS Learn)
- Save the Application (client) ID for later
- Create a Client Secret and save the secret value for later.
- Create service bus namespace, see Create a namespace (MS Docs). It must be Standard tier or better.
- Save the Name of the namespace for later
- Save the Subscription Id where the Namespace was created for later
- Under Access control (IAM), add the registered application from step 1 as Role, Azure Service Bus Data Owner: Authenticate and authorize an application (MS learn)
After completion you will have the following values to insert into Business Central:
- Directory (tenant) ID from Azure AD
- Application (client) ID from the created App Registration.
- Client Secret from the created App Registration.
- Subscription Id where the ASB Namespace was created
- Azure Service Bus Namespace name from the created Azure Service Bus Namespace
Note
It is important to clearly separate the test and production environments. The test and production environments must never use the same Azure Service Bus namespace.
The test environment must be set up with a separate Azure Service Bus namespace, and the production environment must be set up with a separate Azure Service Bus namespace. If multiple test environments are used, each test environment must be set up with a separate Azure Service Bus namespace.To set up Azure Service Bus in Business Central
- Choose the π icon, enter Azure Service Bus (IDM), and then select the related link.
- Fill in the fields as necessary. Hover over a field to read a short description.
Tip
When an environment is copied to a sandbox, the Azure Service Bus connection is automatically disabled in the sandbox. If you want to use enable it, remember to set up and select a namespace dedicated to that sandbox.To set parties to use Azure Service Bus
- Choose the π icon, enter Parties (IDM), and then select the related link.
- Select the party to set up for Azure Service Bus.
- Select Azure Service Bus in the Data Transfer Type field.
2 - Process
Learn about how to transfer project, time and expenses in Pryme Intercompany Project
Once Topics and Subscriptions are configured, intercompany transactions can be transferred automatically.
Projects
An intercompany project is created the same way as any other project. The project is only transferred when the companies to which the project should be sent are selected, even if the Topic publishes to all companies.
Steps to Send a Project to Another Company:
- Choose the π icon, enter Project list, and select the related link.
- Select the project to send. Navigate to Send to company under the Action tab.
- Select the companies to which the project should be transferred.
Unmarking a company will stop updates to that company but will not delete the project.
Troubleshooting Missing Companies in the List:
- Verify the receiving company is set up as a Party.
- Confirm the Topic allows projects for that party.
- Update the Subscription (IDM) in the receiving company.
If Allowed On-Demand Publish is set to FALSE on the Topic, all projects will transfer automatically without selection.
Note!
Only users with USER IDMYME permission can select to transfer a project through the Intercompany automation.Note!
Tasks must only be added in the copany that owns the project, not in the receiving company.Time and expenses
The app provide two Topics/Subscription for transfering of time entries; Time entries and Project ledger entries.
These can be used separately or in combination. If you use them in combination, time entries are transferred with Time entries, and expenses and item entries with Project ledger entries.
Time Entries
When submitting a time sheet in the performing company, time entries are transferred to the External Time Entries table. This table is for informational purposes only. All changes to entries must be made in the performing company.
Viewing External Time Entries:
- Navigate to Project list -> Related -> IDM -> External Time Entries.
- Navigate to Project Plan -> External time (Not posted) column.
- Search for External Time Entries. This option allows viewing all External Time Entries for projects where the user is the project manager or responsible person.
- Project executives can view all transactions across all projects (with filtering options to restrict the view).
Approval status and comments in External Time Entries are transferred and visible when approving time in the performing company. When entries are approved and posted in the performing company, project ledger entries are created in both companies.
Note!
Only time entries will be transferred between companies. This excludes entries moved via Move Entries or Project Journals.Project ledger entries
This feature is in preview mode and should be tested in a Sandbox environment. Contact support if it is needed in a production environment.
This feature transfers time, expense, and item entries and enters them into a project or job journal. The journal can be posted automatically or manually when the Subscription is run.
There is no approval process for these entries, unlike Time Entries.
3 - Design Details
Intercompany (Master) Data Management enables Business Central Companies to share data.
Data is serialized to Messages and organized in Topics by the Publisher.
The Subscriber can then setup Subscriptions on the Topics thereby receive the data.
This section will cover the underlying thoughts and architecture behind IDM.
Messaging pattern
Data is transferred between Companies in so called Messages.
A Message that is made available in a Topic by a Publisher is referred to as a Topic Message and a Message that has been received by a Subscriber is known as a Subscription Message.
IDM has been built with inspiration from the Publish-Subscribe pattern as well as the Client-Server pattern making it a hybrid that benefits from strengths in both models.
The main sequence for new data to be published is as follows.
- User changes some data.
- Data change is registered by Publisher.
- Publisher serializes changed data into Messages.
- Publisher notifies Subscriber about new Messages.
- Subscriber requests new Messages from Publisher.
- Publisher returns new Messages to Subscriber.
- Subscriber saves each received Message.
- Subscriber registers information about consumed Messages with Publisher.
- Subscriber deserializes and processes each Message.
The above flow is illustrated in the following sequence diagram.

The main sequence is a hybrid of Publish-Subscribe and Client-Server and the following table lists key features from each model which have been implemented in the general Messaging Pattern.
Pattern | Highlights |
---|
Publish-Subscribe | - Publisher serializes data to Messages without direct data transfer.
- Publisher organizes Messages in Topics.
- A Topic can have multiple Subscribers.
- Publisher immediately notifies Subscribers.
- Subscribers registers Message consumption with Publisher.
|
Client-Server | - Messages are transferred by request of Subscriber.
- Data serialization and Message Processing is aligned between Topic and Subscription.
- Publisher has knowledge about each Subscriber.
- Publisher and Topic is kept within the same System.
- A Publisher can only post Messages to its own Topic.
|
Publish-Subscribe
Messages are organized in Topics that are made available to multiple Subscribers. A Publisher posts new messages to the Topic and notifies Subscribers as illustrated on the following flow chart.

This allows for a decoupling between publishing new data and consumption, where Subscribers will receive the new data.
Data is serialized and stored as Topic Messages before notifying Subscribers which has the following benefits.
- Messages can quickly be returned to Subscribers when needed as no further processing is required.
- Messages can be marked to only be published to a subset of Subscribers.
Each Topic can have multiple Subscribers and the Publisher does not necessarily need to know each Subscriber beforehand.
Client-Server
Data is only transferred when Subscribers requests new Messages from Publisher as shown the below illustration.

In this way the Subscriber can decide when data transfer should take place.
The Topic is placed in the Publisher system to allow for the Topic to contain full information about the communications protocol which is managed by the Message Broker.
Message Broker
Functionality in IDM is grouped into the following three main areas.
IDM has been implemented with extensibility in mind and functions involving these three areas are placed in Codeunit Message Broker IDMYME.
In this way it is possible to use any of the predefined interfaces as well as have a partner implement new ones to fit your specific needs while still making use of the overall IDM framework.
Each implementation consists of a number of explicitly required functions defined by the AL interface as well as implicitly required Subscriber functions which allows for additional features and differentiations to be implemented with fallback to default functions.
The following sections will describe each of the three interfaces in detail.
Data Serialization
In Business Central data is stored as records in tables and can not be directly transferred to other Companies.
Therefore when data is saved as Messages by the Publisher it is first serialized to text and when Messages are processed by the Subscriber it is deserialized back from text to data.
Serialization can be performed in a number of ways and the key point is that serialization and deserialization should be done in more or less the same way when both Publisher and Subscriber is a Business Central Company.
IDM therefore provides an interface for Serialization that can both be defined on Topic and Subscription to ensure consistency during integration.
The technical name for the Data Serialization interface is IData Serialization IDMYME and the following table outlines it from a programming point of view.
Function | Type | Area | Description |
---|
Serialize() | Interface | Serialization | Invoked when data is serialized. |
Deserialize() | Interface | Serialization | Invoked when data is deserialized. |
IDM comes with a default Json Serialization but the Data Serialization interface can be extended to match your specific needs.
Data Transfer
In IDM, Data Transfer consists of three areas:
Area | Description |
---|
Notification | Publisher sends notification to Subscriber that new Messages have been published. |
Topic Metadata | Subscriber receives Topic Metadata from Publisher to understand the Message context. |
Message | Subscriber receives Topic Messages from Publisher and saves it as Subscription Messages. |
In all three areas, both Publisher and Subscriber must request and respond accordingly to ensure consistency. To help this along Data Transfer has been implemented in a single interface, IData Transfer IDMYME, that is defined on Parties (IDM) in by both Publisher and Subscriber.
and the following table outlines it from a programming point of view.
Function | Type | Area | Description |
---|
NotifySubscriber() | Interface | Notification | Invoked when a Publisher notifies a Subscriber about new Messages. |
FindTopics() | Interface | Topic Metadata | Invoked when Subscriber lists Topics from a Publisher. |
FindICParties() | Interface | Topic Metadata | Invoked when Subscriber lists Parties (IDM) from a Publisher. |
RequestNewMessages() | Interface | Message | Invoked when a Subscriber requests new Messages from a Publisher. |
RegisterConsumedMessages() | Interface | Message | Invoked when a Subscriber registers Message Consumption with a Publisher. |
GetTopicTables() | Interface | Topic Metadata | Invoked when a Subscriber lists Topic Tables from a Publisher. |
Message Processing
Each Subscription Message is processed by the Subscriber and the default behaviour is to map tables and fields more or less 1:1 resulting in data from Publisher being replicated to Subscriber.
However, you might require some specific Message Processing where underlying data or procedures are taking into use and to support this the Message Processing interface has been provided.
The technical name for the Message Processing interface is IMessage Processing IDMYME and the following table outlines it from a programming point of view.
Function | Type | Area | Description |
---|
ProcessMessage() | Interface | Message Processing | Invoked when Message Processing is triggered. |
OnInitSubscriptionTables() | Subscriber | Subscription Metadata | Function OnInitSubscriptionTables in Codeunit Message Broker IDMYME is invoked whenever a Subscription initiates a Subscription Table from Topic Table metadata received from the Publisher. This function is optional and the default initiation will be used if an interface does not implement this function. |
OnInitTargetField2SourceField() | Subscriber | Subscription Metadata | Function OnInitTargetField2SourceField in Codeunit Message Broker IDMYME is invoked whenever a Subscription Field is initiated from a Source Field. This function is optional and the default initiation will be used if an interface does not implement this function. |
Enum Message Processing Type
The Role of the Publisher
A Publisher is a Party where a Topic has been created in the its company.
The Publisher posts data to a Topic and notifies Subscribers about new Messages.
When Subscribers requests new Messages then it is the Publisher that responds to those requests and returns new Topic Messages to Subscribers as well as Topic Metadata.
Topic
Published data is organized in Topics which have the following key features.
Feature | Description |
---|
Data content | Tables and Fields to be included is defined on each Topic. |
Subscription Filter | Topic can be defined to only allow Subscription from some Subscribers. |
Message Filter | Topic Messages can be filtered to only be available to some Subscribers. |
Metadata | Topic can provide Metadata to Subscribers to ease the process of setting up new Subscriptions. |
Message Queue | Published data is saved as Topic Messages to allow for immediate delivery upon demand where it is returned to Subscribers is chronological order. |
Notification | Information about notification sent to Subscribers is stored in Topic Register. |
The Role of the Subscriber
A Party where a Subscription has been created in its company is considered as being a Subscriber.
The Subscriber requests new Messages from a Topic at a Publisher and each Message is then saved and later on processed.
When receipt is completed then the Subscriber register receipt of Messages back to the Publisher.
Subscription
When a Subscriber wishes to receive data from a Topic a Subscription is created meaning there is a direct correlation between a Topic from a Publisher and a Subscription.
Subscription has the following key features.
Feature | Description |
---|
Topic | Subscription contains information about Publisher and Topic. |
Target data | Target Tables and -Fields is defined on each Subscription with a mapping from the Topics data content which is referred to as Source Tables and -Fields. |
Message Queue | Received data is saved as Subscription Messages to allow for asynchronous Message Processing in chronological order. |
Consumption | Information about last Message received from Publisher is stored in Subscription Register. |
3.1 - Topology
Learn about different configuration of multiple companies in multiple environments
Single environment
Hub and spoke
flowchart TB
Contoso --> Fabricam
Contoso --> Northwind
Contoso --> ProseWare
Mesh
flowchart LR
Contoso <--> Fabricam
Contoso --> Northwind
Fabricam --> ProseWare
Northwind <--> ProseWare
Northwind --> Fabricam
Contoso --> ProseWare
flowchart TB
Contoso --Chart of Accounts--> Fabricam
ProseWare --Items--> Northwind
Contoso --Chart of Accounts--> Northwind
Fabricam --Items--> ProseWare
Northwind --Resources--> ProseWare
Northwind --Resources--> Fabricam
Contoso --Chart of Accounts--> ProseWare
ProseWare --Items--> Contoso
Multiple Environments
flowchart TB
subgraph BC_Env_US
direction LR
Contoso
Fabricam
end
subgraph BC_Env_GB
direction LR
Northwind
ProseWare
end
ASB[(Azure Service Bus)]
Contoso<-->ASB
Fabricam<-->ASB
Northwind<-->ASB
ProseWare<-->ASB
5 - Pryme Intercompany Release Notes
3.0 (June 2024)
Application enhancements
External time approval
When external time entries are received, someone in the receiving company must review the entries before final approval in the performing company.
An approval status and comment can be set on the external time entry. This will then be transferred back to the original time entry, so the approver of that time entry will know if the time entry can be approved or needs changes.
Fixes and minor adjustments
- #118 Let the user if you have not filled in the options in Project ledger Entries subscription
- #123 Error when you send a project without having the admin permission set
2.7 (May 2024)
Application enhancements
Automatic currency mapping
When sending records between companies with different currencies, the system can automatically map the local currency codes.
The mapping type Currency can be used on subscription fields related to currency. The system will then automatically map a blank currency code to the local currency code of the sending party. Records with a currency code matching that of the receiving party will be mapped to blank.
The field “Currency Code” on each party must be defined as well as the “LCY Code” on the general ledger setup.
Fixes and minor adjustments
- #101 Time sheet currency code is not used when creating the PLE
2.6 (April 2024)
Application enhancements
Easier creation of parties
The Parties page have been restructured. When creating a new party, the system will suggest a name based on the company name.
A new field “My Party Code” have been added to the Pryme Intercompany Setup page. This field is used to set the default party code for the company. The party code is used to identify the company in intercompany transactions.
Conditions for sending records
Previously, the conditions on a topic limited which records were sent to the receiving company when using the “Create Messages” action.
Now the conditions always control which records are sent. If a record has passed the conditions and thus have been sent, it will always be sent in the future even if it no longer passes the conditions. This is needed to support scenarios like conditions based on a status field that is updated after the record is sent.
Easy update of subscription fields
When fields are added to a subscription, the corresponding topics will often need to have the fields added as well. Previously it was not obvious how to do that.
A new action “Update Subscription Field” have been added to the Subscriptions page, the Subscription page and the Subscription Tables page. This action will add the fields to the topics.
Transfer project ledger entries (PREVIEW)
Project Ledger Entries can now be transferred between companies. A topic set up with “Project Ledger Entries processing type will transfer the entries to the company where the project originated. The entries are either automatically posted or created as journal lines for manual review and posting.
Conditions can be set up to control which entries are transferred, like only expense or items. By default, the entries are transferred with the price becoming the cost.
Note that the Time Entries process will still post project ledger entries to the receiving company. So if the Time Entries process is used, the Project Ledger Entries process should not be used for resource entries. In a future version there will be an option to not post external time entries to the project ledger.
This is a preview feature and to be tested in a sandbox environment. Please contact support if you want to use it in a production environment.
Fixes and minor adjustments
- External time entries now use the quantity to invoice as the quantity to post. This aligns better with the final IC invoicing.
- Fixed price tasks are now converted to chargeable T&M tasks in the receiving company.
- The External Time Entries page now filters the entries based on project permissions.
- The “Send to Company” action have been added to the Project Card and Project Plan.
- #96 Recreating a subscription with a default fixed mapping fails
- #98 Lookup in subscription mapping to wrong table
- #106 You need ADMIN IDMYME to send a project through intercompany
2.5 (February 2024)
Application enhancements
Manage subscriptions in a single card
Subscriptions can now be managed from a single card showing both general settings and the included tables. This makes it easier to see the status of a subscription and to manage the subscription. Special options for different proccessing methods are also managed on the card. The card is available from the Subscriptions page.
Apply a price template to new IC projects
When a new intercompany project is created, a price template can be applied to the project. This makes it easier to ensure that the project is set up correctly from the start. The price template is selected on the Subscription Card page.
Apply an invoice setup template to new IC projects
When a new intercompany project is created, an invoice setup template can be applied to the project. This makes it easier to ensure that the project is set up correctly from the start. The invoice setup template is selected on the Subscription Card page.
The mapping of fields between the sending and receiving companies is now more consistent and has better performance.
The default mapping type in subscriptions is now “None”. This relieves the system from unnecessary checking if a mapping exists and makes it easier to understand the mapping.
A new mapping type “Fixed” has been added. This is used when the field is always the same receiving companies independent of the value in the sending company. Effectively this can replace the use of mapping with filter from * to a value, but will perform better.
Fixes and minor adjustments
- #68 Include “Timesheet PGS” for Resource and also way set as false.
- #85 Default retention policy in new installations set to 2 months.
2.4 (January 2024)
Application enhancements
Subscription progress
The progress of a manual subscription run is now shown from the Subscriptions page. This makes it easier to see the progress of a run and to identify any errors.
External time entries in project plan
External time entries that are not yet approved and posted should be visible to the PM directly without the need to open the list of external time entries.
A column in the project plan “External Time (Not Posted)” that specifies the total amount of time on external time entries that are not yet approved and posted has been added.
Fixes and minor adjustments
- #62 Problem with dimensions on tasks
- #63 Tasks received via IC can have too many dimensions
- #64 New customer in sending company stops the subscription in the receiving company
- #53 Topics - Auto Init Subscriptions doesn’t work
- #55 External Time Entries - Filter setting is not correct in view Not Posted
- #76 Time entries on Fixed price becomes chargeable when running subscription
- #81 Copying a company with Azure Service Bus active can deactivate Azure Service Bus
- #66 Special permissions are needed to allow logging changes to the Changelog table
2.3 (November 2023)
Application enhancements
The list of data content fields now allows searching. This makes it easier to find fields in long lists.
Fixes and minor adjustments
- #34 Filter is not working correctly in Topics
- #35 General fit-n-finish. Included Fields in subscription tables is renamed to Subscription Fields. Source Data Content in subscription tables is renamed to Source Fields.
2.2 (September 2023)
Application enhancements
Skip dimensions for intercompany data
Specific dimensions can be omitted for intercompany data. This is done by setting the Skip for Intercompany (IDM) field on the Dimensions page.
Control re-publishing of intercompany data
When publishing records tables that are also in subscriptions, there is a risk that a received record is published again. This can lead to loops.
To avoid this, the new default is that received records are not published again. This can be overridden using the “Allow Republishing” field on the Topic Tables page.
Fixes and minor adjustments
- #28 Can not open Topics wizard from IDM role center
2.1.1 (September 2023)
Fixes and minor adjustments
- #6 All dimensions are included for Projects, Tasks and Resources [Intercompany Project only]
- Table relations are shown for subscription fields
- Option in Changelog Setup IDM to only log modification when tracked fields are changed. Experimental
2.1 (August 2023)
Application enhancements
Intercompany Project app
New app with predefined processing for intercompany projects and time.
Fixes and minor adjustments
- Preview posting breaks when a topic table is modified during posting.
6 -