The structure of a service template element closely mirrors the structure of the service elements it creates:
- It defines a tree-like hierarchy of elements.
- It is stored as XML, rather than as Salesforce objects.
- Elements can be either new or existing:
- New elements are freshly created during service provisioning (including attribute creation and value assignment).
- Existing elements are referenced by their Salesforce object ID and not re-created.
- New elements can include attributes defined as name-value pairs.
- The service name can be inserted dynamically into attribute values using the [Service::Name].

The XML syntax used for template definition is explained below:
<service> <!-- beginning of service definition, contains a list of <element> items ---> <!-- new element --> <element type="new"> <!-- these fields will be populated (this is 100% dynamic, custom fields may be included) --> <field name="Name" value="/29 IP Block" /> <!-- developer field name and value --> <field name="Type__c" value="IP Block" /> <field name="Managed__c" value="false" /> <field name="MRC__c" value="8.60" /> </element> <!-- new type element --> <element type="new"> <field name="Name" value="ACCESS-[Service::Name]" /> <!-- generate name using service name wildcard --> <field name="Type__c" value="Network Access" /> <field name="Managed__c" value="false" /> <field name="MRC__c" value="226.00" /> <field name="Provider__c" value="0017F00000O7oc4QAB" /> <!-- assign lookup via object id (type must match) --> </element> <!-- existing element, via object id, must be Element__c --> <element type="existing" id="a027F00000Y3PAUQA3" /> </service>
Important | When creating a new template, it is recommended to create it from an existing service and make modifications as needed — rather than writing XML from scratch. |