Customization Services
- Subscription
- Customization Services vs Platform Services
- Types of customizations
- Authorization
- Namespaces
- Customization packages
- Injections
- Conditions
- Integration names for standard fields and custom fields
- Troubleshooting and FAQs
- Cheat sheet for Smart Rules, Smart Events, and Smartlinks
- What’s next?
Customization Services provides the tools to instantly add customizations to Sage Intacct standard objects.
You can add:
- Custom fields
- Custom reports
- Custom list views
- Smartlinks
- Smart Rules
- Smart Events
- Customization packages
This topic provides an overview of Customization Services features for developers. Usage information about Customization and Platform Services is available in the Sage Intacct product help. The product help also covers custom document templates, which are not discussed here.
Subscription
You can subscribe to Customization Services by navigating to Company > Admin > Subscriptions. If you see Platform Services instead of Customization Services, you have access to all the features in Customization Services as well as features available only in Platform Services. In other words, Platform Services provides a superset of the functionality.
Customization Services vs Platform Services
Customization Services lets you customize standard Sage Intacct objects (Customer, Vendor, Account, AP Bill, and so forth). For example, a property management company might want to add a field to the Location record to store the number of units in each building.
Platform Services lets you extend the Sage Intacct product by creating custom objects, pages, and applications. For example, a human resource manager might want an application to track employee benefit programs and integrate with employee information already in the system.
All the features in Customization Services are also available in Platform Services. The following shows Customization Services features in the larger context of Platform Services.
Depending on whether you subscribe to Customization Services or Platform Services, you will use a different approach to access features.
Types of customizations
Custom reports
You can create custom reports to get insight and answers from the unique information stored in your Sage Intacct company. Unlike financial reports, which are based on financial groupings such as assets and liabilities, custom reports can be based on individual records and fields, as well as non-financial operational information.
Two custom report writers are available:
- The Interactive Custom Report Writer provides more modern reports with advanced controls
- The original custom report writer
Reports defined using both writers can be examined and run via the API as well as the UI.
Custom fields
Custom fields, which are likely the most commonly-used feature of Customization Services, let you capture data that is unique to your business practices. Most other Customization Services activities rely on data captured in custom fields. After you add a custom field, it can be used as part of a standard form such as an Order Entry form. Namespaces are recommended for the integration names of custom fields.
See the Sage Intacct product help for usage information on custom fields.
Custom list views
The way a list is arranged, filtered, and sorted is called a view. Sage Intacct provides standard views for displaying list items or recently viewed or modified list items. You can also create custom views to display list items the way you like.
Note: Custom list views cannot be packaged and imported to the system.
Smartlinks
There are two types of Smartlinks, Click and Fetch.
-
A Smartlink Click is a conditional hyperlink that you can embed on the view page of a record. The hyperlink can be configured to appear only if certain criteria are met. For example, you might have an external document ID field on the expense report object that is set by an expense integration. You can use a Smartlink Click on that object to show a hyperlink to the external system on any record that provides a value for this field.
-
A Smartlink Fetch is a conditional iframe that embeds external web content on the view page of a record. Note that some websites do not allow framing their content inside another page.
You can use conditions and injections as described below when creating Smartlinks.
Smart Rules
Smart Rules are conditions that generate a warning or error message to the user. Smart Rules can be applied to Add, Set, or Delete events on records.
When writing conditions for Smart Rules, understand that the condition is for the rule you want enforced, not the exception. For example, if you want to display an error whenever a bill description is null, the rule’s condition should return true if the description has a value (is not null):
'{!APBILL.DESCRIPTION!}' != ''
You use conditions and injections as described below when creating Smart Rules.
Tips
-
A large number of Smart Rules can lead to maintenance problems. Use them when validation is truly critical and when the business rules in the rule are not frequently subject to change.
-
Smart Rules can be suspended by marking them inactive. This can be handy when importing legacy data that might not conform to the current rules.
-
If you are troubleshooting a rule and are not sure what data is in the injection parameter, add the injection parameter to the error message to display the data.
Smart Events
Smart Events are actions that fire after certain conditions are met. The actions can be performed after Add, Set, or Delete events on records. Smart Events can be used to:
- Send email
- Submit HTTP POSTs to send application/x-www-form-urlencoded content to a URL
- Create log entries
- Execute Sage Intacct API functions
After the conditions are met, Smart Event actions are queued for processing. Actions are fire and forget, meaning feedback about errors is not available. For example, assume a bill is edited and a Smart Event fires a Sage Intacct API function. If there are errors in that API function call, safeguards such as retry logic or admin notifications cannot be used.
Note: If there are multiple Smart Events on the same object, they are typically processed in order. However, there is no guarantee of FIFO since the queue is managed by multiple concurrent workers.
You can use conditions and injections when creating Smart Events. For an example, see Smart Event Walkthrough.
Synchronous Smart Event API calls
There may be cases where you need to ensure that a group of events, including the triggering action, are executed in order as a set. You can use synchronous API Smart Events to create a chain of actions that succeed or fail as a group. See Synchronous API Smart Events for more information.
Authorization
You can use Customization Services if you are an administrator in the Sage Intacct company you plan to customize.
Namespaces
It’s considered a best practice to add a namespace to the ID field of your customizations. This helps avoid name conflicts with other customizations, particularly those from partners. Keep the namespace short.
For example, My Expense Integration would prefix its smart event ID with MEI_
.
Customization packages
Instead of managing individual customizations, you can group them into a single package that can imported. All packages are XML documents that conform to the Sage Intacct package XML schema definition. You may include up to 100 customizations (custom fields, Smart Rules, an so forth) in a package.
Packages are recommended as a best practice if you are a partner writing a solution utilizing Customization Services. Your customer’s administrator can easily install the package file, which means that you do not need administrative access to their Sage Intacct company.
If you are using Platform Services to write an application and also have standard object customizations, these should be included with your platform application. You should not have a separate customization package and a platform application installer. This will create upgrade problems for you in the future.
See Customization Packages for more information.
Injections
Injection parameters, similar to merge fields in Platform Services, are available for use in Smartlinks, Smart Rules, and Smart Events. An injection parameter is very similar to a merge field in your favorite word processing program.
The most basic injection uses the ID of the current object being extended, followed by a period, followed by the ID of the field within that object. The {!
and !}
characters are used as opener and closer characters respectively. For example, the following shows an injection used in a Smartlink Click URL:
If the external document ID of the record is 12345
, the link evaluates to https://www.example.com/view.php?id=12345
.
Field lookup
The field lookup capability makes it easy to add injections. You can select injections from the Sage Intacct UI instead of adding them manually. For example, the following shows how to use the field lookup when writing a condition for a Smart Rule:
You can use the field lookup to help you write conditions for Smart Rules, Smart Events, and Smartlinks. You can also use this capability when creating the building blocks that comprise these. For example, you can use field lookup for creating Smart Event email addresses, Smart Rule error messages, Smartlink targets, and so forth. The following diagram shows all the places you can use the lookup:
Note that the field lookup lets you access fields for related objects as well as any custom fields.
See the Sage Intacct product help for more information.
Conditions
Conditions are decision mechanisms built into activities to determine when they will appear and how they will behave. Conditions are at the heart of Smartlinks, Smart Rules, and Smart Events. You use the PHP condition format when writing conditions.
Conditions can be composed of:
- Injections
- Literals
- Operators
- Methods
The following is a simple condition that evaluates to true only if the STOCKSYMBOL
field is not empty:
{!CUSTOMER.STOCKSYMBOL!} != ''
When working with conditions in Smart Rules, consider using ternary operators to avoid writing overly long conditions. The expression (expr1) ? (expr2) : (expr3)
evaluates to expr2
if expr1
evaluates to TRUE
, and expr3
if expr1
evaluates to FALSE
. For example, the following can be used to display an error when a user posts a bill line to account 5000 and location SJC:
({!APBILLITEM.ACCOUNTNO!} == '5000' && {!APBILLITEM.LOCATIONID!} == 'SJC') ? false : true
.
You can also use provided methods, such as left()
, to help write your conditions. For example, the following evaluates to true for an APBILL
that has an APBILLITEM
whose department ID begins with 100-
:
left({!APBILLITEM.DEPARTMENTID!}, 4) === '100-'
See the Sage Intacct product help for more usage information, including available operators and methods.
Integration names for standard fields and custom fields
The integration names for standard and custom fields can be found in the Sage Intacct UI under the corresponding object under Customization Services > Catalog.
Troubleshooting and FAQs
See the FAQs for Customization Services.
Cheat sheet for Smart Rules, Smart Events, and Smartlinks
A single-page cheat sheet for Smart Rules, Smart Events, and Smartlinks is now available. Print double sided and at actual size.
What’s next?
-
Learn how to package customization activities in a single XML file for easy deployment.
-
Learn about capabilities of Customization Services by walking through the creation of an API Smart Event with conditions.