- Web Services
- Customization Services
- General Ledger
- Tools and Libraries
- Project and Resource Management
- Contracts
- Consolidations
- Platform Services
This release is scheduled to go live on the evening of February 22, 2019 Pacific Time.
Web Services
List entity details for the current user
A new readEntityDetails
API function has been added to aid Web Services integrations running on a user’s behalf. This will list information about the entities that the current user can access. In the UI, this mimics the inter entity navigation drop down at the top of the screen.
For more information:
Customization Services
New injection parameter for API endpoints
A new {!API_ENDPOINT!}
injection parameter lets you access the API endpoint in your Smart Events, SmartLink Click/Fetches, and SmartLink dashboard components.
You should add this new injection parameter to any existing or new components that include a session ID. Then adjust your server-side code to use this endpoint when calling back to Sage Intacct Web Services (instead of using one hard-coded to https://api.intacct.com/ia/xml/xmlgw.phtml
). This is a best practice the ensures you are using the correct/most efficient endpoint.
Danger: Do not blindly trust parameters that your code receives over the internet. Always validate the endpoint URL is https and a *.intacct.com
domain before using it.
Warning: Components may be copied to sandbox or preview environments when you opt in to these. You need to take additional steps to validate the source of these requests to avoid mixing data across environments.
For example, a dashboard Smart Link Fetch component can pass the session ID and API endpoint URL as follows:
https://www.example.com/dash.php?sessionId={!USERPROFILE.SESSIONID!}&endpoint={!API_ENDPOINT!}
The dash.php
code receiving this request should:
- Validate that the endpoint URL is https and has an
*.intacct.com
domain before making any callbacks. - Validate the session ID by making a new
getAPISession
callback request and parsing the response for the company ID. - Validate the company ID against an appropriate list.
General Ledger
General Ledger balances by dimensions
A new get_accountbalancesbydimensions
API function has been added. With it you can now more efficiently list account balances grouped by any dimension (standard or user-defined). Developers using the readByQuery
API function on the GLACCOUNTBALANCE
object should consider using this new function instead.
For more information:
Dynamic allocations
As your business scales, an after-the-fact allocation tool can save time and effort at period end and help provide an understanding of fully loaded costs for departments, projects and more. Sage Intacct now offers a native account allocation solution that allows you to automate the allocation calculation tasks for shifting costs or sharing revenues on a periodic basis.
For more information:
- Create Account Allocation Definition
- Update Account Allocation Definition
- Create Account Allocation Run
Account allocation groups
Account allocation groups support bulk processing for account allocations, which is useful for organizations with many allocations that must run on the same time period. You can also use account allocation groups to set up the order for sequential processing, where one allocation is dependent on the results of a prior one.
For more information:
Tools and Libraries
Sage Intacct API collection for Postman now handles special characters in passwords
The API collection provides an updated Generate API Session call that escapes problematic special characters, such as the ampersand (&), in passwords for Web Services or login credentials.
The Postman collection for the Web Services tutorial also includes the new Generate API Session call.
SDK Entity ID enhancements
After the entity ID enhancements from last release, all the Sage Intacct SDKs have been enhanced to better support entity slide in:
- A new
entity_id
key lets you provide credentials in.ini
files. - A new
EntityId
property is available in the client configuration object. - A new
INTACCT_ENTITY_ID
environment variable is available. - A new
EntityId
property is available on the ApiSessionCreate class.
The latest SDK versions including these changes are:
Project and Resource Management
Unique ID for tasks
The TASK
object has a new TASKID
parameter for assigning a readable unique ID. A task ID must be unique in the context of a project, and once a task has been created, its ID cannot be changed.
When creating timesheet entries or contract lines, you can now specify a given task by its task ID. In previous releases, tasks were specified with the TASKKEY
parameter, which was the record number for the task—now the more readable task ID can be used instead.
See the TASKID
parameter on the following functions:
Contracts
Percent complete billing for projects and tasks
Two new parameters on CONTRACTBILLINGTEMPLATE
let you create billing templates for the percent complete on tasks or projects. You can specify whether to base the percentages on estimated hours, observed percent completed, or planned hours. Budgeted hours is also available for projects.
For more information:
Consolidations
Ability to set up Global Consolidation books
You can now use the API to create consolidation books that automatically convert different currencies into a single reporting currency, thus providing an integrated view of financial and operational results.
Creating and setting up a new consolidation book is done in several phases:
- Create the book itself, providing the book ID, reporting currency, elimination entity, and so forth.
- Specify the entities to consolidate.
- Specify the elimination account where consolidation journal entries, including currency translation adjustments and elimination transactions for inter-entity balances, are posted.
- Add journals for GAAP, tax, and user-defined books (once you’ve run a consolidation, journals can no longer be modified).
- Override the exchange rate translation method for any GL account used in a consolidation.
Note: In 2018 Release 2, an improved version of Global Consolidations was introduced and old functionality was deprecated. Any consolidation book now has a LEGACY
parameter that indicates whether it is a new consolidation book (LEGACY=’F’) or a deprecated one. The API only supports creating and updating new consolidation books.
Platform Services
Changes to standard object pages now installed as part of your application
Platform Applications can include standard objects. In previous releases, custom fields, Smart Events, Smart Rules, and changes to pages for standard objects were included when you published your application’s XML file. However, on installing the application, everything was installed except the standard object page changes. So, if you had added sections or tabs to a standard object page, users would not get these when they installed.
The current release fixes this. Applications published with the current release or later now include a version tag set to 2, which tells the installer to include any standard object page changes along with other components.
<Version>2</Version>
If this version element is not present, the installer in the UI will issue a warning message. This message is bypassed when using the installer via the API—the application is still installed but the standard page changes are not.
If the application is undeployed or deleted from a company, the page customizations for the standard object remain unless they are manually deleted. A company can install multiple applications with changes on the same standard object pages, but newer installations of applications cannot change what was installed by previous applications.
Use the lookup field name when working with relationships in formulas
In previous releases, you could only access relationships in your formulas using the integration name of the relationship. For example, you would loop through a Lead object’s related Opportunities to calculate the total revenue value of those opportunities using the relationship’s integration name (R11002
):
var total = 0;
{!#LOOP_BEGIN.R11002!}
total += {!R11002.revenue_value!};
{!#LOOP_END.R11002!}
return total;
Assuming the lookup field name on the Lead object is opportunities
, you can now use this name preceded by a caret (^opportunities
) as an alternative to the integration name of the relationship:
var total = 0;
{!#LOOP_BEGIN.^opportunities!}
total += {!^opportunities.revenue_value!};
...