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:

root customErpPackage with pointers to child elements

The child elements provide the content for the customization feature as follows:


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

<?xml version='1.0' encoding='UTF-8'?>
<customErpPackage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <packageDescription>
        <name>My custom package</name>
        <description>Good stuff you will want</description>
        <author>My name</author>
    </packageDescription>
    <customFields>
        <!-- Put the exported definitions for custom fields here. -->
    </customFields>
    <smartLinks>
        <!-- Put the exported definitions of Smart Rules, Smart Events, or Smartlinks here -->
    </smartLinks>
    <customReports>
        <!-- Put the exported definitions of custom reports here. -->
    </customReports>
    <interactiveReports>
        <!-- Put the exported definitions of interactive custom reports reports here. -->
    </interactiveReports>
</customErpPackage>

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


Sample package files

The following shows a sample package file that provides a custom field and a related custom report:

<?xml version="1.0" encoding="UTF-8"?>
<customErpPackage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <packageDescription>
        <name>Commission Report with Subtotals</name>
        <description>Commission Report with Subtotals</description>
        <author>johnm</author>
    </packageDescription>
    <customFields>
        <customField>
            <customFieldId>COMMISSION</customFieldId>
            <type>currency</type>
            <ownerObject>arinvoice</ownerObject>
            <label>Commission</label>
            <fieldSet />
            <page>Header</page>
            <dataDescription>
                <currency>
                    <leftOfDecimal>3</leftOfDecimal>
                    <rightOfDecimal>2</rightOfDecimal>
                </currency>
            </dataDescription>
            <description>Commission Amount</description>
        </customField>
    </customFields>
    <customReports>
        <customReport>
            <name>Commission Report with Subtotals</name>
            <description>Commission Report with Subtotals</description>
            <type>summary</type>
            <module>ar</module>
            <root>ARINVOICE</root>
            <columns>
                <field>
                    <path>ARINVOICE.CUSTOMER.CUSTOMERID</path>
                </field>
            </columns>
        </customReport>
    </customReports>
    <interactiveReports>
        <interactiveReport>
            <name>Interactive commission report</name>
            <reportingArea>AR Invoices</reportingArea>
            <type>crw</type>
            <module>ar</module>
            <queryDef>
                PD94bWwgdmV...c2F3OnJlcG9ydD4=
            </queryDef>
        </interactiveReport>
    </interactiveReports>
</customErpPackage>

This excerpt from a package file shows how to use the <documentTypes> tag to specify that a single customization applies to multiple transaction definitions:

<customFields>
    <customField>
        <customFieldID>CUSTOMER_HEALTH</customFieldID>
        ...
        <documentTypes>
            <documentType>Purchase Order-</documentType>
            <documentType>PO Receiver</documentType>
        </documentTypes>
    </customField>
</customFields>

In this example from another package file, <customLabels> is used to define two locales: US English and French.

    <customField> 
        <customFieldId>CF_ID_1</customFieldId>
        <type>checkbox</type>
        <ownerObject>vendor</ownerObject>
		<customLabels>
			<customLabel>	
				<locale>en-US.UTF-8</locale>
				<text>Preacquision vendor</text>
			</customLabel>
			<customLabel> 
				<locale>fr-FR.UTF-8</locale>
				<text>vendeur de préacquisition</text>
	    	</customLabel>
		</customLabels>	
        ...	

However, note that if you include both <label> and <customLabels>, then <label> defines the company’s locale.

    <customField> 
        <customFieldId>CF_ID_1</customFieldId>
        <type>checkbox</type>
        <ownerObject>vendor</ownerObject>
        <label>Preacquisition vendor</label>
		<customLabels>
			<customLabel>	
				<locale>en-US.UTF-8</locale>
				<text>Preacquision vendor</text>
			</customLabel>
			<customLabel> 
				<locale>fr-FR.UTF-8</locale>
				<text>vendeur de préacquisition</text>
	    	</customLabel>
		</customLabels>	
        ...	

XML refresher


What’s next?

Provide feedback