Developer Resource - Model Map Overrides
Customizing a model map doesn't mean you have to write rewrite the existing ones when you take advantage of overrides. You can write a model map file just describing the customizations you need for each model map. These XML override files live in
An example overrides file is provided that demonstrates the capabilities of model map overrides.
It is located at
Model Map Override File Format
<model overrides=""> <!-- all inherited attributes are available, here are the additions --> <query> <removeProperty key="" /> <removeMappedProperty key="" /> <removeMappedCollection key="" /> <traverseRelation name=""> <removeProperty key="" /> <removeMappedProperty key="" /> <removeMappedCollection key="" /> </traverseRelation> <addMappedProperty key=""> <removeProperty key="" /> </addMappedProperty> </query> </model>
Example Model Map Override File
<model overrides="case"> <query from="qry_case_view" type="view"> <removeProperty key="id" /> <traverseRelation type="adhoc" field="elm_objid" table="case" targetField="objid"> <addMappedProperty key="additionalFields"> <addProperty key="altSiteName" field="alt_site_name" dataType="string" /> </addMappedProperty> </traverseRelation> </query> </model>
|overrides||This value matches the model element's
|key||This value matches the property, mapped property or mapped colection element you wish to remove from the inherited model map.|
To remove properties, mapped properties, or mapped collections from relations, you must add the same traverse relation elements (as noted in the example above).
If all properties are removed from a traversal, that traversal will also be removed.
Additional Fields Convention
As of Agent 18, the additional fields conventions is made available to minimize the need to customize the create/edit endpoints for entities. By moving custom fields into the
additionalFields mapped property (see above example), those fields are automatically persisted to the database during create/edit operations using the
AdditionalFields convention in Dovetail SDK.
A complete example has been provided in the Dovetail knowledgebase at: https://support.dovetailsoftware.com/selfservice/solutions/show/975
The example includes a model map override, along with UI customizations.
For this example, we will make use of the
alt_site_name field on the Case table. We'll store the site_id and simply join from alt_site_name to site_id to find the alternate site. While we’re at it, we’ll customize the UI to use a Site Picker to select the alternate Site. We’ll accomplish all of this without touching any backend C# code.