Customization Packages
- Package structure
- Create a package
- Deleted packages
- Tips
- Sample package files
- XML refresher
- What’s next?
A package is an XML document that defines one or more customization activities that are deployed together to enable a feature.
Package structure
By grouping related activities in a package, you ensure that changes to one activity do not adversely affect other activities in the package. You also have a single location where you can modify all aspects of a feature.
A customization package has a customErpPackage
root element that wraps the child elements, as shown:
The child elements provide the content for the customization feature as follows:
packageDescription
names the package, identifies the author, and explains its purpose. This is the only required element.customFields
wrap the individualcustomField
activities. This is the first activity added to a package and often contains data that other activities will need.smartLinks
wrap the SmartLink Click, SmartLink Fetch, Smart Rule, and Smart Event activities. Although these activities serve different functions, they share many data commonalities—in XML terms, they fit under one schema definition.customReports
wrap the individual customReport activities.interactiveReports
wrap the individual interactiveReport activities.
Create a package
When creating a package, the easiest approach is to start with the XML package file template, then use the Sage Intacct UI to generate parts of the file. For example, you can export the components you choose by using Export Def from the UI, then paste that definition, excluding the XML declaration, into the correct location in the template file. See the Sage Intacct product help for more information about using Export Def.
Important: Remove empty sections from the templates—they are not allowed.
Package file template
You can use the template below to create your package and then validate your XML using the XSD found here: CustomERPPackage.xsd
Deleted packages
When a customization package is deleted in the Sage Intacct UI, everything in that package is deleted. For example, you might include a custom field in your package. If the custom field is used outside of the context of the package, then deleting the package from the UI deletes the custom field from everywhere it resides.
Tips
- You can put more than one custom field, Smart Rule, Smart Event, Smartlink, or custom report in the appropriate section of the template.
- You can provide a single customization that applies to multiple transaction definitions. Simply choose Inventory Control Transaction Detail, Purchase Order Transaction Detail, or Order Entry Transaction Detail in the Object field of the customization, then add as many transaction definitions as you want in the Document Type field.
- When a custom report is installed as part of a package, it cannot be edited in the Sage Intacct UI. However, the report can be duplicated and the duplicate edited.
- Each activity exported from the Sage Intacct UI includes the XML declaration at the top. Do not include the declaration when you perform cut and paste actions in the template.
- You can export a custom list view, but the importer does not implement custom list view imports.
- See the Sage Intacct product help for instructions on exporting and importing activities using the Customization Services wizard and the Custom Report wizard.
Sample package files
The following shows a sample package file that provides a custom field and a related custom report:
This excerpt from a package file shows how to use the <documentTypes>
tag to specify that a single customization applies to multiple transaction definitions:
In this example from another package file, <customLabels>
is used to define two locales: US English and French.
However, note that if you include both <label>
and <customLabels>
, then <label>
defines the company’s locale.
XML refresher
- Do not include white space (character spaces or line returns) before the XML declaration.
- Use quotation marks (either single or double) for all element attribute values.
- Tags and Attributes are case sensitive; for example
<col>
,<COL>
, and<Col>
are considered three different tags. - An element must have both an opening and a closing tag, unless it is an empty element.
- If a tag is a standalone empty element, it must contain a closing slash before the end of the tag (
<col />
). - Nest opening and closing tags correctly, without overlap.
- A single root element must enclose the entire document. The root element can only be used once in the document.
What’s next?
- Learn about capabilities of Customization Services by walking through the creation of an API Smart Event with conditions.