June20 Release Notes
  • 8 Minutes to read
  • Dark
    Light
  • PDF

June20 Release Notes

  • Dark
    Light
  • PDF

Article summary

Structured Planning: Workforce Planning User Interface Redesign (Preview)

We are releasing this feature for Preview only! It will be available in the Sandbox environment. Admin users can configure this feature directly from the Planful application (refer to the Enable Workforce Planning UI section).

In continuation to the Spring20 release, we have made some enhancements in Workforce Planning to improve the overall experience of using the application.

The list of improvements made to Workforce Planning is as follows:

  • In the Employees roster view, when there are multiple budget entities selected in the Budget Entity selection list box, in the Add Employee window the Home Budget Entity and Position Budget Entityfields are empty or have no entity selected by default. This is to help users select the required entity in these fields when there are multiple budget entities selected.
    Note:
    If you have selected a single budget entity in the Budget Entity list box, the Home Budget Entity and Position Budget Entity fields are defaulted to the budget entity selected in the Budget Entity list box.

    Multiple budget entities have been selected in the following image.

    Because multiple budget entities have been selected, the Home Budget Entity and Position Budget Entity fields do not have any entity selected by default.

  • The values in the Hire Date, Position Start, Position Endfields are greyed out if they are out of the range. This is to ensure that users can only add dates in the Position Start field that are always greater than or equal to the corresponding dates in the Hire Date field. In addition, users can only add dates in the Position End field that are always greater than or equal the corresponding dates in the Position Start field. An example of these combinations is illustrated in the following image.

Structured Planning: Heads Up! The Enable Delta Processing option will be set as Yes for all customers by default.

Starting from the Summer20 release, in the Define Workforce Planning Budgeting Criteria task, the Enable Delta Processing option will be set as Yes for all customers by default.

Graphical user interface, application

Description automatically generated

Enabling Delta Processing will ensure that all employees that have not been processed or employees with a Not Processed status (under the Process Status column) in the Employees roster will be processed.

Employees with a Processed status will not be processed again. This enhancement will allow processing time to be reduced by eliminating the need to process employees that have not been changed. This is illustrated in the following image.

On the Employee Add and Employee Edit pages, the Save & Process button will not be available. When you click the Save icon, the system will automatically process the unprocessed employee.

Dynamic Planning: Update to the SpotlightXL Add-In

If you have automated installation for SpotlightXL, then there is nothing you need to do as the update will be done automatically.

If you manually install SpotlightXL and related updates, then you must access the Installation Guide and download the latest update.

Dynamic Planning: Export Dimension/Attribute Hierarchy (Analytic and Master) API Update

With the April20 release we updated this API to include attribute mapping. Now, we’ve enhanced this API to allow you to export the Attribute hierarchy for a given model in JSON format as well as XML. example requests and responses in JSON and XML formats are provided below with dimension and attribute examples.

This API allows you to export the entire dimension/attribute hierarchy from a specified model in XML or JSON format. The following data is exported:

  • Hierarchy member code

  • Hierarchy member parent

  • Hierarchy member rollup operator

  • Hierarchy member display label

  • Mapped attributes

Note:
DAP (Direct Access to PCR) models and the HACPM_Financial model are not supported with this API. Additionally, the root member (top most member of the hierarchy) will not have a <Member-Parent> tag.

POST /api/modeling/model/dimension/export HTTP/1/1

Content-Type: application/json or application/xml

Accept: application/json or application/xml

X-ACCESS-TOKEN: $ACCESS_TOKEN_GUID$

Request Payload JSON

{
	“modelName”: “$ModelName”,
	“dimensionName”: “$DimensionName/$AttributeName”,
	“includeAttributes”: true
}

 Request Payload XML

<?xml version="1.0" encoding="UTF-8"?>
<payload>
<model>$ModelName</model>
<dimension>$DimensionName</dimension>
<include-attributes>$includeAttributes</include-attributes>
</payload>

Parameters

  1. $ModelName: (type: string) Name of the model. If the model specified does not exist, the operation is canceled.

  2. $DimensionName: (type: string) Name of the Dimension that is associated with this model. If the dimension specified does not exist, the operation is canceled.

  3. $AttributeName: (type: string) Name of the Attribute that is associated with this model. If the Attribute specified does not exist, the operation is canceled.

  4. $includeAttributes: (type: boolean) Include attribute mapping (if applicable).

Payload Sample JSON: Dimension Example

{
	“modelName”: “Financial Data”,
	“dimensionName”: “Account”,
	“includeAttributes”: true
}

Request

{
 "members": [
  {
"memberCode": "Expense",
"rollupOp": "-",
"memberDisplayLabel": "Expense"
  },
  {
"memberCode": "28 DYN Income",
"memberParent": "Expense",
"rollupOp": "+",
"memberDisplayLabel": "28 DYN Income",
"mapping": [
  {
"attributeName": "colour",
"attributeCode": "green"
  }
 ]
},
{
"memberCode": "28 HYP A/C",
 	"memberParent": "Expense",
"rollupOp": "+",
"memberDisplayLabel": "28 HYP A/C",
"mapping": [
  {
"attributeName": "colour",
"attributeCode": "red"
  }
 ]
},
 {
"memberCode": "28 Expense",
"memberParent": "Expense",
"rollupOp": "+",
"memberDisplayLabel": "28 Expense",
"mapping": [
  {
"attributeName": "colour",
"attributeCode": "orange"
  }
 ]
},
 {
"memberCode": "ExtraAccountMem21",
"memberParent": "Expense",
"rollupOp": "+",
"memberDisplayLabel": "ExtraAccountMem21"
  },
 {
"memberCode": "ExtraAccountMem22",
"memberParent": "Expense",
"rollupOp": "+",
"memberDisplayLabel": "ExtraAccountMem22",
"mapping": [
  {
"attributeName": "colour",
"attributeCode": "blue"
	}
  ]
 }
]
}

Payload Sample JSON: Attribute Example

{
"modelName": "Financial Data",
"dimensionName": "colour",
"includeAttributes": true
}

Response

{
    "members": [
        {
            "memberCode": "colour",
            "rollupOp": "~",
            "memberDisplayLabel": "colour"
        },
        {
            "memberCode": "blue",
            "memberParent": "colour",
            "rollupOp": "+",
            "memberDisplayLabel": "blue"
        },
        {
            "memberCode": "orange",
            "memberParent": "colour",
            "rollupOp": "+",
            "memberDisplayLabel": "orange"
        },
        {
            "memberCode": "red",
            "memberParent": "colour",
            "rollupOp": "+",
            "memberDisplayLabel": "red"
        },
        {
            "memberCode": "green",
            "memberParent": "colour",
            "rollupOp": "+",
            "memberDisplayLabel": "green"
        },
        {
            "memberCode": "_Attribute_Default",
            "memberParent": "colour",
            "rollupOp": "+",
            "memberDisplayLabel": "_Attribute_Default"
        }
    ]
}

Payload Sample XML: Dimension Example

<?xml version="1.0" encoding="UTF-8"?>
<payload>
<model>Financial Data</model>
<dimension>Account</dimension>
<include-attributes>true</include-attributes>
</payload>

Response

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Payload>
    <Dimension-Member>
        <Member-Code>Expense</Member-Code>
        <Rollup-Operator>-</Rollup-Operator>
        <Display-Label>Expense</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>28 DYN Income</Member-Code>
        <Member-Parent>Expense</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>28 DYN Income</Display-Label>
        <Attribute-Mapping>
            <Attribute>colour</Attribute>
            <Attribute-Code>green</Attribute-Code>
        </Attribute-Mapping>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>28 HYP A/C</Member-Code>
        <Member-Parent>Expense</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>28 HYP A/C</Display-Label>
        <Attribute-Mapping>
            <Attribute>colour</Attribute>
            <Attribute-Code>red</Attribute-Code>
        </Attribute-Mapping>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>28 Expense</Member-Code>
        <Member-Parent>Expense</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>28 Expense</Display-Label>
        <Attribute-Mapping>
            <Attribute>colour</Attribute>
            <Attribute-Code>orange</Attribute-Code>
        </Attribute-Mapping>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>ExtraAccountMem21</Member-Code>
        <Member-Parent>Expense</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>ExtraAccountMem21</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>ExtraAccountMem22</Member-Code>
        <Member-Parent>Expense</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>ExtraAccountMem22</Display-Label>
        <Attribute-Mapping>
            <Attribute>colour</Attribute>
            <Attribute-Code>blue</Attribute-Code>
        </Attribute-Mapping>
    </Dimension-Member>
</Payload>

Payload Sample XML: Attribute Example

<?xml version="1.0" encoding="UTF-8"?>
<payload>
<model>Financial Data</model>
<dimension>colour</dimension>
<include-attributes>true</include-attributes>
</payload>

Response

Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Payload>
    <Dimension-Member>
        <Member-Code>colour</Member-Code>
        <Rollup-Operator>~</Rollup-Operator>
        <Display-Label>colour</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>blue</Member-Code>
        <Member-Parent>colour</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>blue</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>orange</Member-Code>
        <Member-Parent>colour</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>orange</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>red</Member-Code>
        <Member-Parent>colour</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>red</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>green</Member-Code>
        <Member-Parent>colour</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>green</Display-Label>
    </Dimension-Member>
    <Dimension-Member>
        <Member-Code>_Attribute_Default</Member-Code>
        <Member-Parent>colour</Member-Parent>
        <Rollup-Operator>+</Rollup-Operator>
        <Display-Label>_Attribute_Default</Display-Label>
    </Dimension-Member>
</Payload>

Success Response

HTTP/1.1 200 OK

Error Responses

Service Not Available (Possibly due to maintenance)

HTTP/1.1 404 Not Found

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Could not find payload body <payload>…</payload>

Could not find model: xxx

Could not find dimension: xxx

Dimension cannot be null or empty.

HTTP/1.1 412 Precondition Failed

Unauthorized Access (Access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid XML (Bad Request)

HTTP/1.1 400 Bad Request

Dynamic Planning: Export Leaf-Level Data (Scoped) (Master and Analytic Models) API Update

This API allows you to export the leaf level data from a specified model in XML format, and, with this release JSON format. Additionally, you can now specify one or more filters to export specific data, and you can use attributes as filters.

POST /modeling/model/data/export HTTP/1.1

Content-Type: application/json or application/xml

Accept: application/json or application/xml

X-ACCESS-TOKEN: $ACCESS_TOKEN_GUID$

Request Payload JSON

{
  "model": "$ModelName",
  "filters": [
   {
"dimension": "$Dimension",
"filterType": "$FilterType",
"filterValues": [
"$value1",
"$value2"
   ]
 }
],
"memberDisplay": "$MemberDisplay",
"suppressZeroes": "$SupressZerosFlag"
}

Request Payload JSON - Attribute Example

{
  "model": "$ModelName",
  "filters": [
  {
"dimension": "$Dimension"/"$Attribute",
"filterType": "$FilterType",
"filterValues": [
"$value1",
"$value2"
  ]
 }
],
"memberDisplay": "$MemberDisplay",
"suppressZeroes": "$SupressZerosFlag"
}

Request Payload XML

<?xml version="1.0" encoding="UTF-8"?>
<payload>
<model>$ModelNamel</model>
<filters>
<filter>
<dimension>$Dimension</dimension>
<filter-type>$FilterType</filter-type>
<filter-value>$value1</filter-value>
<filter-value>$value2</filter-value>
</filter>
</filters>
  <member-display>$MemberDisplay</member-display>
 <suppress-zeroes>$SupressZerosFlag</suppress-zeroes>
</payload>

Request Payload XML - Attribute Example

<?xml version="1.0" encoding="UTF-8"?>
<payload>
<model>$ModelNamel</model>
<filters>
	  <filter>
<dimension>$Dimension/$Attribute</dimension>
<filter-type>$FilterType</filter-type>
<filter-value>$value1</filter-value>
<filter-value>$value2</filter-value>
     </filter>
    </filters>
  <member-display>$MemberDisplay</member-display>
  <suppress-zeroes>$SupressZerosFlag</suppress-zeroes>
</payload>

Parameters

$ModelName: (type: string) Name of the model

$Dimension: (type: string) Name of the dimension

$Attribute: (type: string) Name of the attribute

$FilterType: (type: string) Dimension filter type, can be FixedMember or MemberAndBelow

$FilterValue: (type: string) Value of the filter

$MemberDisplay (type: string) Optional, can be either Code or Display Label, but defaults to Code

$SupressZerosFlag (type: boolean) Optional, can be either True or False, but defaults to True

Payload Sample JSON

{
"model": "Financial Data",
"filters": [
	{
"dimension": "Account",
"filterType": "MemberAndBelow",
"filterValues": [
"Expense"
	]
  },
{
"dimension": "BusinessCenter",
"filterType": "FixedMember",
"filterValues": [
"000"
   ]
  },
{
"dimension": "Company",
"filterType": "FixedMember",
"filterValues": [
"2020 Host Spain",
"2020 HOST CND"
   ]
 },
{
"dimension": "CostCenter",
"filterType": "FixedMember",
"filterValues": [
"1000"
  ]
 },
{
"dimension": "Department",
"filterType": "FixedMember",
"filterValues": [
"Sales"
   ]
  },
{
"dimension": "Geography",
"filterType": "FixedMember",
"filterValues": [
"000-0000"
   ]
  }
],
"memberDisplay": "DisplayLabel",
"suppressZeroes": true
}

Payload Sample JSON - With Region Attribute

{
"model": "Financial Data",
"filters": [
	{
"dimension": "Account",
"filterType": "MemberAndBelow",
"filterValues": [
"Expense"
	]
  },
{
"dimension": "BusinessCenter",
"filterType": "FixedMember",
"filterValues": [
"000"
	]
  },
{
"dimension": "Company",
"filterType": "FixedMember",
"filterValues": [
"2020 Host Spain",
"2020 HOST CND"
	]
  },
{
"dimension": "CostCenter",
"filterType": "FixedMember",
"filterValues": [
"1000"
	]
  },
{
"dimension": "Department",
"filterType": "FixedMember",
"filterValues": [
"Sales"
	]
  },
{
"dimension": "Geography",
"filterType": "FixedMember",
"filterValues": [
"000-0000"
	]
  },
{
"dimension": "Region_Attribute",
"filterType": "FixedMember",
"filterValues": [
"North America"
	]
  }
],
"memberDisplay": "DisplayLabel",
"suppressZeroes": true
}

Payload Sample XML

<?xml version="1.0" encoding="UTF-8"?>
<payload>
<model>Financial Data</model>
<filters>
<filter>
<dimension>Account</dimension>
<filter-type>MemberAndBelow</filter-type>
<filter-value>Expense</filter-value>
</filter>
<filter>
<dimension>BusinessCenter</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>000</filter-value>
</filter>
<filter>
<dimension>Company</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>2020 Host Spain</filter-value>
<filter-value>2020 HOST CND</filter-value>
</filter>
<filter>
<dimension>CostCenter</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>1000</filter-value>
</filter>
<filter>
<dimension>Department</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>Sales</filter-value>
</filter>
<filter>
<dimension>Geography</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>000-0000</filter-value>
</filter>
</filters>
<member-display>DisplayLabel</member-display>
<suppress-zeroes>true</suppress-zeroes>
</payload>

Payload Sample XML - With Attribute

<?xml version="1.0" encoding="UTF-8"?>
<payload>
<model>Financial Data</model>
<filters>
<filter>
<dimension>Account</dimension>
<filter-type>MemberAndBelow</filter-type>
<filter-value>Expense</filter-value>
</filter>
<filter>
<dimension>BusinessCenter</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>000</filter-value>
</filter>
<filter>
<dimension>Company</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>2020 Host Spain</filter-value>
<filter-value>2020 HOST CND</filter-value>
</filter>
<filter>
<dimension>CostCenter</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>1000</filter-value>
</filter>
<filter>
<dimension>Department</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>Sales</filter-value>
</filter>
<filter>
<dimension>Geography</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>000-0000</filter-value>
</filter>
<filter>
<dimension>Region_Attribute</dimension>
<filter-type>FixedMember</filter-type>
<filter-value>North America</filter-value>
</filter>
</filters>
<member-display>DisplayLabel</member-display>
<suppress-zeroes>true</suppress-zeroes>
</payload>

Success Response

HTTP/1.1 200/204 OK

Error Responses

Service Not Available (possibly due to maintenance)

HTTP/1.1 503 Service Unavailable

One or more HTTP headers were missing

HTTP/1.1 412 Precondition Failed

Unauthorized Access (access key lookup failed)

HTTP/1.1 401 Unauthorized

Invalid JSON/XML (bad request)

HTTP/1.1 400 Bad Request

Not Found (source model not found)

HTTP/1.1 404 Not Found

Platform: Task Manager is Now Enabled for All Customers

With this release, we have enabled the Task Manager feature for all customers.

You can use Task Manager to stay organized and collaboratively streamline your financial planning process. You can add tasks with due dates, assign them to other users, comment on tasks, and attach meaningful information in the form of documents. Additionally, you can set up quick Planful navigation links to a task for direct access anywhere within the application. Admins users can assign, track, and manage various tasks associated with the planning process. For regular users, Task Manager also supports personalized checklist management. To know more about Task Manager, click here.

How to Enable Task Manager for Users

  1. Go to Maintenance > Admin > User Management > Navigation Role > Navigation Access.
  1. From the Navigation Role list box, select the required role.
  1. To enable Task Manager for the selected user, select the Task Manager check box.
  1. Click Save.

Was this article helpful?