Configuring scenario mapping /visma-net-erp/help/integration/configuring-scenario-mapping section You perform the mapping of an import scenario on the Mapping tab of the Manage import scenarios (SM206025) window, and you perform the mapping of an export scenario on the Mapping tab of the Manage export scenarios (SM207025) window. 2026-02-19T17:09:06+01:00 # Configuring scenario mapping You perform the mapping of an import scenario on the Mapping tab of the Manage import scenarios (SM206025) window, and you perform the mapping of an export scenario on the Mapping tab of the Manage export scenarios (SM207025) window. For more information: [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/), [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/). You use similar principles when configuring the mapping of either type of scenario. In this chapter, you can find the main ideas that apply to scenario mapping. Most of the ideas are described in examples of import scenarios. However, you can configure the mapping of an export scenario similarly. The topics of this chapter also describe information that is specific to mappings of export scenarios. Configuring scenario mapping /visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping page You perform the mapping of an import scenario on the Mapping tab of the Manage import scenarios (SM206025) window, and you perform the mapping of an export scenario on the Mapping tab of the Manage export scenarios (SM207025) window. 2026-02-19T17:09:06+01:00 # Configuring scenario mapping You perform the mapping of an import scenario on the Mapping tab of the Manage import scenarios (SM206025) window, and you perform the mapping of an export scenario on the Mapping tab of the Manage export scenarios (SM207025) window. For more information: [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/), [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/). You perform the mapping of an import scenario on the **Mapping** tab of the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window, and you perform the mapping of an export scenario on the **Mapping** tab of the [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/) window. You use similar principles when configuring the mapping of either type of scenario. In this chapter, you can find the main ideas that apply to scenario mapping. Most of the ideas are described in examples of import scenarios. However, you can configure the mapping of an export scenario similarly. The topics of this chapter also describe information that is specific to mappings of export scenarios. General recommendations and limitations of data import /visma-net-erp/help/integration/configuring-scenario-mapping/general-recommendations-and-limitations-of-data-import page In this topic, you will find general recommendations for data import, including its limitations. 2026-02-19T17:09:06+01:00 # General recommendations and limitations of data import In this topic, you will find general recommendations for data import, including its limitations. ## General recommendations for importing accounts and subaccounts When you import accounts and subaccounts to Visma Net, consider the following general recommendations: + In your new Visma Net implementation, the chart of accounts may differ from the chart of accounts in the legacy application from which you are going to import the data. When the company switches to newer software, the length of the account identifier is usually extended to include more characters; in many cases, several zeros are added in the middle of or at the end of the account identifier. In such a simple case, consider inserting these additional characters during the import process by using a formula. + In Visma Net, subaccount identifiers are segmented, but the separator characters are not part of the subaccount identifier as it is saved in the database. If subaccount identifiers in the external file have segments separated by a character, use a formula such as the following to remove this character from the external data during import. `replace([Sales Subaccount],'-','')` + If you import subaccounts from your subsidiary or parent company, consider the differences in their segment structures. You may need to add a segment when you are importing from a subsidiary or remove a segment when you're importing from a parent company. ## General recommendations for importing supplier and customer data Here are some general recommendations for importing supplier and customer data to Visma Net: + In Visma Net, supplier and customer numbers may be segmented. You can create a formula to insert any missing segments into the imported IDs. + If the external file contains fields with supplier or customer data that is not tracked in Visma Net in built-in fields, you can create and use attributes to store this supplier or customer data in Visma Net. Attributes are created for supplier or customer classes, and then can be entered and tracked for individual suppliers and customers. + If customer and supplier records have numerical IDs in the source and you want to retain these IDs in the new implementation, perform the following steps: + In the [Segment keys (CS202000)](/visma-net-erp/help/common-settings/common-settings-windows/segment-keys-cs202000/) window, configure the **SUPPLIER** and **CUSTOMER** segmented keys as alphanumeric one-segment keys. + Import the records with their IDs unchanged. + In the [Number series (CS201010)](/visma-net-erp/help/common-settings/common-settings-windows/number-series-cs201010/) window, assign appropriate numbering sequences to the **SUPPLIER** and **CUSTOMER** segmented keys with the appropriately adjusted last-used numbers (equal to the largest number used in the imported data for suppliers and customers, respectively) to assign numeric IDs to new customers and suppliers. When a Visma Net user creates a new supplier or customer account in the standard way in the [Suppliers (AP303000)](/visma-net-erp/help/supplier-ledger/supplier-ledger-windows/suppliers-ap303000/) or [Customers (AR303000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customers-ar303000/) window, some fields are populated automatically with the values provided by the default supplier or customer class or the supplier or customer class the user has selected instead. To use the functionality of classes while you are importing supplier or customer data, before import, analyse the source data and create as many classes as there are groups of customers or suppliers in the source (or source file) that would need accounts, subaccounts, and other common information you can specify among the class settings. When you create classes, take one of the following approaches: + If one group of settings can fit all customers or suppliers, use just one default class. To use default values from the default supplier or customer class, you don't even need to do anything specific, such as mapping the **Supplier class** field or **Customer class** field to any data. + To use default values from a particular class, in the **Field/action name** field of the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window, you can assign the class to the **Supplier class** field (when you are importing supplier records) or to the **Customer class** field (when you are importing customer records) directly as a literal or assign a class conditionally, by using appropriate formulas that are based on customer or supplier properties. Filling in the class ID field requires a commit to the database and a window refresh. ## General recommendations for importing documents and batches When you are importing batches, supplier ledger documents, or customer ledger documents, consider the following recommendations regarding the mapping: + **Batch or document IDs**: By default, Visma Net automatically generates identifiers for general ledger batches and supplier ledger and customer ledger documents. For example: When importing batches to the [Journal transactions (GL301000)](/visma-net-erp/help/general-ledger/general-ledger-windows/journal-transactions-gl301000/) window, even if you map the **Batch number** field to an external field holding batch IDs, when the record is saved, the original batch ID will be overwritten by an automatically generated ID. If you plan to update the imported batches later, you will not be able to recognise the imported records by their new IDs. To make updating of the imported records possible, you need to save the original ID to another field to be able to recognise the previously imported records. You can use the **Description** field for this purpose. As an alternative to this approach, you can configure manual numbering of batches or documents in the [Number series (CS201010)](/visma-net-erp/help/common-settings/common-settings-windows/number-series-cs201010/) window, import them with their IDs defined in the source, and then configure the system to use auto-numbering again. + **Batch control totals**: When importing batches to the [Journal transactions (GL301000)](/visma-net-erp/help/general-ledger/general-ledger-windows/journal-transactions-gl301000/) window, if you are mapping the **Control total** field, take into account whether the **Validate batch control totals on entry** check box is selected in the [General ledger preferences (GL102000)](/visma-net-erp/help/general-ledger/general-ledger-windows/general-ledger-preferences-gl102000/) window. If it is selected and you map the **Control total** field to the source field, during data import until all batch entries are imported, the system will display the error, indicating that the control total does not match the credit total or debit total. In this case, in the Import scenarios window, select the **Ignore error** check box for the row that maps the **Control total** field to force the system to ignore such errors during the import process. + **Document amounts**: When importing documents to the, if you are mapping the **Amount** field, take into account whether the **Validate document totals on entry** check box is selected in the [Supplier ledger preferences (AP101000)](/visma-net-erp/help/supplier-ledger/supplier-ledger-windows/supplier-ledger-preferences-ap101000/) or [Customer ledger preferences (AR101000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customer-ledger-preferences-ar101000/) window. If it is selected and you map the **Amount** field to the source field, during data import until all document details are imported, the system will display the error, indicating that the document is out of balance. In this case, in the Import scenarios window, select the **Ignore error** check box for the row that maps the **Amount** field to force the system to ignore such errors during the import process. + **Mapping Statuses**: The possible batch and document statuses in the source may be different from those in Visma Net. To manage this discrepancy, you might want to exclude the **Status** field of the applicable window from mapping. In this case, the imported batch or document will get one of the following statuses: + **On hold**, if the **Hold batches on entry** check box is selected in the [General ledger preferences (GL102000)](/visma-net-erp/help/general-ledger/general-ledger-windows/general-ledger-preferences-gl102000/) window or the **Hold documents on entry** selected is selected in the [Customer ledger preferences (AR101000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customer-ledger-preferences-ar101000/) or [Supplier ledger preferences (AP101000)](/visma-net-erp/help/supplier-ledger/supplier-ledger-windows/supplier-ledger-preferences-ap101000/) window + **Open**, if the **Hold batches on entry** or **Hold documents on entry** check box is not selected in the appropriate window ## General recommendations for importing attributes Attributes in Visma Net make it possible for users to specify additional properties (those not already defined in the applicable Visma Net window) of entities, such as stock items and customers. The list of attributes is specified for an entity class, so that entities assigned to different classes may have different sets of attributes. To import data with attributes, you have to create a scenario for each class if the applicable classes have different sets of attributes. In the mapping of the scenario created to import entities of a particular class in the [Schedule import scenarios (SM206035)](/visma-net-erp/help/integration/integration-windows/schedule-import-scenarios-sm206035/) window, you should specify the name of the attribute as the source field for the **Attribute** target field and the value of this attribute as the source field for the **Value** target field. ## Limitations of data import By using import scenarios, you can perform the same commands in the window as you do during manual input, with the following exception: + For the [Purchase invoices (AP301000)](/visma-net-erp/help/supplier-ledger/supplier-ledger-windows/purchase-invoices-ap301000/) window, `` (which corresponds to the **Auto apply** button on the **Applications** tab) does not work because Visma Net does not load applications during data import. Parent topic: [Configuring scenario mapping](/visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping/) Types of target fields in import scenarios /visma-net-erp/help/integration/configuring-scenario-mapping/types-of-target-fields-in-import-scenarios page You perform mapping of an import scenario in the Mapping tab of the Manage import scenarios (SM206025) window. 2026-02-19T17:09:06+01:00 # Types of target fields in import scenarios You perform mapping of an import scenario in the Mapping tab of the Manage import scenarios (SM206025) window. For more information: [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/). You perform mapping of an import scenario in the **Mapping** tab of the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window. For each target field on an Visma Net window, you need to know the type of the target field and be sure the source field values have the appropriate format for the type, so that the system can insert the value of the field correctly. The type of the target field, which depends in the type of UI element that represents it in the window to which you are importing data, might be a field of several types, a date picker, a check box, a drop-down list, a radio button, or an action or menu in the toolbar. Also, the target field might be on a dialog box or pop-up panel rather than in the window itself. In most cases, it is clear which format of the value you need for the mapping. However, if you are not sure which format of the value you need, you can create one record manually in Visma Net, specify the needed value of a field of this record, compose an export scenario, and export the value of this field. Make sure the export scenario has output the value in the appropriate format. ## Fields with text The target field in the Visma Net window may be afield into which a user types text. For example: The **Email** field in the **General settings** tab of the [Customers (AR303000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customers-ar303000/) window is a field in which the user types an e-mail address. A field can have a mask, which is denoted by the (_) symbol. If the field has a mask, you cannot insert the underscore symbol (_) because this symbol is reserved for masked input in the system. If the field has no mask, you can insert any characters into the field, including any letters and symbols. The length of the string that you insert into a field should not exceed the maximum length of the underlying target element. (To check the maximum length, find the maximum string that can be manually inserted into the field in the window.) For some fields, you can type text in multiple languages. To import the values of a text box in multiple languages, you should specify a string in JSON format that contains values in the needed languages. ## Fields with currency amount The target field in the Visma Net window may be a field that holds a currency amount. For example: The **Amount** field in the top part of the [Sales invoices (AR301000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/sales-invoices-ar301000/) window is a field with a currency amount. You have to provide currency amounts in the format that you specified for the import scenario in the **Format locale** field in the top part of the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window. For example: If you specified the English (United States) locale for a import scenario, you have to provide amounts where the decimal part is separated by a decimal point: **12.34**. By default, Visma Net imports currency amounts with a decimal precision of 2, which is specified in the **Decimal precision** field in the [Branches (CS102000)](/visma-net-erp/help/organisation-structure/organisation-structure-windows/branches-cs102000/) window. When you import the currency amounts of supplier ledger or customer ledger documents, make sure that the sum of imported lines is equal the imported document total, taking into account the rounding accuracy as follows: + The decimal precision of line amounts must be equal to the decimal precision of document total. + The decimal precision of all amounts must be less than or equal to the decimal precision that is specified in Visma Net. For example: If the decimal precision in Visma Net is 2 and you import an amount with a decimal precision of 3, such as **10.345**, the imported value will be rounded by arithmetical rules to **10.35**. If you import data from an Excel file, you can use the **Round(x,y)** function to round the amounts, and then you can copy the values to a column from which you will import data. ## Fields with a key value The target field in the Visma Net window may be a field that holds a key value. Two examples of key fields are **Customer no.** in the [Customers (AR303000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customers-ar303000/) window, and **Reference no.** in the [Sales invoices (AR301000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/sales-invoices-ar301000/) window. The way you specify the value for key fields depends on your goal and the auto-numbering settings of the records that you are importing. ## Date picker The target field in the Visma Net window may be a date picker that is used to select the date. For example: The **Date** element in the top part of the [Sales invoices (AR301000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/sales-invoices-ar301000/) window is a date picker. You have to provide date values in the format that you specified for the import scenario in the **Format locale** field in the top part of the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window. For example: If you specified the English (United States) locale for the import scenario, you have to provide dates in the format **DD/MM/YYYY**. Thus, September 1, 2014 will be **01/09/2014**. ## Check box The target field in the Visma Net window may be a check box the user can select or clear. For example: The **Hold** element in the top part of the [Sales invoices (AR301000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/sales-invoices-ar301000/) window is a check box. To select a check box, map the corresponding target field to the value **True**. To clear a check box, map the target field to the value **False**. ## Drop-down list The target field in the Visma Net window may be a drop-down list from which the user selects an option. For example: The **Type** element in the top part of the [Sales invoices (AR301000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/sales-invoices-ar301000/) window is a drop-down list. To insert a value into a drop-down list, you have to specify the value as it is displayed in the list. For example: In the [Sales invoices (AR301000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/sales-invoices-ar301000/) window, you can insert the value **Invoice** into the **Type** field. ## Radio buttons The target field in the Visma Net window may be a group of radio buttons. For example: A group of radio buttons is in the **Additional processing** group of the **Settings for Supplier ledger** tab of the [Payment methods (CA204000)](/visma-net-erp/help/cash-management/cash-management-windows/payment-methods-ca204000/) window. In the system, a group of radio buttons is treated as one field, which can have as the values the names of the radio buttons. Therefore, to select a radio button by using an import scenario, you should select the name of the group that contains the radio button in the **Field / action name** column of the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window, and specify the name of the radio button in the **Source field / value** column. ## Buttons and menu items in the toolbar The action in the Visma Net window may be a button or menu item in the toolbar. For example: The **Release** button is on the toolbar of the [Sales invoices (AR301000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/sales-invoices-ar301000/) window. To reflect a user clicking a button in the scenario mapping, you have to insert the corresponding action in the proper position in the mapping, and you don't have to map the action to any value. ## Dialog box The target field may be on a dialog box invoked by a user action on the Visma Net window. Dialog boxes usually appear in a window to request confirmation from the user. For example: When you update the **Customer class** value in the [Customers (AR303000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customers-ar303000/) window for an existing customer, the system displays a **Warning** dialog box. ## Pop-up panel The target field may be on a pop-up panel invoked by a user action in the Visma Net window. For example: The **Add sales order** pop-up panel appears when the user clicks **Add order** on the **Document details** tab of the [Shipments - reference information](/visma-net-erp/help/sales/sales-windows/shipments-so302000/) window. In a similar way as you specify values for fields in windows and invoke actions, you can specify values and click buttons in pop-up panels that users can invoke. Parent topic: [Configuring scenario mapping](/visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping/) Fields with commit in import and export scenarios /visma-net-erp/help/integration/configuring-scenario-mapping/fields-with-commit-in-import-and-export-scenarios page There are two types of fields in Visma Net windows: fields with commit, and fields without commit. 2026-02-19T17:09:06+01:00 # Fields with commit in import and export scenarios There are two types of fields in Visma Net windows: fields with commit, and fields without commit. There are two types of fields in Visma Net windows: fields with commit, and fields without commit. A commit is an action initiated by the window that, when triggered, sends the data to the server. On the server, the commit causes all data in the window to be updated, including the insertion of default values and the recalculation of appropriate fields in the window. A commit is a costly operation that causes the browser to make requests to the server and takes server time. As such, a commit is invoked for only a limited number of fields: mainly the key fields and the fields on which the other fields depend. On the **Mapping** tab of the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window or the [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/) window, if you select a field for which the system performs a commit, the system automatically selects the **Commit** check box. If the **Commit** check box is cleared on this tab, the field is filled in with data, but no update of the window is invoked. If the **Commit** check box is selected, after the field is filled in, the commit is invoked on the server and the window is updated. For example: When you select a customer in the [Sales invoices (AR301000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/sales-invoices-ar301000/) window, the system assigns values to fields related to customer settings, such as the customer terms, due date, and cash discount date. When you create an import scenario for this window, for fields such as **Customer**, the system automatically selects the **Commit** check box on the **Mapping** tab of the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window. In most cases, when you compose the mapping of an import or export scenario, you can use the **Commit** check boxes as they are set by default. However, you may need to force the system to invoke a commit to the server, for example, when you need to commit the value of one field before entering another field value, or to indicate the beginning and the end of a record if you enter records without specifying the key field value. In such cases, you should manually select the **Commit** check box for the field or action. Parent topic: [Configuring scenario mapping](/visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping/) Service commands in Import and export scenarios /visma-net-erp/help/integration/configuring-scenario-mapping/service-commands-in-import-and-export-scenarios page For key fields and the first field that has a commit among the fields of a detail table, the system adds service commands on the Mapping tab of the scenario you are creating in the Manage import scenarios (SM206025) window or the Manage export scenarios (SM207025) window. 2026-02-19T17:09:06+01:00 # Service commands in Import and export scenarios For key fields and the first field that has a commit among the fields of a detail table, the system adds service commands on the Mapping tab of the scenario you are creating in the Manage import scenarios (SM206025) window or the Manage export scenarios (SM207025) window. For more information: [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/), [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/). For key fields and the first field that has a commit among the fields of a detail table, the system adds **service commands** on the **Mapping** tab of the scenario you are creating in the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window or the [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/) window. Service commands are commands that invoke hidden actions in the system, such as searching for the record by the key field, refreshing the window, and adding a new line to the detail table. The system automatically adds service commands to the scenario immediately before the commands that invoke them. For example: Suppose that in the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window, you are mapping the **Type** field of the [Sales invoices (AR301000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/sales-invoices-ar301000/) window. The system automatically inserts a set of service commands before the mapping of the **Type** field: The `` and `` commands invoke search by the key fields, and the `` command restores the default settings for the selected document type. In the table toolbar of the **Mapping** tab of the [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/) window or the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window, by default, the **Show all commands** option is selected in the drop-down list, which means that you can view the service commands that the system automatically adds to the import scenario. You can replace service commands with your own commands to change the default behaviour of the system. For example: If you map the first field that has a commit among the fields of a detail table, the system adds the `=-1` service command. That means that a new row is added for each new detail line. You can specify the needed line number in the `` command to modify the value of the previously imported detail line. Line numbering starts with 0. If you search for a detail line by a custom key, you have to delete the instruction that sets the `` to -1 from the mapping so that the system does not add a new detail line but instead searches for a detail line. Parent topic: [Configuring scenario mapping](/visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping/) Pop-up dialog boxes in import scenarios /visma-net-erp/help/integration/configuring-scenario-mapping/pop-up-dialog-boxes-in-import-scenarios page When you update specific fields in some windows under certain circumstances, the system displays pop-up dialog boxes where you need to specify an answer (by clicking a button) to a question in order to proceed. 2026-02-19T17:09:06+01:00 # Pop-up dialog boxes in import scenarios When you update specific fields in some windows under certain circumstances, the system displays pop-up dialog boxes where you need to specify an answer (by clicking a button) to a question in order to proceed. When you update specific fields in some windows under certain circumstances, the system displays pop-up dialog boxes where you need to specify an answer (by clicking a button) to a question in order to proceed. For example, when you update the **Customer class** value in the [Customers (AR303000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customers-ar303000/) window for an existing customer, the system displays a **Warning** dialog box with the text **Please confirm if you want to update current customer settings with the customer class defaults. Otherwise, original settings will be preserved.** and the **Yes** and **No** buttons. You should click **Yes** to proceed with changing the customer class. When you are specifying mapping for an import scenario, when you need to specify an answer to a question that would appear in a pop-up dialog box if the data was being entered manually, you should use a dialog answer command (which has the `` name) of the Summary object. You should insert this command directly before you map the field that causes the appearance of the dialog box. For the dialog answer, you should select the proper answer from the options available in the **Source field/value** drop-down list on the **Mapping** tab of the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window. The system selects the **Commit** check box for the dialog answer command automatically. In most cases, you can select the summary object as the target object of the dialog answer command, because the dialog answer is shared between all objects of an Visma Net window. You may need to select another object as the target object of the dialog answer command, if you need to overwrite the answer that is specified by the dialog answer command of the Summary object. Below are the settings in the two rows you would enter on the **Mapping** tab to update the customer class of an existing customer record. The first row contains the instruction to click **Yes** in the confirmation dialog box. |**Target object**|**Field/action name**|**Source field/value**| |---|---|---| |**Customer summary**|**<Dialog answer>**|**='Yes'**| |**General settings -> Financial settings**|**Customer class**|**CUSTOMER CLASS**| **Parent topic:** [Configuring scenario mapping](/visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping/) Actions in import scenarios /visma-net-erp/help/integration/configuring-scenario-mapping/actions-in-import-scenarios page As you perform mapping for an import scenario in the Manage import scenarios (SM206025) window, when you need to reflect a button being clicked in a window (such as Save, Delete, or Release to perform one of these actions on a document), you should use the corresponding action. 2026-02-19T17:09:06+01:00 # Actions in import scenarios As you perform mapping for an import scenario in the Manage import scenarios (SM206025) window, when you need to reflect a button being clicked in a window (such as Save, Delete, or Release to perform one of these actions on a document), you should use the corresponding action. For more information: [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/). As you perform mapping for an import scenario in the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window, when you need to reflect a button being clicked in a window (such as **Save**, **Delete**, or **Release** to perform one of these actions on a document), you should use the corresponding action. Actions are available for all buttons in a window. In import scenario mapping, to use an action, you always have to select the summary object as the target object. No matter where the button that corresponds to the action appears in the window (on the top part, the toolbar of a tab, or a pop-up panel), all actions use the summary object as the target object. Action names have the `Action:` prefix and are surrounded with angle brackets, for example, `` or ``. For an action, you should not select any external field in the **Source field/value** column of the **Mapping** tab of the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window. Key fields and search in import scenarios /visma-net-erp/help/integration/configuring-scenario-mapping/key-fields-and-search-in-import-scenarios page In the mapping of an import scenario, you have to map the key fields first, mapping the target key fields in the system to the source key fields. 2026-02-19T17:09:06+01:00 # Key fields and search in import scenarios In the mapping of an import scenario, you have to map the key fields first, mapping the target key fields in the system to the source key fields. In the mapping of an import scenario, you have to map the key fields first, mapping the target key fields in the system to the source key fields. The system uses the following keys: **Customer number** for customers in the [Customers (AR303000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customers-ar303000/) window, and **Type** and **Reference no.** for documents in multiple windows, such as the [Sales invoices (AR301000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/sales-invoices-ar301000/) window. The order of key fields is important for mapping, so you should follow the order of key fields as they are displayed in Visma Net windows. In particular, for documents, you have to assign first the **Type** field and then the **Reference no.** field. ## Auto-numbering of records You can import records with their key values from the source, and the records will have the same key values in the system and the source. For example: Suppose you are importing records to the [Customers (AR303000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customers-ar303000/) window. If you have the customer **CUST000001** in the Excel file, you can import this customer to the system so that the customer record will have the same ID: **CUST000001**. Later, you can update customer records by mapping the Excel column with the ID to the **Customer number** field in the system. As an alternative to importing records with their key values from the source, you can import records and have the system automatically assign IDs. For example, you can import the customer records so that after the import, the customer will have an automatically assigned ID in the system that was not in the Excel file, such as **C000000001**. You can import master records with automatically assigned IDs in several ways, which are described below: + You can enable auto-numbering of records in the system and map the key fields to unique identifiers of records in the source. + If there is just one line for each unique record in the data source, you can enable auto-numbering of records in the system and import each line from the source file as an unique record in the system with an automatically assigned ID. With this way of mapping, you do not map key fields in the import scenario and add the <Action: Insert> instruction at the beginning of the mapping. + You can map the key field to a formula that produces unique identifiers for each imported record in the needed format. Auto-numbering of master records is configured in the corresponding segmented keys in the [Segment keys (CS202000)](/visma-net-erp/help/common-settings/common-settings-windows/segment-keys-cs202000/) window. Documents are usually automatically assigned a reference number in the system. During the initial implementation, you can disable auto-numbering of documents in the system, import the documents with their IDs, and then turn on auto-numbering starting from the last imported ID. Auto-numbering of documents is configured in the numbering sequences that are specified for the corresponding document types in workspace preferences. For example: The **ARINVOICE** sequence is specified for the auto-numbering of invoices in the [Customer ledger preferences (AR101000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customer-ledger-preferences-ar101000/) window. You can update records imported with automatically generated IDs by searching for them in the system by using their unique fields available the source. For example: You can identify customers by email addresses or phone numbers in the Excel file. To search for a record, you have to declare a custom key or use a column of a **Select** dialog box. Both of these methods are described below. ## Custom key To specify a custom key, you have to define the key by using the `@@` notation; directly after the notation, assign the custom key field a value. On the **Mapping** tab of the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window, you should select the **Commit** check box for this field to make the system update the form after the key is specified. Below is an example of the settings for a mapping instruction that declares the **Customer name** as the custom key for customer records you are importing to the [Customers (AR303000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customers-ar303000/) window. In this example, we suppose that the Excel file doesn't contain the customer number, and you are using the **CUSTOMER NAME**value from the Excel file to find the customer record in the system. > ### Custom key mapping > > |**Target object**|**Field/action name**|**Native Field / Action Name**|**Commit**|**Source Field / Value**| > |---|---|---|---|---| > |**Customer summary**|@@AcctName|@@AcctName||=[BAccount.AcctName]| > |**Customer summary**|**Customer name**|AcctName|Selected|**CUSTOMER NAME**| You can specify custom keys to search for a record or a detail line. You can use the fields of the summary object and the detail objects, but not the fields of related objects, as custom key fields. For example: You can find the needed customer record in the system by using the **Customer name** field of the [Customers (AR303000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customers-ar303000/) window as the custom key, but you cannot find the record by using the **Email** field of the **Main contact** group of the **General settings** tab as the custom key. ## Selector column Selector columns in an Visma Net window appear when a user clicks the magnifier icon of a key field of the form to bring up the **Select** dialog box. When you are performing mapping for an import scenario, you can use any selector columns that are available in the window for the key field. To use a selector column for a search in an import scenario, you have to map the selector column to the matching external field. Selector column names start with the key field name, followed by `->` and then the name of the selector column in the window, such as `Customer ID -> Email`. For example: The instruction with the following settings maps the **Email** selector column of the **Customer number** field in the [Customers (AR303000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/customers-ar303000/) window to the EMAIL field available in the source. > ### Selector command mapping > > |**Target object**|**Field/action name**|**Source field/value**| > |---|---|---| > |**Customer summary**|**Customer ID -> E-mail**|**E-MAIL**| Parent topic: [Configuring scenario mapping](/visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping/) Export of all records: use of every /visma-net-erp/help/integration/configuring-scenario-mapping/export-of-all-records-use-of-every page If you want to export every record of a specific type, on the Mapping tab of the Manage export scenarios (SM207025) window, you map the key field to the =Every system action. 2026-02-19T17:09:06+01:00 # Export of all records: use of every If you want to export every record of a specific type, on the Mapping tab of the Manage export scenarios (SM207025) window, you map the key field to the =Every system action. For more information: [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/). If you want to export every record of a specific type, on the **Mapping** tab of the [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/) window, you map the key field to the `=Every` system action. (The **Commit** check box is selected automatically for this field.) This action ensures that every record of the specific type will be processed during export. For example: If you want to export all customer records available in the system, you should map the **Customer no.** field to `=Every`. The **Commit** check box is selected automatically for this field. If you need the value of the **Customer no.** field in the output destination, you should also map this field to the appropriate external field. The example below shows the mapping that makes the system export all customer records available in the system and export the **Customer no.** field to the target **CUSTOMER ID** field. > ## Usage of the = Every instruction > > |**Source object**|**Field/action name**|**Target field/value**| > |---|---|---| > |**Customer summary**|**Customer ID**|**=Every**| > |**Customer summary**|**Customer ID**|**CUSTOMER ID**| Parent topic: [Configuring scenario mapping](/visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping/) Data modification during export: use of commit and actions /visma-net-erp/help/integration/configuring-scenario-mapping/data-modification-during-export-use-of-commit-and-actions page You can change the values of some fields or apply an action to a record during export. 2026-02-19T17:09:06+01:00 # Data modification during export: use of commit and actions You can change the values of some fields or apply an action to a record during export. You can change the values of some fields or apply an action to a record during export. For example: You can change a description field of a record or delete a record as you are exporting it. ## Changing the value of a field If you need to change the values of some fields during export, you must perform a commit of these fields to the server. That is, on the **Mapping** tab of the [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/) window, you must select the **Commit** check box for each internal field whose data is modified. If you change the values of some fields during export, you also need to insert the `` command at the end of the scenario to save the changes to Visma Net. If you specified specific field values on the form during export only in order to select the data for exporting, however, you don't need to insert the `` command at the end of the scenario. If you configured the scenario to change the values of some fields in Visma Net, the system prepares the specified records in the source and tries to apply modifications to them during the preparation process. (If modification of the specified field is not allowed in the system, the field remains unchanged.) Then the system exports all prepared records to the external system. For example, suppose that you create a scenario that exports customer ledger invoices from the window and adds the string **Exported on 05.10.2020** to their descriptions in Visma Net. As a result of the processing of this scenario, all invoices are exported, and only the invoices with the **Balanced** and **On hold** statuses are modified. Modification of documents with other statuses is not allowed in the system, so these documents are exported without any change to their descriptions in Visma Net. ## Applying an action As you perform mapping for an export scenario, when you need to reflect the clicking of a button in a window, you should use the corresponding action. You can use the same actions in export scenarios as in import scenarios. If you are going to delete records or apply another action to records by using an export scenario, you have to specify precise source restrictions that select only those records that can be processed; otherwise, no records will be processed. For example: Suppose that you want to delete customer ledger invoices that have **X** as the value of the **Project** element in the [Sales invoices (AR301000)](/visma-net-erp/help/customer-ledger/customer-ledger-windows/sales-invoices-ar301000/) window. To select only invoices that can be deleted, in the source restrictions of the export scenario, you have to specify not only the condition **Project = X** but also the condition **Status = On hold or Status = Balanced**. If you do not specify filtering by status and there are invoices with the **Open** status in the system, no records will be deleted. Multi-language fields in import and export scenarios /visma-net-erp/help/integration/configuring-scenario-mapping/multi-language-fields-in-import-and-export-scenarios page For some text boxes in Visma Net windows, users can type values in multiple languages if multiple locales are configured in Visma Net. 2026-02-19T17:09:06+01:00 # Multi-language fields in import and export scenarios For some text boxes in Visma Net windows, users can type values in multiple languages if multiple locales are configured in Visma Net. For some text boxes in Visma Net windows, users can type values in multiple languages if multiple locales are configured in Visma Net. For example: If your Visma Net instance has English and French locales activated and multilingual user input configured, you can specify the value of the **Description** field in the [Stock items (IN202500)](/visma-net-erp/help/inventory/inventory-windows/stock-items-in202500/) window in English and French. ## Import of localised field values As you perform mapping for an import scenario in the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) window, when you need to import localised values of a field, you map this field to a source field that contains a string in JSON format with the localised values. In this string, you use the two-letter ISO code of the language with which the value should be associated. In the example that is mentioned at the beginning of the topic, if you need to import the values in English and French to the **Description** element of stock item records in the [Stock items (IN202500)](/visma-net-erp/help/inventory/inventory-windows/stock-items-in202500/) window, you map the **Description** field to a source field that contains data in the following format: `[{en:English description},{fr:French description}]`. The mapping example below presumes that the **DescriptionsInJSONFormat** source field contains a string in JSON format. > ### Import of localised field values > > |**Target object**|**Field/action name**|**Source field/value**| > |---|---|---| > |**Stock item summary**|**Description**|**DescriptionsInJSONFormat**| In the JSON-formatted string, you should specify the actual values of the field in all languages that are configured for multilingual user input. If you specify the values of the field in particular languages, the values of the field in other languages configured for multilingual user input become empty. For example: Suppose that in your instance of Visma Net, multi-language fields can have values in English and French. If you pass the value of a field in the following format `[{en:English description}]`, the French value of the field becomes empty. If a source field that you map to a multi-language field contains plain text, this text is saved as the value of the field in the current language of Visma Net (that is, the language that you selected on the login page of Visma Net ). ## Export of localised field values Each text field that supports multiple input languages has a corresponding field with the suffix **Translations** in its native name. This corresponding field contains all localised values of the text field. For example: The **Description** field in the [Stock items (IN202500)](/visma-net-erp/help/inventory/inventory-windows/stock-items-in202500/) window corresponds to the field with native name **Descr**. The **Descr** field has the **DescrTranslations** corresponding field, which contains the localised descriptions of a stock item. If you want to export localised values of a text field, on the **Mapping** tab of the [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/) window, you map the needed **Translations** field, which contains localised values, to a target field. The **Translations** fields are not available in the list of fields in the **Field/action name** column on the **Mapping** tab; you should type the needed name manually. For example: Suppose that you need to export the localised values of the **Description** element of the [Stock items (IN202500)](/visma-net-erp/help/inventory/inventory-windows/stock-items-in202500/) window. You should find out the native name of the **Description** field, which is **Descr**, and map the **DescrTranslations** field to the target field, as shown in the following mapping example. To find out the native name of a field, in the title bar of the target Visma Net window, click **Customisation** - **Inspect element**, and then click the target element in the window. In the **Element properties** dialog box, which opens, find the value of the **Data field** element, which is the native name of the field. > ### Export of localised field values > > |Source object|Field/Action Name|Target field/value| > |---|---|---| > |**Stock Item Summary**|**DescrTranslations**|**DESCRIPTION**| As a result of the export of localised field values, the target field contains a string in JSON format with the available localised values of the field. The language to which the value belongs is identified by the two-letter ISO code of the language. For example: Suppose that the **Description** element of the [Stock items (IN202500)](/visma-net-erp/help/inventory/inventory-windows/stock-items-in202500/) window has value **Item** in English and **Pièce** in French. In this case, the target field contains the following string: `[{en:Item},{fr:Pièce}]`. Parent topic: [Configuring scenario mapping](/visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping/) Formulas in the mapping /visma-net-erp/help/integration/configuring-scenario-mapping/formulas-in-the-mapping page If you need to convert data into a different format during data import or export, you can map an internal field to a formula. 2026-02-19T17:09:06+01:00 # Formulas in the mapping If you need to convert data into a different format during data import or export, you can map an internal field to a formula. If you need to convert data into a different format during data import or export, you can map an internal field to a formula. You can define formulas by using the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) or [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/) window. ## Components of a formula A formula can include the following components: + **Digital and text literals**: Literals are constants within the formula that you don't want to be modified: + Type digital literals as they are, such as 2, 8.25, or 13.84. + Enclose text literals within single quotation marks, for example, 'DEF_CLASS' and 'FOB'. + **Operators**: The following types of operators are available: + Arithmetic operators take numerical values and return a numerical value. + Logical operators evaluate one or two Boolean expressions and return a Boolean result. + Comparison operators compare two expressions and return a Boolean value that represents the result. + **Functions**: Functions, which perform specific tasks and return results, include the following types: + Text functions perform operations on text strings. + Math functions perform calculations. + Conversion functions convert data from one type to another. + Date/time functions perform functions related to the date, the time, or both. + **Fields**: External or internal fields (elements) can be used in a formula as operands or function arguments. ## Assigning a formula To assign a formula to a field, do the following in the [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) or [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/) window: 1. Click the pen icon in the field where you want to insert a formula. This invokes the Formula editor dialog box, which can be used to create the formula you want. 1. Click any of the types in the Component types area (on the upper left of the dialog box) to open the list of related components in the right area. 1. Double-click a component from the list of components. Note that all components are added to the right of the formula text. 1. Repeat Steps 2–3 to add all the needed components. 1. In the Formula text area (at the bottom of the dialog box), manually edit the text to construct a correct formula: Move the function argument or arguments within a function's parentheses, correctly arrange operands and operations, and add any needed brackets to ensure the proper order of operations. 1. Click **Validate** to check the syntax of the formula and make necessary corrections if required. 1. Click **OK** to save the formula. Once it's inserted, a formula is preceded by an equal sign (=). ## Formulas in export scenarios When you map the data in Visma Net to the external fields, you will usually need field-to-field mapping. In some cases, however, you may need to add values from multiple internal fields to export the resulting value to an external one, to extract only a part of the internal field's value, or to perform another transformation or conversion for the data to be exported. If you map an internal field to a formula instead of an external field, the resulting value will be assigned back to the Visma Net field. This functionality can be used, for example, to set criteria on inquiry forms to export only filtered data or to mark exported records as exported. ## Formulas in import scenarios When you map Visma Net fields to the external data, you will usually need field-to-field mapping. For some fields, however, you may need to add values from multiple external fields to an internal one, to extract only a part of the external field's value, or to perform another transformation or conversion. As you map an Visma Net field to the external data, the system checks the functionality of the mapped field and automatically adds, if necessary, a line that contains the system action (hidden by default) required for the field, such as a refresh of the window or a commit to the database. ## Formula examples Here are some examples illustrating the use of formulas: + This formula is used for assigning a literal: `ClassID ='Imported suppliers'`. + This formula assigns a concatenated string: `SupplierID = 'X'+[SupplierID]`. + This formula is used for assigning a value to a check box: `IsAddressSameAsMain = true`. + If the internal field is required, it's important to check that the field value is not blank. To do this, use the `Iif(str, truestatement, falsestatement)` function, as in the following example: `CountryID =iif(trim[Country]='','US',[Country])`. Then the internal field will get the `US` value if the external field is blank. + If the customer numbers from the source cannot be used in your implementation, create new IDs for them. For example: In the demo data, customer and supplier IDs are short versions (up to 15 characters) of their names converted to uppercase. To do this, remove any spaces from the name by using the `trim(arg)` function, convert it to uppercase with the `UCase(arg)` function, and remove any characters in excess of 10 by using the `Left(arg)` function: `Customer ID =Left( trim(UCase([Name])),10)`. Parent topic: [Configuring scenario mapping](/visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping/)

Related pages

Concepts

Operators /visma-net-erp/help/integration/configuring-scenario-mapping/operators page Operators are used in formulas that you create in the Formula editor dialog box, which is called from the Manage import scenarios (SM206025) or Manage export scenarios (SM207025) windows. 2026-02-19T17:09:06+01:00 # Operators Operators are used in formulas that you create in the Formula editor dialog box, which is called from the Manage import scenarios (SM206025) or Manage export scenarios (SM207025) windows. For more information: [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/), [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/). To add operators to the formula, you can enter them directly in the Formula text area of the dialog box or select them from the list of formula components available within the dialog box. (Select an operator type to view the list of operators of the type, and then select an operator.) To specify the operands for operators, you can type them in the Formula text area or select them from the list of external or internal fields provided within the Formula editor dialog box. This article describes and provides examples of the operators you can use in formulas, broken down by operator type. ## Overview of operators There are two types of operators: unary and binary. Unary operators are applicable to only one operand, while binary operators require two operands. In general, expressions are evaluated from left to right with the following order of precedence: + Logical operators: `Not`, `And`, `Or` + Comparison operators: =, <>,, <=, >= + Arithmetic operators: -, \*, /, `Mod`, +, - ## Arithmetic operators Arithmetic operators, which are listed below, take numerical values as their operands and return a single numerical value.
Operator Description and example

Adds the two operands and returns the result. If at least one operand is a string, this operator returns a concatenated string.

Example: =[Amount]+[VAT amount]

In this example, the [Amount] and [VAT amount] values are used as operands.

Subtracts the second operand from the first.

Example: =[Amount]-[Cash discount]

In this example, the [Amount] and [Cash discount] values act as operands.

Multiplies the two operands.

Example: =[Chargeable amount]*0.03

In this example, the [Chargeable Amount] value and the number 0.03 serve as operands.

/

Yields the quotient of the operands, which is the first operand divided by the second.

Example: =[Amount]/[Rate reciprocal]

In this example, the [Amount] and [Rate reciprocal] values are the first and second operands.

Mod (Modulus)

Divides the first integer operand by the second integer operand and returns the remainder, rounded to the nearest integer.

Example: =[Volume] Mod [Conversion factor]

In this example, the [Volume] and [Conversion factor] values are used as operands.

## Logical operators Logical operators evaluate one or two Boolean expressions and return a Boolean result (`True` or `False`). Because these operators evaluate only Boolean expressions, you must use elements whose only values are `True` and `False` (typically check boxes and radio buttons). The logical operators are listed below.
Operator Description and example
And

Performs logical conjunction on two Boolean expressions: returns True if and only if both expressions evaluate to True; in other cases, returns False.

Example: =[Hold] And [Validate control totals on entry]

In this example, the [Hold] and [Validate control totals on entry] check boxes are used as operands.

Or

Performs logical disjunction on two Boolean expressions: returns True if at least one expression evaluates to True; returns False if neither expression evaluates to True.

Example: =[Hold] Or [Validate control totals on entry] In this example, the [Hold] and [Validate control totals on entry] check boxes act as operands.

Not

Performs logical negation on a Boolean expression: returns True if and only if the operand is False. Logical negation is an unary operator.

Example: =Not [Hold documents on entry]

In this example, the [Hold documents on entry] check box is used as the single operand.

## Comparison operators Comparison operators compare two expressions and return a Boolean value (`True` or `False`) that represents the result of the comparison. This group of operators includes the following operators.
Operator Description and example
=

Returns True if operands are equal.

Example: =([Credit total] = [Control total])

In this example, the [Credit total] and [Control total] values are used as operands.

<>

Returns True if operands are not equal.

Example: =([Credit total] <> [Debit total])

In this example, the [Credit total] and [Debit total] values act as operands.

<

Returns True if the first operand is less than the second one.

Example: =([DocDate] < [DueDate])

In this example, the [DocDate] and [DueDate] values act as operands.

>

Returns True if the first operand is greater than the second one.

Example: =([CrLmt] > 1000])

In this example, the [CrLmt] value is used as the first operand, and the number 1000 acts as the second operand.

<=

Returns True if the first operand is less than or equal to the second operand.

Example: =(([DueDate]-[CashDiscountDate]) <= [LeadTime])

In this example, [DueDate] - [CashDiscountDate] is the first operand, and the [LeadTime] value is used as the second operand.

>=

Returns True if the first operand is greater than or equal to the second operand.

Example: =([Balance] => [Amount])

In this example, the [Balance] and [Amount] values are used as operands.

## Other operators This miscellaneous group of operators includes the following operators and constants.
Operator Description and example
In

An operator that returns True if the second operand (a string) contains the first operand (which is also a string).

Example: =('Inc.' In [Supplier name])

In this example, the [Supplier name] value is used as an operand, and the formula returns True if the name of the supplier contains Inc.

True

A binary constant used as an operand in logical expressions.

Example: =True

False

A binary constant used as an operand in logical expressions.

Example: =False

Null

A special value used as an operand in logical expressions; designates an undefined value.

Example: =Null

Parent topic: [Configuring scenario mapping](/visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping/) Related reference Formula editor dialog box [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/) [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/)

Related pages

Concepts

Functions /visma-net-erp/help/integration/configuring-scenario-mapping/functions page Functions are used in formulas that you create on the Formula editor dialog box, which you can invoke from the Manage import scenarios (SM206025) or Manage export scenarios (SM207025) windows. 2026-02-19T17:09:06+01:00 # Functions Functions are used in formulas that you create on the Formula editor dialog box, which you can invoke from the Manage import scenarios (SM206025) or Manage export scenarios (SM207025) windows. For more information: [Manage import scenarios (SM206025)](/visma-net-erp/help/integration/integration-windows/manage-import-scenarios-sm206025/), [Manage export scenarios (SM207025)](/visma-net-erp/help/integration/integration-windows/manage-export-scenarios-sm207025/). To add functions to a formula, you can type them in the Formula text area of the dialog box or select them from the list of formula components available within the dialog box. (Select a function type to view the list of functions of the type, and then select a function.) This topic describes and provides examples of the functions you can use in formulas, broken down by type. ## Conversion functions The available conversion functions, which are used to convert data from one data type to another, are listed below.
Function Description and example
CBool(x)

Converts the expression used as the function argument into a Boolean expression. Returns False if the Boolean value is zero; otherwise, returns True.

Example: =CBool([CashDiscountAmount]

Here [CashDiscountAmount] is used as the function argument.

CDate(x)

Converts the expression used as the function argument into a value of the Date type. The argument should be a valid date expression according to the locale selected for the import or export scenario.

Example: =CDate('24/12/2011')

Here a string is used as the function argument.

CStr(x)

Converts the expression used as the function argument into a string. If the argument is Null, the function returns a run-time error; otherwise, it returns a string.

Example: ='(' +CStr([AreaCode])+')'+CStr([Phone])

Here [AreaCode] and [Phone] are used in the function argument.

CDbl(x)

Converts the expression defined in the function argument into a value of the Double type.

Example: =CDbl(1.0/[ExchangeRate])

Here [ExchangeRate] is used in the function argument.

CSng(x)

Converts the expression used as the function argument into a value of the Single type. If the expression has a value outside the acceptable range for the Single type, this function returns an error.

Example: =CSng([CashDiscountAmount]/[DocAmount])

Here [CashDiscountAmount] and [DocAmount] are used in the function argument.

CDec(x)

Converts the expression used as the function argument into a value of the Decimal type.

Example: =CDec([DocAmount]*0.015)

Here [DocAmount] is used in the function argument.

CInt(x)

Converts the expression used as the function argument into a value of the Integer type.

Example: =CInt('2012')-Year([DocDate])

Here [DocDate] is used in the function argument.

CShort(x)

Converts a numeric value to a value of the Short type.

Example: =CShort([CashDiscountAmount])

Here [CashDiscountAmount] is used as the function argument.

CLong(x)

Converts a numeric value to a value of the Long type.

Example: =CLong([CashDiscountAmount])

Here [CashDiscountAmount] is used as the function argument.

## Text functions Text functions are used to perform operations on text strings. The group of text functions includes the functions described below.
Function Description and example
LTrim(string)

Removes all leading spaces or parsing characters from the specified string, or all leading zero bytes (0) from the specified binary expression.

Example: =LTrim(CStr([Phone]))

Here [Phone] is used as the function argument.

RTrim(string)

Removes all trailing spaces or parsing characters from the specified character expression, or all trailing zero (0) bytes from the specified binary expression.

Example: =RTrim(CStr([AreaCode]))

Here [AreaCode] is used as the function argument.

Trim(string)

Removes all leading and trailing spaces or parsing characters from the specified character expression, or all trailing zero (0) bytes from the specified binary expression.

Example: =Iif(Trim([Country])

Here [Country] is used in the function argument.

Format(format, argument(s))

Replaces the format item in a specified formatting string ( format ) with the text equivalent of the arguments ( arguments ).

Example: =Format('Currency:........ {0:C}; Account:........ {1:N}', [Currency], [AccountBalance])

Here [Currency] and [AccountBalance] are used in the function argument; 0 and 1 are the specifiers indicating where the arguments will be inserted, C is the currency format specifier, and N is the number format specifier.

UCase(string)

Returns a string that has been converted to uppercase. The string argument can be any valid string expression. If string contains Null, Null is returned.

Example: =UCase([CustomerName])

Here [CustomerName] is used as the function argument.

LCase(string)

Returns a string that has been converted to lowercase. The string argument can be any valid string expression. If string contains Null, Null is returned.

Example: =LCase(CStr([CustomerID])

Here [CustomerID] is used in the function argument.

InStr(string, findString)

Returns the position of the first occurrence of one string ( findString ) within another ( string ).

Example: =InStr([CustomerName], 'Inc')

Here [CustomerName] is used in the function argument.

InStrRev(string, findString)

Returns the position of the last occurrence of one string ( findString ) within another ( string ).

Example: =InStrRev([CustomerName], 'Inc')

Here [CustomerName] is used in the function argument.

Len(string)

Returns an integer containing either the number of characters in the string or the nominal number of bytes required to store a variable.

Example: =Len([CustomerName])

Here [CustomerName] is used as the function argument.

Left(string, length)

Returns a string containing the specified number of characters from the left side of a string. If string contains Null, Null is returned.

Example: =Left(Trim([VendorName]), 10)

Here [VendorName] is used in the function argument.

Right(string, length)

Returns a string containing a specified number of characters from the right side of a string. If string contains Null, Null is returned.

Example: =Right(CustomerName, 3)

Here [CustomerName] is used in the function argument.

Replace(string, oldValue, newValue)

Returns a string in which the specified substring ( oldValue ) has been replaced with another substring ( newValue ).

Example: =Replace([Description], 'rur', 'eur')

Here [Description] is used in the function argument.

PadLeft(string, width, paddingChar)

Right-aligns the characters in a specified string (string), padding with the specified character (paddingChar) on the left up to the specified total width (width). If the actual length of the string is less than the specified width, returns the original string.

Example: =PadLeft(CStr(Phone), 12, '_')

Here [Phone] is used in the function argument. If the actual length of the string is less than the specified width, returns the original string.

PadRight(string, width, paddingChar)

Left-aligns the characters in a specified string ( string ), padding with the specified character ( paddingChar ) on the right up to the specified total width ( width ).

Example: =PadRight(CStr([City]), 25, '_')

Here [City] is used in the function argument. If the actual length of the string is less than the specified width, returns the original string.

## Math functions Mathematical functions, which are listed and described below, perform calculations, usually based on input values provided as arguments, and return numeric values.
Function Description and example
Abs(x)

Returns the absolute value of the number.

Example: =Abs([TotalDebit]-[TotalCredit])

Here [TotalDebit] and [TotalCredit] are used in the function argument.

Floor(x)

Returns the largest integer that is not greater than the argument.

Example: =Floor([Price]/([Cost])

Here [Price] and [Cost] are used in the function argument.

Ceiling(x)

Returns the smallest integer that is not less than the argument.

Example: =Ceiling([Price]/[Cost])

Here [Cost] and [Price] are used in the function argument.

Round(x, decimals)

Returns a numeric expression, rounded to the specified precision ( decimals ).

Example: =Round(([Price]-[Cost])/[Cost], 2)

Here [Cost] and [Price] are used in a function argument, and 2 is the number of decimal places.

Min(x, y)

Returns the smaller of the two values.

Example: =Min([Price],[Cost])

Here [Cost] and [Price] are used in the function argument.

Max(x, y)

Returns the greater of the two values.

Example: =Max({StandardCost],[AvrCost])

Here [StandardCost] and [AvrCost] are used in the function argument.

Pow(x, power)

Computes the value of x raised to the specified power ( power ).

Example: =Pow(([Markup], 2))

Here [Markup] is used in the function argument; the function returns the mark-up value squared (or to the second power).

## Date/time functions The date/time functions, described below, perform operations on system-generated values and return values of the following types: string, numeric, or **Date/time**.
Function Description and example
Now()

Returns the current date and time according to the system date and time on the local computer.

Example: =Now()

Today()

Returns the current date according to the system date and time on the local computer.

Example: =Today()

NowUTC()

Returns the current date and time according to the user’s time zone.

The system gets the user’s time zone from the following sources, which are ordered by the priority from the highest to the lowest:

  1. User’s preferences specified in the User profile (SP203010) window.
  2. The employee calendar specified in the Work calendar (CS209000) window and selected for the user’s employee in the Employees (EP203000) window.

Example: =NowUTC()

TodayUTC()

Returns the current date according to the user’s time zone.

The system gets the user’s time zone from the following sources, which are ordered by the priority from the highest to the lowest:

  1. User’s preferences specified in the User profile (SP203010) window.

  2. The employee calendar specified

1. The employee calendar specified in the Work calendar (CS209000) window and selected for the user's employee in the Employees (EP203000) window.

Example: =TodayUTC()

DateAdd(dt, int, nbr)

Returns a new date calculated by adding the specified number ( nbr ) of time intervals ( int ) to the date ( dt ). The int argument specifies the type of time interval and is one of the following options:

yyyy
A number ( nbr ) of years will be added to the specified date ( dt ).
m
A number ( nbr ) of months will be added to the specified date ( dt ).
y
Same as d; see below.
d
A number ( nbr ) of days will be added to the specified date ( dt ).
h
A number ( nbr ) of hours will be added to the specified date ( dt ).
n
A number ( nbr ) of minutes will be added to the specified date ( dt ).
s
A number ( nbr ) of seconds will be added to the specified date ( dt ).

Examples:

  • =DateAdd([StartPeriod], 'm', 12)
  • =DateAdd([CashDiscountDate], 'd', -2)

In these examples, [CashDiscountDate] and [StartPeriods] are used in the function arguments.

Year(date)

Returns the year, as an integer, extracted from the specified date ( date ).

Example: =Year([StartPeriod])

Here [StartPeriod] is used as the function argument.

Month(date)

Returns the month, as an integer, extracted from the specified date ( date ).

Example: =Month([StartPeriod])

Here [StartPeriod] is used as the function argument.

Day(date)

Returns the day (as an integer) extracted from the specified date ( date ).

Example: =Iif(Day([DueDate]-[LeadTime])=0, True, False

Here [DueDate] and [LeadTime] are used in the function argument.

DayOfWeek(date)

Returns the day of the week associated with the specified date ( date ) as an integer.

Example: =DayOfWeek([StartPeriod])

Here [StartPeriod] is used as the function argument.

DayOfYear(date)

Returns the day of the year calculated for the specified date ( date ).

Example: =DayOfYear([StartPeriod])

Here [StartPeriod] is used as the function argument.

Minute(date)

Returns the number of minutes extracted from the specified date ( date ).

Example: =Minute([StartPeriod])

Here [StartPeriod] is used as the function argument.

Second(date)

Returns the seconds extracted from the specified date ( date ) as an integer.

Example: =Second([StartPeriod])

Here [StartPeriod] is used as the function argument.

## Other functions This miscellaneous group of functions includes the following functions.
Function Description and Example
IIf(expression, truePart, falsePart)

Returns one of two values, depending on the evaluation of the expression: If the expression evaluates to True, the function returns the truePart value; otherwise, it returns the falsePart value.

Example: =IIf(([CurrencyID]='', 'USD', [CurrencyID])

Here [CurrencyID] is used in the function argument.

Switch( expression_1, value_1, expression_2, value_2,…)

Returns the value value_n that corresponds to the first expression expression_n that evaluates to True. expression_1, expression_2, and so on are Boolean expressions.

Example: =Switch(([DocAmount]<100), 'small', (([DocAmount]>=100)And([DocAmount]<500)), 'medium',(([DocAmount]>=500)And([DocAmount]<1000)),'large')

Here [DocAmount] is used in the function argument.

IsNull(value, nullValue)

Replaces NULL with the specified replacement value. The value argument is to be checked for NULL.

Example: =IsNull([CustomerID],'NULL value') Here, [CustomerID] is used in the function argument.

Sum(from, to) Is not applicable to formulas used by the Integration forms.
Provider.CalculateHash(string)

Calculates the hash string for the specified string.

Example: =Provider.CalculateHash([CUSTOMER ID] + [INVOICE REF NBR] + [LINE NBR])

In this example, the hash string is calculated for the string that contains concatenated values of the [CUSTOMER ID], [INVOICE REF NBR], and [LINE NBR] fields.

Provider.CalculateHashCode(string)

Calculates the hash code (which is an Integer value) for the specified string.

Example: =Provider.CalculateHash([CUSTOMER ID] + [INVOICE REF NBR] + [LINE NBR])

In this example, the hash code is calculated for the string that contains concatenated values of the [CUSTOMER ID], [INVOICE REF NBR], and [LINE NBR] fields.

**Parent topic:** [Configuring scenario mapping](/visma-net-erp/help/integration/configuring-scenario-mapping/configuring-scenario-mapping/)