This release is scheduled to go live beginning on the evening of August 21, 2020.


Web Services

Look up fields and relationships for querying

A new lookup function helps you get the most out of the query function. The lookup function lists all the fields and relationships for an object that can be used in the select and/or filter statements of your query. You can use lookup on both standard and custom objects (query does not yet support custom objects though).

The following shows part of a response from a lookup on the journal entry object, GLBATCH. Note the information provided for the fields, which includes valid values. Relationships that can be queried are listed after the fields.

<Type Name="GLBATCH" DocumentType="">
    <Fields>
        <Field>
            <ID>RECORDNO</ID>
            <LABEL>Record number</LABEL>
            <DESCRIPTION>Record Number</DESCRIPTION>
            <REQUIRED>false</REQUIRED>
            <READONLY>false</READONLY>
            <DATATYPE>INTEGER</DATATYPE>
            <ISCUSTOM>false</ISCUSTOM>
        </Field>
        ...
        <Field>
            <ID>STATE</ID>
            <LABEL>State</LABEL>
            <DESCRIPTION></DESCRIPTION>
            <REQUIRED>true</REQUIRED>
            <READONLY>false</READONLY>
            <DATATYPE>TEXT</DATATYPE>
            <VALIDVALUES>
                <VALIDVALUE>Draft</VALIDVALUE>
                <VALIDVALUE>Submitted</VALIDVALUE>
                <VALIDVALUE>Partially Approved</VALIDVALUE>
                <VALIDVALUE>Approved</VALIDVALUE>
                <VALIDVALUE>Posted</VALIDVALUE>
                <VALIDVALUE>Declined</VALIDVALUE>
                <VALIDVALUE>Reversal pending</VALIDVALUE>
                <VALIDVALUE>Reversed</VALIDVALUE>
            </VALIDVALUES>
            <ISCUSTOM>false</ISCUSTOM>
        </Field>
        ...
    </Fields>
 ...
    <Relationships>
        <Relationship>
            <OBJECTPATH>JOURNAL</OBJECTPATH>
            <OBJECTNAME>JOURNAL</OBJECTNAME>
            <LABEL></LABEL>
            <RELATIONSHIPTYPE>MANY2ONE</RELATIONSHIPTYPE>
            <RELATEDBY>JOURNAL</RELATEDBY>
        </Relationship>
        ...
    </Relationships>
</Type>

The information in the response helps you compose a query such as:

<query>
    <object>GLBATCH</object>
    <select>
        <field>RECORDNO</field>
        <field>STATE</field>
    </select>
    <filter>
        <equalto>
            <field>STATE</field>
            <value>Posted</value>
        </equalto>
    </filter>
</query>

Note that owned objects are not included in the lookup output. For more information, see Building more complex queries.

Query into private entities

By default, in a multi-entity company, queries from the top-level entity do not access data in private entities. You can set the new showprivate option to true if you want to query data in private entities. For example:

<query>
    <object>APBILL</object>
    <select>
        <field>RECORDNO</field>
        <field>VENDORID</field>
    </select>
    <options>
        <showprivate>true</showprivate>
    </options>
</query>

ReadByName now supports names with commas

Previously, you could not use readByName for a name that included a comma. To address this, a backslash escape character (\) is now supported. For example, assume you have two contact IDs:

  • Roberts, Bob
  • Sarah Sharpes

The following returns both contacts:

<readByName>
    <object>CONTACT</object>
    <keys>Roberts\, Bob, Sara Sharpes</keys>
    <fields>*</fields>
</readByName>

Updated .NET and Node.js SDKs

In 2020 Release 1, Sage Intacct released a new XML query function that supports more robust, complex query statements than the legacy readByQuery function. The new query provides more operators, lets you sort results, perform aggregate operations such as sum or average, and use a larger page size limit. Perhaps the most interesting new capability is that you can get the values for fields on related objects and/or use them in filters.

The Sage Intacct SDKs for .NET and Node.js have been updated to include this new query capability. (The PHP SDK already supported the new query.)

Note: The new query does not currently support custom objects.

New examples

New examples for the SDKs show you how to use the new query and take advantage of its powerful features. Building and running the new examples will update the versions of the Sage Intacct SDKs:


Platform Services

List Platform Services applications

A new object, PTAPPLICATION, provides information about each Platform Services application installed in your company.

For example, the following lists the record number and application name for each installed Platform Services application:

<query>
    <object>PTAPPLICATION</object>
    <select>
        <field>RECORDNO</field>
        <field>APPLICATIONNAME</field>
    </select>
</query>

Data such as this is returned:

<PTAPPLICATION>
    <RECORDNO>10014</RECORDNO>
    <APPLICATIONNAME>T2 Additional features</APPLICATIONNAME>
</PTAPPLICATION>
<PTAPPLICATION>
    <RECORDNO>10016</RECORDNO>
    <APPLICATIONNAME>MCA My Conferencing App</APPLICATIONNAME>
</PTAPPLICATION>

For more information, see the functions that operate on PTAPPLICATION:

Visibility into installed components

Now, when a Platform application is published, all CSPs and onload scripts are included in the application wrapper. These components are also added to the Application Definition page when the application is installed. This reduces the risk of existing CSPs and onload scripts being accidentally deleted or overwritten in target companies.

More information about visibility into installed components is available in the Sage Intacct product help.

Trigger enhancements

We’ve simplified the process of creating a trigger that uses a document template, removing manual steps that took you out of your workflow. You no longer have to create and upload a document template prior to creating a trigger. See XML document templates in the Sage Intacct product help for details.

Problematic seed records now ignored

We fixed a potential issue with seed records in Platform applications. Before this release, you were able to install a Platform application that included seed records with problematic relationships. The problematic relationships used record numbers to specify related standard objects when they should have used the unique IDs. (Record numbers are not unique across companies.)

Starting with the current release, any seed records with these problematic relationships are ignored when installing Platform applications.

Important: Platform developers need to use the unique ID and not the record number when creating relationships in seed records.


General Ledger

Create budgets with details

You can now create a budget and its details all at once (batch) by creating a GLBUDGETHEADER object with owned GLBUDGETITEMS. You can also use update on GLBUDGETHEADER to add more budget details or modify existing budget details. A delete function lets you remove budget details.

For more information:

Important: The legacy budget objects (BUDGETHEADER and GLBUDGET) will be migrated to the new object types (GLBUDGETHEADER and GLBUDGETITEMS) in a future release (planned to occur between the 2020-R3 and 2021-R2 releases). After migration, create, update, and delete, when used on the old objects, will return error messages explaining that you need to use the new object names.

Cross-entity account allocation

You can now use cross-entity and cross-currency dynamic account allocations. To do so, enable the functionality in the header of the allocation definition, then specify the exchange rate for the allocation target.

See the ALLOWALLOCATION and EXCH_RATE_TYPE_ID parameters on these functions:


Project and Resource Management

Timesheet approval by proxy

You can now approve or decline timesheets on behalf of a different user. To do this, first create a Web services only user in the UI and grant this user Project permissions that include List and API Proxy for approving timesheets.

Next, send a request using the Web services only ID for the login, and provide the ID of a qualified user (in the approval chain) as the value for APPROVEDBY or DECLINEBY in the appropriate funtion.

For example, assume API_Proxy_1 is the Web services only user. The following request approves a timesheet on behalf of the user with ID jsmith:

<request>
    <control>
        <senderid>jsmith_ws_sender</senderid>
        <password>1234567</password>
        ...
    </control>
    <operation>
    <authentication>
        <login>
            <userid>API_Proxy_1</userid>
            <companyid>Johnson's Tractors</companyid>
            <password>3456789</password>
        </login>
        </authentication>
        <content>
            <function controlid="x99876">
                <approve>
                    <TIMESHEET>
                        <RECORDNO>1</RECORDNO>
                        <COMMENT>Approved for jsmith by API_Proxy_1</COMMENT>
                        <APPROVEDBY>jsmith</APPROVEDBY>
                    </TIMESHEET>
                </approve>
            </function>
        </content>
    </operation>
</request>

For more information:


Construction Early Adopter Program

Introducing project estimates

A project estimate enables you to track actual costs against estimated costs to determine whether your project is profitable. You can also create a project’s work breakdown structure (WBS) from an estimate.

After creating your project estimate, you use the project, task, and cost type dimensions to track actual costs across other applications, like AP, Purchasing, and the General Ledger.

For more information:

Override retainage percentage

You can now override the retainage percentage on entries of Purchasing or Order Entry transactions. For more information, see the new trx_amountretained parameter on create and update functions for:


Data Delivery Service

We are improving the Data Delivery Service processing times by limiting the duplicate objects in the queue. Only one object of the same type is allowed in the queue or processing state at the same time. If you run a delivery with an object that is already in the queue, your delivery job is cancelled.

For more information, see Data Delivery Service in the Sage Intacct product help.


Provide feedback