About merge fields configuration
About merge fields
Merge fields help WorkZone users create templates in Microsoft Word. From a WorkZone point of view, a merge field represents a specific property of an entry. An entry is an object in OData that refers to the WorkZone database. Entries in OData are used to retrieve specific values from the database.
When creating a template, the user fills in mandatory fields on the Document tab of the WorkZone pane in Microsoft Word, clicks Merge fields, and adds the needed merge fields by selecting relevant menu items from the Insert merge field tab. Once the user clicks Merge, WorkZone will replace each inserted merge field with relevant values from the WorkZone database.
You can create sub-menus and define which menu items would be displayed in each merge fields category. Available merge fields are divided into 4 categories:
- Document
- Case
- Document contact
- Case contact
Merge fields configuration files
There are two files that define the merge-related functionality:
To edit an existing merge field, you only need to customize the merge_odata_description.xml file.
To add a completely new merge field, you need to customize both the merge_odata_description.xml and menu_description.xml files.
You can define the following:
- Merge fields and their order on the Insert merge field tab of the WorkZone pane in Word.
- Titles and placeholders of the merge fields
- Merge functionality
Merge_odata_description.xml
This file describes data that is used for merging merge fields and values from the database. Merge of multiple entities is not supported, so make sure that you only select single items in your queries. To edit the file, you must have knowledge about OData.
property: Establishes mappingatom:content -> metadata:properties.internal: Attribute for internal usage only. You can use it to display or hide a merge field in menu on UI. If the value isfalse, the merge field is displayed. If the value istrue, the merge field is hidden.
-
link: Establishes mapping toatom:link. Onlyatom:linkwithtype=entryis supported. The structure oflinkis the same as the structure ofstaticData. This element is optional.query: relative OData request that contains any allowed OData system query options. The only exceptions areselectandexpandoptions that are built based on thepropertyandlinkelements.addressContext: Defines which rule must be applied to handle protected addresses locally and from Merge API. Available values are the following: CaseOfficer, CaseResponsibleUnit, RecordOfficer, RecordResponsibleUnit, RecordParty, and CaseParty.
dynamicData: Builds merge field menus with items based on queries.key: Use together with thequeryattribute to create an OData query. The value ofkeyis used as an ID of a menu item.additionalKey: Use additionally tokey, if OData entities have complex ID.value: Use together with thequeryattribute to create an OData query. The value ofvalueis used as a label of a menu item.
staticData: Builds merge field menus with items based on the static properties. The element reflects the OData atom payload for a specific entity. For more information, see Naming conventions and Atom format.href: Mapping toatom:link.query: Relative OData request that contains any allowed OData system query options.group: Groups-related data for the repeating content. For example, Information or Dates in the Contact menu.addressContext: Defines which rule must be applied to handle protected addresses locally and from Merge API. Available values: CaseOfficer, CaseResponsibleUnit, RecordOfficer, RecordResponsibleUnit, RecordParty, CaseParty.
linkTemplate: Child element of thestaticDataelement and also reflects the OData atom payload for a specific entity. This element is only used for the81E576F0-FFAA-4229-8B46-2BEC4972B474(Record staticData) ID and has an additional attribute.href: Mmapping toatom:link.queryForLocalData: Describes OData query based on the 'local' Record data. The attribute refers to the run-time dependency {record.<SOM field name>}.
During the merge, all run-time dependencies will be replaced with the correspondent values. All dependencies are wrapped in '{}'. There are 4 types of dependencies:
{recordId}: ID of the document that a user merges.{addressId}: ID of an address that belongs to a corresponding case or document party.{guid}: Reference to adynamicDataID orpropertyID inmerge_odata_description.xml.{record.<SOM field name>}, where '<SOM field name>' is a direct document field name. This dependency was created for the scenarios when a document is not yet saved on the server.
Menu_description.xml
This file describes the UI elements. Use it to make a new merge field available to your WorkZone users in Microsoft Word.
There are three main sections in the file:
- Menus: Customize structure of menus, supertips, and screentips.
- Labels: Override the default menu item names and merge field titles.
- Content controls: Customize the merge fields.
Elements and attributes:
menu: Describes the static menu. You can create menu items by addingdynamicMenuelements. If you want to create a new sub-menu, add anothermenuelement within this element.displayName: Defines the menu name displayed in Word.supertipandscreentip: Define the tooltips, displayed when users move the mouse over the menu.dynamicMenu: Adds menu items based on the data from themerge_odata_description.xmlfile.contentRefs: A reference to the entries in themerge_odata_description.xml.repeatable: Identifies menu item that must be used to repeat the merge field. When repeat section is used around the merge field, the menu item withrepeatable="true"is used.
Elements and attributes:
label: Overrides the default menu item label for a specific property that is defined in themerge_odata_description.xmlfile.dataItemRef: specifies the reference to the property of an entry.
value: Specifies a language-specific label. It will also be used as a merge field placeholder.format: Use it to format avalue(optionally).
Elements and attributes:
NoEntityRules: Defines the merge field behavior, if a user clicks Merge, but no value exists for this merge field.<Rule rule="Unchanged">: Add merge field into this element, if you want to display this merge field in the user interface, even when there is no value.<Rule rule="Empty">: Add merge field into this element, if you want to hide this merge field from the user interface, when there is no value.menuDataRefs: Specifies a reference to astaticDataandlinkin themerge_odata_description.xmlfile.
cc: Defines which information to include in the merge field title.dynamicMenuRef: Specifies the name of a sub-menu or a menu item for which you want to apply this title.titleFormat: Specifies the merge field title.{displayName}: Displays the name of the menu item that a user has clicked.
holderFormat: Optionally, specify the merge field placeholder.
Create a merge field
For example, you want to create a new merge field called Entity updated overrided that will represent the Entity updated property of the MruRecords entry. To create such merge field, you need to create a reference to the database through OData and add a new menu item that will appear in Word.
- Open the merge_odata_description XML file. To request a specific entry, create a query to OData. Use the following example:
Kopiér
<staticData id="E34FE056-129F-46D2-B7E7-A20D91F9F47C" query="MruRecords?$filter=Value eq
'{recordId}' and User_Value eq '{record.officer}'"> staticData: use this element to request an entry.E34FE056-129F-46D2-B7E7-A20D91F9F47C: insert a unique ID that will be used internally as a reference to the OData entry.query: an OData request that retrieves the entry that you need. In this example, it is a call to theMruRecordsentry.- Within the
staticDataelement, bind a merge field with the required property. To do this, you need to add and define the property element.You may add as many properties as you need.
Kopiér<staticData id="E34FE056-129F-46D2-B7E7-A20D91F9F47C" query="MruRecords?$filter=Value eq
'{recordId}' and User_Value eq '{record.officer}'">
<property id="C5D4237E-2DEF-4D5A-B714-1F5CA88518F5" name="EntityUpdated " />
</staticData> property: use this element to request a property.E34FE056-129F-46D2-B7E7-A20D91F9F47C: insert a unique ID that will be used internally as a reference to the property of the entry.name: specify property's name in OData.=- Add a new menu item to the Word application. You can do this in the menu_description XML file. Open the file and find a proper place for the new menu item. The current example represents how to search for the Document category.
<menu id="Case">refers to Case.<menu id="Record">refers to Document.<menu id="CaseParty">refers to Case contacts.<menu id="RecordParty">refers to Document contacts.menu: use this element to create a sub-menu.displayName: define a menu name to be displayed in Word.dynamicMenu: use this element to create new menu items.ref: specify reference to the unique ID in themerge_odata_descriptionXML file.- Optionally, define customized labels (names) for the new menu item and merge field:
Kopiér
<label dataItemRef="C5D4237E-2DEF-4D5A-B714-1F5CA88518F5">
<value xml:lang="en-GB">Entity updated overrided</value>
<value xml:lang="da-DK">Entity updated overrided</value>
</label>where:
label: specifies a customized name.- dataItemRef: specifies a reference to the property of the entry from the merge_odata_description XML file.
xml:lang: is a localization parameter.
- You can define how the merge field must behave in Word when there is no value. There are two options:
- Display merge field with no changes. To do so, specify the unique ID of the entry within the
<Rule rule="Unchanged">section.Kopiér<Rule rule="Unchanged">
<menuDataRefs>
<ref>E34FE056-129F-46D2-B7E7-A20D91F9F47C</ref>
</menuDataRefs>
</Rule> - Hide the merge field. To do so, specify the unique ID of the entry within the
<Rule rule="Empty">section.Kopiér<Rule rule="Empty">
<menuDataRefs>
<ref>17EDE3E5-43D3-4B88-8E6E-F336D916B916</ref>
</menuDataRefs>
</Rule>
- Display merge field with no changes. To do so, specify the unique ID of the entry within the
ref: is a reference to the unique ID in the merge_odata_description XML file.-
Optionally, you can define which information should be included in the merge field title.
Kopiér<cc dynamicMenuRef="Mru_Items">
<titleFormat xml:lang="en-GB">(Document, Mru) {displayName}</titleFormat>
<titleFormat xml:lang="da-DK">(Document, Mru) {displayName}</titleFormat>
</cc>where:
dynamicMenuRef: specifies a reference to a menu item.TitleFormat: defines the merge field title for each language.{displayName}: displays the name of the menu item that a user can click.
where:
You may use any unique ID, however, it is recommended to use a GUID generator to generate the ID.
where:
In the code source, the Document category refers to Record. Therefore, the new sub-menu must be added under the <menu id="Record"> element:
<menu id="Mru">
<displayName xml:lang="en-GB">Mru test</displayName>
<displayName xml:lang="da-DK">Mru test</displayName>
<dynamicMenu id="Mru_Items">
<contentRefs>
<ref>E34FE056-129F-46D2-B7E7-A20D91F9F47C</ref>
</contentRefs>
</dynamicMenu>
</menu>;
where:
where: