Planful API Library
  • 81 Minutes to read
  • Dark
    Light
  • PDF

Planful API Library

  • Dark
    Light
  • PDF

Article Summary

API Library: Structured Planning, Consolidation, Reporting & Analytics

Introduction

Planful provides many Application Programming Interfaces (APIs). These APIs offer a simple, powerful and secured way of importing or exporting data to and from the Planful application.

Planful and Workiva have partnered to optimize the financial reporting process by providing APIs to integrate Workiva’s Wdesk (a collaborative work management platform) with Planful platforms. With the ability to integrate data directly from Planful into the Workiva Wdesk platform, organizations can achieve a seamless financial close, consolidation, reporting, and disclosure process.

You might leverage this integration by using Planful to generate US GAAP and IFRS compliant balance sheets, income statements, statements of cash flow, and other financial and statutory reports. Create board-ready reports and presentations that integrate structured financial and operational data with unstructured data and commentary. And, leverage Wdesk to create and manage complex reporting requirements, including SEC filings, XBRL, and iXBRL.

Read About Data Import

Read About Data Export

Read About Workiva

Data Import

The data import operation loads data from source systems into Planful. Data import can be done for the following data load types:

  1. Segment Hierarchies
    1. Common COA
    2. Sales
  2. Data
    1. GL Data
    2. Sales Data
    3. Transaction Data
    4. Translation Data
  3. Attributes
  4. Attribute Hierarchies
  5. Entity Hierarchies
    1. Budget Entity Hierarchy
  6. User Information
    1. User Load
  7. Workforce Planning
    1. Workforce - Employee Data
    2. Workforce - Employee Compensation Item
    3. Workforce - Employee Allocations
  8. Currency Exchange Rates
  9. External Source Model

Data Export

The data export operation retrieves data from Planful. Data export can be done for:
a. COA Segments
b. GL Data
For each operation the Client application submits a synchronous request to the Planful Web Service API, awaits the Web Service’s response, and processes the results.

Workiva Integration

You’ll use Host APIs to extract the metadata (the report structure) and data (the data in the report) directly from your financial reports generated within Planful. These APIs are integrated with Workiva via Boomi . The extracted financial metadata and data is loaded to the WDesk platform, which automates the process of generating SEC filings and XBRL tagging.

Because the APIs extract data directly from your financial reports, the need for consolidation, the generation of financial statements, and other manual steps in WDesk is eliminated. Additionally, these APIs provide you with the option to override page level parameters on the Dynamic Report.

Additionally, the request API call is capable of overriding partial page filters applied to a Dynamic Report. So, for example, in the Request sample code below, the Scenario in a Dynamic Report is set to 100. You can change the parameter in the API request to run the report for Scenario 102 without making a change to the Dynamic Report or other filters.

API authentication for data and metadata extraction as well as dimension security on the data is applied based on Integration User as configured for the data load APIs.

Best Practices / Tips and Tricks

  • To override page level parameters on the dynamic report, you must provide the dimension name and dimension code.Example - {[Scenario].[Actual]} ,{ [Time].[2015], [Time].[2016]}, {[Company].[US Company1]}

  • APIs extract the data from the OLAP cube. Information and settings like excel formulas, headers and footers, report level comments, insert formulas, formula exceptions, hide/show rows, text formatting, suppress empty rows/columns/headers that are present in a report in the application are excluded in the API response.

  • APIs are supported only for Financial and Workforce (a.k.a cubes).

In Practice: Workiva API Sample

Method
POST

Endpoint Url Syntax
<Provide Application Url>/WkReportDataProvider/GetReportData

Headers
Key : APIKey
Value : Authorization Key

Request Example:

[Copy](javascript:void(0);) ```

`{

"ReportCode" : "page filters report1" ,

"Lineage" : "File Cabinet\Planful Training" ,

"CubeName" : "RepCube" ,

"PageFilters" :

[

{ "DimensionName" : "Scenario" , "MemberIds" : [100]},

{ "DimensionName" : "Reporting" , "MemberIds" : [20]}

],

"ApplyPageFilters" : "true"

}`



#### Request Example for Workforce:
[Copy](javascript:void(0);) ```

`{

"ReportCode" : "WFP Actuals1",

"Lineage" : "File Cabinet",

"CubeName" : "Workforce",

"PageFilters" : [ {

"DimensionName" : "Employee",

"MemberIds" : [ 763799,763801,763803,763805]

} ],

"ApplyPageFilters" : "true"

}

`

Response Example:

[Copy](javascript:void(0);) ```

`{

"RowHeaders" : [

[

{

"Label" : "Balance Sheet" ,

"DimensionName" : "Account" ,

"MemberId" : "2"

}

]

],

"ColumnHeaders" : [

[

{

"Label" : "2018" ,

"DimensionName" : "Time" ,

"MemberId" : "2018"

}

]

],

"Data" : [

[

"-1217991.666666"

]

],

"Status" : "Success" ,

"StatusMessage" : ""

}

`



## Objects Overview
The data import/export operations can be done for the Planful application using Planful Objects. Objects are the programmatic representation of Planful application data. Object properties represent the fields in data entities. Client applications set or retrieve data values via these properties. For example, data is represented by the GLData object, which has properties like Scenario, Fiscal Year and Amount.


## API Compliance
All APIs are implemented to comply with the following specifications:
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 777px;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1" style="width: 373px;">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 387px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="background-color: #d3d3d3;font-weight: bold;color: #404040;">Standard Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="background-color: #d3d3d3;font-weight: bold;color: #404040;">Website</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Simple Object Access Protocol (SOAP) 1.1</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">http://www.w3.org/TR/2000/NOTE-SOAP-20000508/</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Web Service Description Language (WSDL) 1.1</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">http://www.w3.org/TR/2001/NOTE-wsdl-20010315</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">WS-I Basic Profile 1.1</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html</td>                                                </tr>                                            </tbody>                                        </table>




## Client Application Platforms
APIs work with any modern SOAP development environment. You can use APIs on any of the following Client platforms:
 
  * .NET
  * Boomi (which uses JAVA for implementation)
  * SOAP UI (A well known testing tool for testing SOAP based Web Services)
 


### WSDL File
The WSDL file needs to be imported into the development platform so that your development environment can generate the necessary objects to build Client Web Service applications.


### .NET API Client Proxy
The following command creates a client proxy class in the Microsoft Visual Basic language for Host API located at the specified URL. The tool saves the client proxy class in the HostAPI.vb file. 
Wsdl.exe /language:VB /out:HostAPI.vb 
https://<PlanfulServer>/HostAPI/HostAPI_StateFree.asmx?WSDL
HostAPI.vb file can be included in the client application and can be instantiate the API object in VB.Net as follows:
Dim    api   As New   HostAPI()  


### Service Requests and Responses
Your Client application prepares and submits a service request to the Planful Web Service, the Web Service processes the request and returns a response, and the Client application handles the response.
Once the API call is invoked, your Client application waits until it receives a response from the service. Asynchronous calls are not supported.


## API Calls - Overview
API calls represent specific operations that your Client applications can invoke at runtime to perform certain tasks. For example, you can: query your organization’s data; load COA segment / GL data; obtain metadata about your organization’s data; and run utilities to perform administration tasks.
API calls are categorized into two types:
 
  * Core calls - Used to perform data import or data export operations on COA segments and GL data.
  * Utility calls - Used to perform utility functions such as logging into the application, retrieving current user session details, and retrieving current application version.
 


## Core API Calls
The following provides a list of API core calls:
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1" style="width: 204px;">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 629px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Load_Da">Load_Data</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Loads the COA Segment/GL data to Planful staging area</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Transfer">Transfer_Data</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Transfers the staging data to the destination table.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Clear_Da">Clear_Data</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Clears the staging data in Planful.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Segment1">Segment1_Retrieve</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the collection of segment1 objects that correspond to segment1 data rows in the database.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Segment2">Segment2_Retrieve</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the collection of segment2 objects that correspond to segment2 data rows in the database.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Segment3">Segment3_Retrieve</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the collection of segment3 objects that correspond to segment3 data rows in the database.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Segment4">Segment4_Retrieve</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the collection of segment4 objects that correspond to segment4 data rows in the database.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Segment5">Segment5_Retrieve</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the collection of segment5 objects that correspond to segment5 data rows in the database.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Segment6">Segment6_Retrieve</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the collection of segment6 objects that correspond to segment6 data rows in the database.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Segment7">Segment7_Retrieve</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the collection of segment7 objects that correspond to segment7 data rows in the database.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Segment8">Segment8_Retrieve</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the collection of segment8 objects that correspond to segment8 data rows in the database.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1"><a href="#GLData_R">GLData_Retrieve</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Retrieves the collection of GLData objects that correspond to GL data rows in the database.</td>                                                </tr>                                            </tbody>                                        </table>




## Utility Calls
The following table provides a list of API utility calls:
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1" style="width: 192px;">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 645px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#Login">Login</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Logs into the Planful Web Service application to perform data import/export operations.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#GetSessi">getSessionId</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the current user session details like session ID.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#GetVersi">getVersion</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the current version of the Planful application.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#GetAllSe">getAllSegments</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the collection of Financial segments for the organization as configured in the Planful application.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><a href="#GetAllCu">getAllCurrencies</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Retrieves the collection of currency objects that correspond to currency data rows in the database.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1"><a href="#GetAllCu2">getAllCurrencyTypes</a>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Retrieves the collection of currency type objects that correspond to currency type data rows in the database.</td>                                                </tr>                                            </tbody>                                        </table>




## Objects
Planful objects are the programmatic representation of Planful application data. An object is analogous to a data row in a database. Planful objects are categorized into two types based on functionality:
 
  * Core objects - These objects are the place holders of data values for an organization’s COA segments and GL data. Core objects are response objects that are returned from the API method calls for retrieving the COA segments and GL data information.
  * Utility objects - Utility objects are place holders for data values that are returned as response objects for API utility method calls.
 


### Core Objects


#### Segment1
Segment1 represents the data values of a financial account type segment. The following table provides a list of properties for the Segment1 object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 676px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">Memberid</span>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">String</span> <span style="font-weight: normal;">IDX - segment index</span></td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Code</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ParentCode</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Member Type</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">MemberType enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">RollupOperator</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">RollupOperator class instance</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">AccountGroup</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">AccountGroup enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">AccountType</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">AccountType enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">CreditDebit</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">CreditDebit enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">NormalDataInput</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">NormalDataInput enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">CurrencyType</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">CurrencyType class instance</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Variance</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Variance enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ActiveStatus</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">ActiveStatus enumeration</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Attributes</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Collection of Attribute type that represents the user definedattributes for segment1 members.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Sort</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Integer</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">RollupLevels</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Collection of RollupLevel type, which represents the rolluplevels for the segment members.</td>                                                </tr>                                            </tbody>                                        </table>




#### Segment2
Segment2 represents data values for a company type segment. The following table provides a list of properties for the segment2 object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 695px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">Memberid</span>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">String</span> <span style="font-weight: normal;">IDX - segment index</span></td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Code</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ParentCode</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Member Type</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">MemberType enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">RollupOperator</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">RollupOperator class instance</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Currency</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Currency class instance</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ActiveStatus</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">ActiveStatus enumeration</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Attributes</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Collection of Attribute type that represents the user-definedattributes for segment2 members.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Sort</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Integer</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">RollupLevels</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Collection of RollupLevel type, which represents the rolluplevels for the segment members.</td>                                                </tr>                                            </tbody>                                        </table>




#### Segment3
Segment3 represents data values for sub-account or ICSegment segment type. The following table provides a list of properties for the segment3 object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 694px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">Memberid</span>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">String</span><span style="font-weight: normal;">IDX - segment index</span>                                                    </td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Code</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ParentCode</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Member Type</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">MemberType enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">RollupOperator</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">RollupOperator class instance</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ActiveStatus</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">ActiveStatus enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Attributes</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Collection of Attribute type that represents the user definedattributes for segment4 members.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Sort</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Integer</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">RollupLevels</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Collection of RollupLevel type, which represents the rolluplevels for the segment members.</td>                                                </tr>                                            </tbody>                                        </table>




#### Segment4
Segment4 represents data values for department or any other segment type. The following table provides a list of properties for the segment4 object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 694px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">Memberid</span>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">String</span> <span style="font-weight: normal;">IDX - segment index</span></td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Code</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ParentCode</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Member Type</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">MemberType enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">RollupOperator</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">RollupOperator class instance</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ActiveStatus</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">ActiveStatus enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Attributes</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Collection of Attribute type that represents the user definedattributes for segment4 members.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Sort</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Integer</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">RollupLevels</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Collection of RollupLevel type, which represents the rolluplevels for the segment members.</td>                                                </tr>                                            </tbody>                                        </table>




#### Segment5
Segment5 represents data values for department or any other segment type. The following table provides a list of properties for the segment5 object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 692px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">Memberid</span>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">String</span> <span style="font-weight: normal;">IDX - segment index</span></td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Code</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ParentCode</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Member Type</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">MemberType enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">RollupOperator</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">RollupOperator class instance</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ActiveStatus</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">ActiveStatus enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Attributes</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Collection of Attribute type that represents the user definedattributes for segment5 members.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Sort</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Integer</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">RollupLevels</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Collection of RollupLevel type, which represents the rolluplevels for the segment members.</td>                                                </tr>                                            </tbody>                                        </table>




#### Segment6
Segment6 represents data values for department or any other segment type. The following table provides a list of properties for the segment6 object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 696px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">Memberid</span>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">String</span> <span style="font-weight: normal;">IDX - segment index</span></td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Code</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ParentCode</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Member Type</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">MemberType enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">RollupOperator</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">RollupOperator class instance</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ActiveStatus</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">ActiveStatus enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Attributes</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Collection of Attribute type that represents the user definedattributes for segment6 members.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Sort</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Integer</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">RollupLevels</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Collection of RollupLevel type, which represents the rolluplevels for the segment members.</td>                                                </tr>                                            </tbody>                                        </table>




#### Segment7
Segment7 represents data values for department or any other segment type. The following table provides a list of properties for the segment7 object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 694px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">Memberid</span>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">String</span> <span style="font-weight: normal;">IDX - segment index</span></td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Code</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ParentCode</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Member Type</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">MemberType enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">RollupOperator</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">RollupOperator class instance</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ActiveStatus</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">ActiveStatus enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Attributes</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Collection of Attribute type that represents the user definedattributes for segment7 members.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Sort</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Integer</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">RollupLevels</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Collection of RollupLevel type, which represents the rolluplevels for the segment members.</td>                                                </tr>                                            </tbody>                                        </table>




#### Segment8
Segment8 represents data values for department or any other segment type. The following table provides a list of properties for the segment8 object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 693px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">Memberid</span>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;"><span style="font-weight: normal;">String</span> <span style="font-weight: normal;">IDX - segment index</span></td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Code</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ParentCode</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Member Type</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">MemberType enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">RollupOperator</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">RollupOperator class instance</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ActiveStatus</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">ActiveStatus enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Attributes</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Collection of Attribute type that represents the user definedattributes for segment8 members.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Sort</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Integer</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">RollupLevels</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Collection of RollupLevel type, which represents the rolluplevels for the segment members.</td>                                                </tr>                                            </tbody>                                        </table>




#### GLData
GLData represents data values for budget / forecast / actual data for a fiscal period. The following table provides a list of properties for the GLData object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 497px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Scenario</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Scenario code</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">FiscalYear</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Fiscal Year</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">FiscalPeriod</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Fiscal period</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Segment1</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Segment1 code</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Segment2</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Segment2 code</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Segment3</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Segment3 code</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Segment4</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Segment4 code</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Segment5</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Segment5 code</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Segment6</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Segment6 code</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Segment7</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Segment7 code</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Segment8</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Segment8 code</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Reporting</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Reporting code</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Calculated</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Calculated code</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">AmountType</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">AmountType enumeration number</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">Amount</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Amount</td>                                                </tr>                                            </tbody>                                        </table>


The GLData object is designed to support 8 segments of GL information. Non-applicable segments can be left as null during the instantiation of the GLData object.


#### Dimension Security
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 658px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1"><span style="font-weight: normal;">FirstName</span>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1"><span style="font-weight: normal;">String</span>                                                    </td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">LastName</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">UserLogin</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">A valid email ID  (the API will check to see if the user is already mapped in the application)</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">NavigationRole</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Existing reporting role</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">ReportingRole</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Existing reporting role</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">SupportRole</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Existing support role type (the API validates if the number of administrators are within the allowed limit</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">AuthenticationType</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Status</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">In Boolean format (“false” for Inactive, “true” for Active)</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">LoginName</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">The credentials of the user are used to authenticate the API connection </td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Password</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">The credentials of the user are used to authenticate the API connection </td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">TenantCode</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">The credentials of the user are used to authenticate the API connection </td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1"><span style="font-weight: normal;">Memberid</span>                                                    </td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1"><span style="font-weight: normal;">String</span><span style="font-weight: normal;">IDX - segment index</span>                                                    </td>                                                </tr>                                            </tbody>                                        </table>




#### Attribute
Attribute contains the details of user-defined attributes in the segments. The following table provides a list of properties for the Attribute object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">C</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Name of the attribute.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">Value</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Value of the attribute.</td>                                                </tr>                                            </tbody>                                        </table>




#### RollupLevel
RollupLevel contains the details of rollup levels for segment members. The following table provides a list of properties for the RollupLevel object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Code</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Name of the rollup level.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Value of the rollup level.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">Level</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Level value for the rollup level.</td>                                                </tr>                                            </tbody>                                        </table>




#### Segment1Filter
Segment1Filter contains the details of filter criteria for filtering the data rows during the segment1 retrieval. The following table provides a list of properties for the Segment1Filter object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 699px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Field</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Segment1Field enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">FieldOperation</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">FieldOperator enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">Value</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Collection of string data that is to be filtered with the Field andFieldOperator criteria.</td>                                                </tr>                                            </tbody>                                        </table>




#### Segment2Filter
Segment2Filter contains the details of filter criteria for filtering the data rows during the segment2 retrieval. The following table provides a list of properties for the Segment1Filter object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 698px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Field</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Segment2Field enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">FieldOperation</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">FieldOperator enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">Value</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Collection of string data that is to be filtered with the Field andFieldOperator criteria.</td>                                                </tr>                                            </tbody>                                        </table>




#### SegmentFilter
SegmentFilter contains the details of filter criteria for filtering the data rows during the data retrieval of segments other than segment1 and segment2. The following table provides a list of properties for the SegmentFilter object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 708px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Field</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">SegmentFilter enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">FieldOperator</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">FieldOperator enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">Value</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Collection of string data that is to be filtered with the Field andFieldOperator criteria.</td>                                                </tr>                                            </tbody>                                        </table>




### Utility Objects


#### LoginResult
Loginresult object contains the status and message for the login into the API. It is a result object that is returned as a response from the API for the login request. The following table provides a list of properties for the Loginresult object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 741px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Message</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Status message for the login method call.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Success</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Boolean value to indicate whether the login method call is asuccess or failure.Possible values are:TrueFalse</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">SessionId</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">The session Id to perform data import / export operations.Used for authenticating the API method call.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">Error</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Error object is returned in case of any error during the Loginmethod call.</td>                                                </tr>                                            </tbody>                                        </table>




#### OperationResult
The Operationresult object contains the status and message for the API method call. For example, Load_Data method call returns an Operation result object. The following table provides a list of properties for the Operationresult object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 751px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Message</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Status message for the login method call.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Success</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Boolean value to indicate whether the login method call is asuccess or failure.Possible values are:TrueFalse</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">Error</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">Error object is returned in case of any error during the Loginmethod call.</td>                                                </tr>                                            </tbody>                                        </table>




#### APPVersion
Appversion object contains the data values for the Planful application version. The following table provides a list of properties for the Appversion object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1" style="width: 515px;">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">The Planful application version name.</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">Version</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">The Planful application version.</td>                                                </tr>                                            </tbody>                                        </table>




#### COASegment
COASegment object contains the data values for the financial segment of the organization. The following table provides a list of properties for the COASegment object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">DisplayName</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Type</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Visibility</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">Visibility enumeration member</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">ActiveStatus</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">ActiveStatus enumeration member</td>                                                </tr>                                            </tbody>                                        </table>




#### Currency
Currency object contains the data values for the currency data. The following table provides a list of properties for the currency object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Code</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">String</td>                                                </tr>                                            </tbody>                                        </table>




#### CurrenctType
CurrencyType object contains data values for currency type data. The following table provides a list of properties for the currency type object.
<table style="mc-table-style: url('../Resources/TableStyles/KBTable1.css');width: 50%;" class="TableStyle-KBTable1" cellspacing="1">                                            <colgroup><col class="TableStyle-KBTable1-Column-Column1">                                            <col class="TableStyle-KBTable1-Column-Column1">                                            </colgroup><tbody>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Name</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1" style="font-weight: bold;background-color: #d3d3d3;">Property Description</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyE-Column1-Body1">Code</td>                                                    <td class="TableStyle-KBTable1-BodyD-Column1-Body1">String</td>                                                </tr>                                                <tr class="TableStyle-KBTable1-Body-Body1">                                                    <td class="TableStyle-KBTable1-BodyB-Column1-Body1">Name</td>                                                    <td class="TableStyle-KBTable1-BodyA-Column1-Body1">String</td>                                                </tr>                                            </tbody>                                        </table>




## API Methods
The following section describes the API methods in detail. The sample code provided for the API method consumption is written in ASP.NET (VB).
Load_Data 
Transfer_Data 
Clear_Data 
Segment1_Retrieve 
Segment2_Retrieve 
Segment3_Retrieve 
Segment4_Retrieve 
Segment5_Retrieve 
Segment6_Retrieve 
Segment7_Retrieve 
Segment8_Retrieve 
GLData_Retrieve 
Login 
GetSessionID 
GetVersion 
GetAllCurrencies 
GetAllCurrencyTypes 
GetAllSegments 
Logout 
Load Employee 
Approval Role Setup 
Scenario Access 
Dimension Member Name Update 
Bulk User and User Group Extract 
Dimension Security 
MapEntity 


## Load_Data API
**Usage**	  
Loads  data into staging tables of the Planful application.
**Syntax**	  
[Copy](javascript:void(0);) ```

`OperationResult = api.Load_Data(String RuleCode, String ObjectArray(), String Delimiter)`

Usage
Use the Load_Data call to load COA Segment / GL data to staging tables in Planful. When a Client application invokes the Load_Data call, it passes in the rule code and collection of strings with custom delimiter (like “,”,”;”,”|_|” etc). Each string in the collection represents a data row of the COA segment / GLData that is to be loaded into Planful.
Upon invocation, the Web Service parses the string collection and (based on the rule code) transfers the COA segment / GL Data to the staging table in the database and returns an operation result object, which contains the status and status message of the operation. The Client application can then use methods for the operation result objects and retrieve information.
The Client application must be logged in with sufficient access rights to load COA segment / GL data.
Arguments List
The following table provides a list of arguments that are required for Load_Data method call:

  

NameTypeDescription
RuleCodeStringThe name of the rule that is configured in the ETL of the Planful application.
ObjectArrayStringThe collection of strings. Each string item in the collection represents a data row of the COA segment / GL data that is to be loaded to the Planful application.
DelimiterStringThe column separator in each row of the source file. Examples are; Comma (,), Tab (VBTab), | (Pipe), ; (Semicolon)

Response
OperationResult
The Load_Data method call returns an OperationResult object, which contains the status and the status message of the Load_Data method call.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub LoadData()

Dim api As New HostAPI()

Dim strRuleCode As String = "" , strDelimiter As String = "" , objData()

As String , objResult As OperationResult

Try

'Prepare an array of GL Data Strings to pass to the web method

ReDim objData(1)

objData(0) = "Revenue Acc1||Revenue Acc1||Revenue Acc

Parent1|_|Revenue Acc

Parent1||||Revenue||Balance||YTD||Credit||Active||Leaf||EOM||Yes||Report Category1"

objData(1) = "Revenue Acc2||Revenue Acc2||Revenue Acc

Parent1|_|Revenue Acc

Parent1||||Revenue||Balance||YTD||Credit||Active||Leaf||EOM||Yes||YES|_|Report Category2"

objResult = New OperationResult

'Call the web method with the rule code created in Planful and the delimiter used in the data string

objResult = api.Load_Data("WS - Loading Accounts" , objData, "|_|" )

Console.WriteLine(objResult.message)

Consolde.ReadLine()

Catch ex As Exception

End Try

End Sub

`



## Transfer_Data API
Transfers the staging table data to the destination table in Planful based on the rule code.
**Syntax**	  
[Copy](javascript:void(0);) ```

`OperationResult = api.Transfer_Data(String RuleCode)`

Usage
Use the Transfer_Data call to load the staging data to the destination tables in Planful. Upon invocation, the Web Service accepts the rule code and transfers the data available in the staging table for the rule code to the corresponding destination table and returns an operation result object, which contains the status and status message of the operation. The Client application can then use methods on the operation result objects and retrieve information. The Client application must be logged in with sufficient access rights to transfer the staging data to the destination tables.
Arguments List
The following table provides a list of arguments that are required for the Transfer_Data method
call:

  

NameTypeDescription
RuleCodeStringThe name of the rule that is configured in the Data Load Rules of the Planful application.

Responses
The Transfer_Data method call returns the OperationResult object which contains status and the status message of the Transfer_Data method call.
[Copy](javascript:void(0);) Success Response


`<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<TransferDataWithLoginResponse  

xmlns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<TransferDataWithLoginResult>

<Success>true </Success>

<message>Data loaded successfully.</message>

</TransferDataWithLoginResult>

</TransferDataWithLoginResponse>

</soap:Body>

</soap:Envelope>`

[Copy](javascript:void(0);) Invalid Data Response


`<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<TransferDataWithLoginResponse  

xmlns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<TransferDataWithLoginResult>

<Success>false </Success>

<message>Data load failed due to exceptions. The exceptions are emailed.</message>

<ErrorCode>Err_InvalidData or Err_DeadLock</ErrorCode>

</TransferDataWithLoginResult>

</TransferDataWithLoginResponse>

</soap:Body>

</soap:Envelope>`

[Copy](javascript:void(0);) Invalid Response


`<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<TransferDataWithLoginResponse  

xmlns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<TransferDataWithLoginResult>

<Success>false </Success>

<message>Data load failed due to exceptions. The exceptions are emailed.</message>

</TransferDataWithLoginResult>

</TransferDataWithLoginResponse>

</soap:Body>

</soap:Envelope>`

Sample Code

[Copy](javascript:void(0);) ```

`Private Sub TransferData()

Dim api As New HostAPI()

Dim strRuleCode As String ="" , objResult As OperationResult

Try

objResult = New OperationResult

'Call the web method with the rule code created in Planful

ojbResult = api.Transfer_Data("WS - Loading Accounts" )

Console.WriteLine(objResult.message)

Console.ReadLine()

Catch ex As Exception

End Try

End Sub `



## Clear_Data API
Clears the staging table data based on the rule code supplied.
**Syntax**	  
[Copy](javascript:void(0);) ```

`OperationResult = api.Clear_Data(String RuleCode)`

Usage
Use the Clear_Data call to delete the staging data loaded into Planful. Upon invocation, the Web Service accepts the rule code and clears the data available in the staging table for the rule code and returns an operation result object, which contains the status and status message of the operation. The Client application can then use methods for the operation result objects and retrieve information.
Client application must be logged in with sufficient access rights to clear the staging data.
Arguments List
The following table provides a list of arguments that are required for the Clear_Data method
call:

  

NameTypeDescription
RuleCodeStringThe name of the rule that is configured in the Data Load Rules of the Planful application.

Response
The Clear_Data method call returns the OperationResult object which contains status and the status message of the Clear_Data method call.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub ClearData()

Dim api As New HostAPI()

Dim strRuleCode As String ="" , objResult As OperationResult

Try

objResult = New OperationResult

'Call the web method with the rule code created in Planful

ojbResult = api.Clear_Data("WS - Loading Accounts" )

Console.WriteLine(objResult.message)

Console.ReadLine()

Catch ex As Exception

End Try

End Sub `



## Segment APIs


### Segment1_Retrieve
Retrieves the collection of Segment1 objects that meet the filter criteria supplied. Each segment1 object returned from this method corresponds to a data row of segment1 in the database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`Segment1 = api.Segment1_Retrieve (Segment1Filter FilterCriteria)`

Usage
Use the Segment1_Retrieve call to retrieve Segment1 data. When a Client application invokes the Segment1_Retrieve call, it passes the segment1 filter criteria in collection of Segment1Filter objects to filter the data rows.
Upon invocation, the Web Service queries the database for segment1 data rows with the specified filter criteria and returns the collection of segment1 objects. Each segment1 object corresponds to a data row in the database. The Client application can then use methods on the collection of segment1 objects to iterate through the collection and retrieve information. The Client application must be logged in with sufficient access rights to query segment1 objects.
Arguments List
The following table provides a list of arguments that are required for the Segment1_Retrieve method call:

  

NameTypeDescription
Segment1FilterSegment1FCollection of segment1 filter objects to filter thesegment1 data rows during retrieval.

Response
The Segment1_Retrieve method call returns a collection of Segment1 objects, which contain the data values of segment1 data rows in the database.
Parent Code, Parent Name
There are two separate fields (i.e., columns) for Parent Code and Parent Name.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub RetrieveSegment1()

Dim api As New HostAPI()

'This method retrieves all segment1 objects that start with the code specified.

Dim objSegment1() As Segment1, objSegment1Filter As Segment1Filter

Dim objSegment1FilterCollection() As Segment1Filters, strValue() As String

Try

'Create a new segment1 filter to add the filter criteria during retrieval

objSegment1Filter = New Segment1Filter

objSegment1Filter.Field = Segment1Field.Code

objSegment1Filter.FieldOperator = FieldOperator.StartsWith

ReDim strValue(0)

strValue(0) = "10"

objSegment1Filter.Value = strValue

'Add the filter objects built to the filter collection to pass to the web method

ReDim objSegment1FilterCollection(0)

objSegment1FilterCollection(0) = New Segment1Filter

objSegment1FilterCollection(0) = objSegment1Filter

'Call the web method to retrieve the segment1 collection

objSegment1 = api.Segment1_Retrieve (objSegment1FilterCollection)

'Loop through the segment1 collection to display the segment1 objects retrieved

If Not objSegment1 is Nothing Then

Console.WriteLine ("Code" & vbTab & "|" &_Obj.Name & vbTab &

"|AccountGroup" & vbTab & "|AccountyType" )

For Each _Obj As Segment1 In objSegment1

Console.WriteLine (_Obj.Code & vbTab & "|" _Obj.Name & vbTab &

"|" & _Obj.AccountGroup.ToString() & vbTab & "|" &

_Obj.AccountType.ToString())

Next

End If

Console.ReadLine()

Catch ex As Exception

End Try

End Sub

`



### Segment2_Retrieve
Retrieves the collection of Segment2 objects that meet the filter criteria supplied. Each segment2 object returned from this method corresponds to a data row of segment2 in the database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`Segment2 = api.Segment2_Retrieve (Segment2Filter FilterCriteria)`

Usage
Use the Segment2_Retrieve call to retrieve Segment2 data. When a Client application invokes the Segment2_Retrieve call, it passes the segment2 filter criteria in collection of Segment2Filter objects to filter the data rows.
Upon invocation, the Web Service queries the database for segment2 data rows with the specified filter criteria and returns the collection of segment2 objects. Each segment2 object corresponds to a data row in the database. The Client application can then use methods on the collection of segment2 objects to iterate through the collection and retrieve information. The Client application must be logged in with sufficient access rights to query segment2 objects.
Arguments list
The following table provides a list of arguments that are required for the Segment2_Retrieve method call:

  

NameTypeDescription
Segment2FilterSegment2FCollection of segment2 filter objects to filter thesegment2 data rows during retrieval.

Response
The Segment2_Retrieve method call returns a collection of Segment2 objects, which contain the data values of segment2 data rows in the database.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub RetrieveSegment2()

Dim api As New HostAPI()

'This method retrieves all segment2 objects that start with the code specified.

Dim objSegment2() As Segment2, objSegment2Filter As Segment2Filter

Dim objSegment2FilterCollection() As Segment2Filters, strValue() As String

Try

'Create a new segment2 filter to add the filter criteria during retrieval

objSegment2Filter = New Segment2Filter

objSegment2Filter.Field = Segment2Field.Code

objSegment2Filter.FieldOperator = FieldOperator.StartsWith

ReDim strValue(0)

strValue(0) = "10"

objSegment2Filter.Value = strValue

'Add the filter objects built to the filter collection to pass to the web method

ReDim objSegment2FilterCollection(0)

objSegment2FilterCollection(0) = New Segment2Filter

objSegment2FilterCollection(0) = objSegment2Filter

'Call the web method to retrieve the segment2 collection

objSegment2 = api.Segment2_Retrieve (objSegment2FilterCollection)

'Loop through the segment2 collection to display the segment2 objects retrieved

If Not objSegment2 is Nothing Then

Console.WriteLine ("Code" & vbTab & "|" &_Obj.Name & vbTab &

"|AccountGroup" & vbTab & "|AccountyType" )

For Each _Obj As Segment2 In objSegment2

Console.WriteLine (_Obj.Code & vbTab & "|" _Obj.Name & vbTab &

"|" & _Obj.AccountGroup.ToString() & vbTab & "|" &

_Obj.AccountType.ToString())

Next

End If

Console.ReadLine()

Catch ex As Exception

End Try

End Sub

`



### Segment3_Retrieve
Retrieves the collection of Segment3 objects that meet the filter criteria supplied. Each segment3 object returned from this method corresponds to a data row of segment3 in database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`Segment3 = api.Segment3_Retrieve (SegmentFilter FilterCriteria)`

Usage
Use the Segment3_Retrieve call to retrieve Segment3 data. When a Client application invokes the Segment3_Retrieve call, it passes in the segment3 filter criteria in collection of SegmentFilter objects to filter the data rows.
Upon invocation, the Web Service queries the database for segment3 data rows with the specified filter criteria and returns the collection of segment3 objects. Each segment3 object corresponds to a data row in the database. The Client application can then use methods on the collection of segment3 objects to iterate through the collection and retrieve information. The Client application must be logged in with sufficient access rights to query segment3 objects.
Arguments List
The following table provides a list of arguments that are required for the Segment3_Retrieve method call:

  

NameTypeDescription
SegmentFilterSegmentFilter()Collection of segment3 filter objects to filter thesegment3 data rows during retrieval.

Response
The Segment3_Retrieve method call returns collection of Segment3 objects, which contain the data values of segment3 data rows in the database.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub RetrieveSegment3()

Dim api As New HostAPI()

'This method retrieves all segment3 objects that start with the code specified.

Dim objSegment3() As Segment3, objSegment3Filter As Segment3Filter

Dim objSegment3FilterCollection() As Segment3Filters, strValue() As String

Try

'Create a new segment3 filter to add the filter criteria during retrieval

objSegment3Filter = New Segment3Filter

objSegment3Filter.Field = Segment3Field.Code

objSegment3Filter.FieldOperator = FieldOperator.StartsWith

ReDim strValue(0)

strValue(0) = "10"

objSegment3Filter.Value = strValue

'Add the filter objects built to the filter collection to pass to the web method

ReDim objSegment3FilterCollection(0)

objSegment3FilterCollection(0) = New Segment3Filter

objSegment3FilterCollection(0) = objSegment3Filter

'Call the web method to retrieve the segment3 collection

objSegment3 = api.Segment3_Retrieve (objSegment3FilterCollection)

'Loop through the segment3 collection to display the segment3 objects retrieved

If Not objSegment3 is Nothing Then

Console.WriteLine ("Code" & vbTab & "|" &_Obj.Name & vbTab &

"|AccountGroup" & vbTab & "|AccountyType" )

For Each _Obj As Segment3 In objSegment3

Console.WriteLine (_Obj.Code & vbTab & "|" _Obj.Name & vbTab &

"|" & _Obj.AccountGroup.ToString() & vbTab & "|" &

_Obj.AccountType.ToString())

Next

End If

Console.ReadLine()

Catch ex As Exception

End Try

End Sub `



### Segment4_Retrieve
Retrieves the collection of Segment4 objects that meet the filter criteria supplied. Each segment4 object returned from this method corresponds to a data row of segment4 in database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`Segment4 = api.Segment4_Retrieve (SegmentFilter FilterCriteria)`

Usage
Use the Segment4_Retrieve call to retrieve Segment4 data. When a Client application invokes the Segment4_Retrieve call, it passes in the segment1 filter criteria in collection of SegmentFilter objects to filter the data rows.
Upon invocation, the Web Service queries the database for segment4 data rows with the specified filter criteria and returns the collection of segment4 objects. Each segment4 object corresponds to a data row in the database. The Client application can then use methods on the collection of segment4 objects to iterate through the collection and retrieve information. The Client application must be logged in with sufficient access rights to query segment4 objects.
Arguments List
The following table provides a list of arguments that are required for the Segment4_Retrieve method call:

  

NameTypeDescription
SegmentFilterSegmentFilter()Collection of segment4 filter objects to filter the segment4 data rows during retrieval.

Response
Segment4()
The Segment4_Retrieve method call returns collection of Segment4 objects, which contain the data values of segment4 data rows in the database.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub RetrieveSegment4()

Dim api As New HostAPI()

'This method retrieves all segment4 objects that start with the code specified.

Dim objSegment4() As Segment4, objSegment4Filter As Segment4Filter

Dim objSegment4FilterCollection() As Segment4Filters, strValue() As String

Try

'Create a new segment4 filter to add the filter criteria during retrieval

objSegment4Filter = New Segment4Filter

objSegment4Filter.Field = Segment4Field.Code

objSegment4Filter.FieldOperator = FieldOperator.StartsWith

ReDim strValue(0)

strValue(0) = "10"

objSegment4Filter.Value = strValue

'Add the filter objects built to the filter collection to pass to the web method

ReDim objSegment4FilterCollection(0)

objSegment4FilterCollection(0) = New Segment4Filter

objSegment4FilterCollection(0) = objSegment4Filter

'Call the web method to retrieve the segment4 collection

objSegment4 = api.Segment4_Retrieve (objSegment4FilterCollection)

'Loop through the segment4 collection to display the segment4 objects retrieved

If Not objSegment4 is Nothing Then

Console.WriteLine ("Code" & vbTab & "|" &_Obj.Name & vbTab &

"|AccountGroup" & vbTab & "|AccountyType" )

For Each _Obj As Segment4 In objSegment4

Console.WriteLine (_Obj.Code & vbTab & "|" _Obj.Name & vbTab &

"|" & _Obj.AccountGroup.ToString() & vbTab & "|" &

_Obj.AccountType.ToString())

Next

End If

Console.ReadLine()

Catch ex As Exception

End Try

End Sub `



### Segment5_Retrieve
Retrieves the collection of Segment5 objects that meet the filter criteria supplied. Each segment5 object returned from this method corresponds to a data row of segment5 in database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`Segment5 = api.Segment5_Retrieve (SegmentFilter FilterCriteria)`

Usage
Use the Segment5_Retrieve call to retrieve Segment5 data. When a Client application invokes the Segment5_Retrieve call, it passes in the segment5 filter criteria in collection of SegmentFilter objects to filter the data rows.
Upon invocation, the f queries the database for segment5 data rows with the specified filter criteria and returns the collection of segment5 objects. Each segment5 object corresponds to a data row in the database. The Client application can then use methods on the collection of segment5 objects to iterate through the collection and retrieve information. The Client application must be logged in with sufficient access rights to query segment5 objects.
Arguments List
The following table provides a list of arguments that are required for the Segment5_Retrieve method call:

  

NameTypeDescription
SegmentFilterSegmentFilter()Collection of segment5 filter objects to filter the segment5 data rows during retrieval.

Response
The Segment5_Retrieve method call returns collection of Segment5 objects which contain the data values of segment5 data rows in the database.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub RetrieveSegment5()

Dim api As New HostAPI()

'This method retrieves all segment objects that start with the code specified.

Dim objSegment5() As Segment5, objSegment5Filter As Segment5Filter

Dim objSegment5FilterCollection() As Segment5Filters, strValue() As String

Try

'Create a new segment5 filter to add the filter criteria during retrieval

objSegment5Filter = New Segment5Filter

objSegment5Filter.Field = Segment5Field.Code

objSegment5Filter.FieldOperator = FieldOperator.StartsWith

ReDim strValue(0)

strValue(0) = "10"

objSegment5Filter.Value = strValue

'Add the filter objects built to the filter collection to pass to the web method

ReDim objSegment5FilterCollection(0)

objSegment5FilterCollection(0) = New Segment5Filter

objSegment5FilterCollection(0) = objSegment5Filter

'Call the web method to retrieve the segment5 collection

objSegment5 = api.Segment5_Retrieve (objSegment5FilterCollection)

'Loop through the segment5 collection to display the segment5 objects retrieved

If Not objSegment5 is Nothing Then

Console.WriteLine ("Code" & vbTab & "|" &_Obj.Name & vbTab &

"|AccountGroup" & vbTab & "|AccountyType" )

For Each _Obj As Segment5 In objSegment5

Console.WriteLine (_Obj.Code & vbTab & "|" _Obj.Name & vbTab &

"|" & _Obj.AccountGroup.ToString() & vbTab & "|" &

_Obj.AccountType.ToString())

Next

End If

Console.ReadLine()

Catch ex As Exception

End Try

End Sub `



### Segment6_Retrieve
Retrieves the collection of Segment6 objects that meet the filter criteria supplied. Each segment6 object returned from this method corresponds to a data row of segment6 in database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`Segment6 = api.Segment6_Retrieve (SegmentFilter FilterCriteria)`

Usage
Use the Segment6_Retrieve call to retrieve Segment6 data. When a Client application invokes the Segment6_Retrieve call, it passes in the segment6 filter criteria in collection of SegmentFilter objects to filter the data rows.
Upon invocation, the Web Service queries the database for segment6 data rows with the specified filter criteria and returns the collection of segment6 objects. Each segment6 object corresponds to a data row in the database. The Client application can then use methods on the collection of segment6 objects to iterate through the collection and retrieve information. The Client application must be logged in with sufficient access rights to query segment6 objects.
Arguments List
The following table provides a list of arguments that are required for the Segment6_Retrieve method call:

  

NameTypeDescription
SegmentFilterSegmentFilter()Collection of segment6 filter objects to filter the segment6 data rows during retrieval.

Response
The Segment6_Retrieve method call returns collection of Segment6 objects, which contain the data values of segment6 data rows in the database.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub RetrieveSegment6()

Dim api As New HostAPI()

'This method retrieves all segment objects that start with the code specified.

Dim objSegment6() As Segment6, objSegment6Filter As Segment6Filter

Dim objSegment6FilterCollection() As Segment6Filters, strValue() As String

Try

'Create a new segment6 filter to add the filter criteria during retrieval

objSegment6Filter = New Segment6Filter

objSegment6Filter.Field = Segment6Field.Code

objSegment6Filter.FieldOperator = FieldOperator.StartsWith

ReDim strValue(0)

strValue(0) = "10"

objSegment6Filter.Value = strValue

'Add the filter objects built to the filter collection to pass to the web method

ReDim objSegment6FilterCollection(0)

objSegment6FilterCollection(0) = New Segment6Filter

objSegment6FilterCollection(0) = objSegment6Filter

'Call the web method to retrieve the segment6 collection

objSegment6 = api.Segment6_Retrieve (objSegment6FilterCollection)

'Loop through the segment6 collection to display the segment6 objects retrieved

If Not objSegment6 is Nothing Then

Console.WriteLine ("Code" & vbTab & "|" &_Obj.Name & vbTab &

"|AccountGroup" & vbTab & "|AccountyType" )

For Each _Obj As Segment6 In objSegment6

Console.WriteLine (_Obj.Code & vbTab & "|" _Obj.Name & vbTab &

"|" & _Obj.AccountGroup.ToString() & vbTab & "|" &

_Obj.AccountType.ToString())

Next

End If

Console.ReadLine()

Catch ex As Exception

End Try

End Sub `



### Segment7_Retrieve
Retrieves the collection of Segment7 objects that meet the filter criteria supplied. Each segment7 object returned from this method corresponds to a data row of segment7 in database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`Segment7 = api.Segment7_Retrieve (SegmentFilter FilterCriteria)`

Usage
Use the Segment7_Retrieve call to retrieve Segment7 data. When a Client application invokes the Segment7_Retrieve call, it passes in the segment7 filter criteria in collection of SegmentFilter objects to filter the data rows.
Upon invocation, the Web Service queries the database for segment7 data rows with the specified filter criteria and returns the collection of segment7 objects. Each segment7 object corresponds to a data row in the database. The Client application can then use methods on the collection of segment7 objects to iterate through the collection and retrieve information. The Client application must be logged in with sufficient access rights to query segment7 objects.
Arguments List
The following table provides a list of arguments that are required for the Segment7_Retrieve method call:

  

NameTypeDescription
SegmentFilterSegmentFilter()Collection of segment7 filter objects to filter the segment7 data rows during retrieval.

Response
The Segment7_Retrieve method call returns collection of Segment7 objects, which contain the data values of segment7 data rows in the database.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub RetrieveSegment7()

Dim api As New HostAPI()

'This method retrieves all segment objects that start with the code specified.

Dim objSegment7() As Segment7, objSegment7Filter As Segment7Filter

Dim objSegment7FilterCollection() As Segment7Filters, strValue() As String

Try

'Create a new segment7 filter to add the filter criteria during retrieval

objSegment7Filter = New Segment7Filter

objSegment7Filter.Field = Segment7Field.Code

objSegment7Filter.FieldOperator = FieldOperator.StartsWith

ReDim strValue(0)

strValue(0) = "10"

objSegment7Filter.Value = strValue

'Add the filter objects built to the filter collection to pass to the web method

ReDim objSegment7FilterCollection(0)

objSegment7FilterCollection(0) = New Segment7Filter

objSegment7FilterCollection(0) = objSegment7Filter

'Call the web method to retrieve the segment7 collection

objSegment7 = api.Segment7_Retrieve (objSegment7FilterCollection)

'Loop through the segment7 collection to display the segment7 objects retrieved

If Not objSegment7 is Nothing Then

Console.WriteLine ("Code" & vbTab & "|" &_Obj.Name & vbTab &

"|AccountGroup" & vbTab & "|AccountyType" )

For Each _Obj As Segment7 In objSegment7

Console.WriteLine (_Obj.Code & vbTab & "|" _Obj.Name & vbTab &

"|" & _Obj.AccountGroup.ToString() & vbTab & "|" &

_Obj.AccountType.ToString())

Next

End If

Console.ReadLine()

Catch ex As Exception

End Try

End Sub `



### Segment8_Retrieve
Retrieves the collection of Segment8 objects that meet the filter criteria supplied. Each segment8 object returned from this method corresponds to a data row of segment8 in database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`Segment8 = api.Segment8_Retrieve (SegmentFilter FilterCriteria)`

Usage
Use the Segment8_Retrieve call to retrieve Segment8 data. When a Client application invokes the Segment8_Retrieve call, it passes in the segment8 filter criteria in collection of SegmentFilter objects to filter the data rows.
Upon invocation, the Web Service queries the database for segment8 data rows with the specified filter criteria and returns the collection of segment8 objects. Each segment8 object corresponds to a data row in the database. The Client application can then use methods on the collection of segment8 objects to iterate through the collection and retrieve information. The Client application must be logged in with sufficient access rights to query segment8 objects.
Arguments List
The following table provides a list of arguments that are required for the Segment8_Retrieve method call:

  

NameTypeDescription
SegmentFilterSegmentFilter()Collection of segment8 filter objects to filter the segment8 data rows during retrieval.

Response
The Segment8_Retrieve method call returns collection of Segment8 objects, which contain the
data values of segment8 data rows in the database.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub RetrieveSegment8()

Dim api As New HostAPI()

'This method retrieves all segment objects that start with the code specified.

Dim objSegment8() As Segment8, objSegment8Filter As Segment8Filter

Dim objSegment8FilterCollection() As Segment8Filters, strValue() As String

Try

'Create a new segment8 filter to add the filter criteria during retrieval

objSegment8Filter = New Segment8Filter

objSegment8Filter.Field = Segment8Field.Code

objSegment8Filter.FieldOperator = FieldOperator.StartsWith

ReDim strValue(0)

strValue(0) = "10"

objSegment8Filter.Value = strValue

'Add the filter objects built to the filter collection to pass to the web method

ReDim objSegment8FilterCollection(0)

objSegment8FilterCollection(0) = New Segment8Filter

objSegment8FilterCollection(0) = objSegment8Filter

'Call the web method to retrieve the segment8 collection

objSegment8 = api.Segment8_Retrieve (objSegment8FilterCollection)

'Loop through the segment8 collection to display the segment8 objects retrieved

If Not objSegment8 is Nothing Then

Console.WriteLine ("Code" & vbTab & "|" &_Obj.Name & vbTab &

"|AccountGroup" & vbTab & "|AccountyType" )

For Each _Obj As Segment8 In objSegment8

Console.WriteLine (_Obj.Code & vbTab & "|" _Obj.Name & vbTab &

"|" & _Obj.AccountGroup.ToString() & vbTab & "|" &

_Obj.AccountType.ToString())

Next

End If

Console.ReadLine()

Catch ex As Exception

End Try

End Sub `



## GLData_Retrieve API
Retrieves the collection of GLData objects that meet the filter criteria supplied. Each GLData object returned  corresponds to a row of GL Data in the database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`GLData = api.GLData _Retrieve (GLDataFilter FilterCriteria)`

Usage
Use the GLData_Retrieve call to retrieve GLData data. When a Client application invokes the GLData_Retrieve call, it passes in the GLData filter criteria in collection of GLDataFilter objects to filter the data rows.
Upon invocation, the Web Service queries the database for GLData data rows with the specified filter criteria and returns the collection of GLData objects. Each GLData object corresponds to a data row in the database.
The Client application can then use methods on the collection of GLData objects to iterate through the collection and retrieve information.
The Client application must be logged in with sufficient access rights to query GLData objects.
Arguments List
The following table provides a list of arguments that are required for the GLData_Retrieve method call:

  

NameTypeDescription
GLDataFilterGLDataFilter()Collection of segment filter objects to filter theGL Data rows during retrieval.

NOTES:

  • Fields on which filter can be applied: Segment1, Segment2, Segment3, Segment4, Segment5, Segment6, Segment7, Segment8, Scenario, Reporting, FiscalYear, FiscalPeriod, AmountType.
  • Mandatory filter fields: Scenario, AmountType, and FiscalYear (NOTE: FiscalYear is mandatory if scenario is Actual or filter fields contain FiscalPeriod)
  • Field operators supported: Equals, Contains
  • Multiple filters can be applied on one retrieval but only one value can be supplied per field. For instance, to retrieve the data for two scenarios Actual and Budget, the API needs to be called two times once for Actual and once for Budget scenario.

Response
The GLData_Retrieve method call returns collection of GLData objects, which contain the data values of GLData data rows in the database.
Sample Code
[Copy](javascript:void(0);) ```

`<ns:GLData_RetrieveWithLogin>

<ns:LoginName>mborra@planful.com</ns:LoginName>

<ns:Password>VASavi@61</ns:Password>

<ns:TenantCode>ETLCPMTENANTBASEQFQACopy</ns:TenantCode>

<ns:FilterCollection>

<ns:GLDataFilter>

<ns:Field>FiscalYear</ns:Field>

<ns:FieldOperator>Equals </ns:FieldOperator>

<ns:Value>

<ns:string >2012</ns:string >

</ns:Value>

</ns:GLDataFilter>

<ns:GLDataFilter>

<ns:Field>FiscalPeriod</ns:Field>

<ns:FieldOperator>Equals </ns:FieldOperator>

<ns:Value>

<ns:string >4</ns:string >

</ns:Value>

</ns:GLDataFilter>

<ns:GLDataFilter>

<ns:Field>Segment2</ns:Field>

<ns:FieldOperator>Equals </ns:FieldOperator>

<ns:Value>

<ns:string >112ETL</ns:string >

</ns:Value>

</ns:GLDataFilter>

<ns:GLDataFilter>

<ns:Field>Scenario</ns:Field>

<ns:FieldOperator>Equals </ns:FieldOperator>

<ns:Value>

<ns:string >Forecast2012</ns:string >

</ns:Value>

</ns:GLDataFilter>

<ns:GLDataFilter>

<ns:Field>AmountType</ns:Field>

<ns:FieldOperator>Equals </ns:FieldOperator>

<ns:Value>

<ns:string >MTD</ns:string >

</ns:Value>

</ns:GLDataFilter>

</ns:FilterCollection>

<ns:ApplyCreditDebit>No</ns:ApplyCreditDebit>

</ns:GLData_RetrieveWithLogin>`

**Output**	  
[Copy](javascript:void(0);) ```

`<GLData_RetrieveWithLoginResponse xmlns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<GLData_RetrieveWithLoginResult>

<GLData>

<Segment1>Flow-MTD-Credit</Segment1>

<Segment2>112ETL</Segment2>

<Segment3>000</Segment3>

<Segment4>00</Segment4>

<Segment5>1000</Segment5>

<Segment6>000</Segment6>

<Segment7>00</Segment7>

<Segment8>000-0000</Segment8>

<Scenario>Forecast2012</Scenario>

<Reporting>G/L Data (LC)</Reporting>

<Amount>40.000000</Amount>

<AmountType>MTD</AmountType>

<FiscalYear>2012</FiscalYear>

<FiscalPeriod>4</FiscalPeriod>

</GLData>

<GLData>

<Segment1>Flow-MTD-Credit</Segment1>

<Segment2>112ETL</Segment2>

<Segment3>000</Segment3>

<Segment4>00</Segment4>

<Segment5>1000</Segment5>

<Segment6>000</Segment6>

<Segment7>00</Segment7>

<Segment8>000-0000</Segment8>

<Scenario>Forecast2012</Scenario>

<Reporting>Currency (LC to CC)</Reporting>

<Amount>80.000000</Amount>

<AmountType>MTD</AmountType>

<FiscalYear>2012</FiscalYear>

<FiscalPeriod>4</FiscalPeriod>

</GLData>

<GLData>

<Segment1>Balance-YTD-Debit</Segment1>

<Segment2>112ETL</Segment2>

<Segment3>000</Segment3>

<Segment4>00</Segment4>

<Segment5>1000</Segment5>

<Segment6>000</Segment6>

<Segment7>00</Segment7>

<Segment8>000-0000</Segment8>

<Scenario>Forecast2012</Scenario>

<Reporting>G/L Data (LC)</Reporting>

<Amount>40.000000</Amount>

<AmountType>MTD</AmountType>

<FiscalYear>2012</FiscalYear>

<FiscalPeriod>4</FiscalPeriod>

</GLData>

<GLData>

<Segment1>Balance-YTD-Debit</Segment1>

<Segment2>112ETL</Segment2>

<Segment3>000</Segment3>

<Segment4>00</Segment4>

<Segment5>1000</Segment5>

<Segment6>000</Segment6>

<Segment7>00</Segment7>

<Segment8>000-0000</Segment8>

<Scenario>Forecast2012</Scenario>

<Reporting>Currency (LC to CC)</Reporting>

<Amount>80.000000</Amount>

<AmountType>MTD</AmountType>

<FiscalYear>2012</FiscalYear>

<FiscalPeriod>4</FiscalPeriod>

</GLData>

</GLData_RetrieveWithLoginResult>

</GLData_RetrieveWithLoginResponse>

`

Sample Invalid Input
[Copy](javascript:void(0);) ```

`<ns:GLData_RetrieveWithLogin>

<ns:LoginName>mborra@planful.com</ns:LoginName>

<ns:Password>VASavi@61</ns:Password>

<ns:TenantCode>ETLCPMTENANTBASEQFQACopy</ns:TenantCode>

<ns:FilterCollection>

<ns:GLDataFilter>

<ns:Field>Scenario</ns:Field>

<ns:FieldOperator>Equals </ns:FieldOperator>

<ns:Value>

<ns:string >DummyScenario</ns:string >

</ns:Value>

</ns:GLDataFilter>

<ns:GLDataFilter>

<ns:Field>AmountType</ns:Field>

<ns:FieldOperator>Equals </ns:FieldOperator>

<ns:Value>

<ns:string >MTD</ns:string >

</ns:Value>

</ns:GLDataFilter>

</ns:FilterCollection>

</ns:GLData_RetrieveWithLogin>`

**Invalid Output**	  
<faultstring>Scenario code is not valid</faultstring>


## Login API
Logs in to the Planful Web Service application to perform data import / export operations.
**Syntax**	  
[Copy](javascript:void(0);) ```

`LoginResult = api.Login(String LoginName, String LoginPassword, String TenantCode)`

Usage
Use the Login call to log in to the Planful Web Service application and start a Client session. A Client application must log in and obtain a session ID before making any other API calls.
When a Client application invokes the Login call, it passes in a user name and password and tenant code. Upon invocation, the Planful Web Service authenticates the login and returns the session ID for the session, the user ID associated with the logged in user name, to use in all subsequent API calls.
After logging in, a Client application needs to set the session ID in the SOAP header so that the Planful Web Service can validate subsequent requests for this session.
Note: Can you obtain login credentials from the Web Service Access - Configuration Tasks application page. For tenant code, contact Support if you do not already have it. Changes to either the Login or Password for the Web Services API will impact existing integrations that are using the same credentials and as such should be changed with caution.
Development tools differ in the way you specify session headers. For more information, see the documentation for your particular development tool.
Client applications do not need to explicitly log out to end the session. Sessions expire automatically after a predetermined length of time which is 120 minutes (two hours).
Arguments List
The following table provides a list of arguments that are required for the Load_Data method call:

  

NameTypeDescription

LoginName

LoginPassword

TenantCode

String

String

String

User login name

User login password

Tenant code for connecting to the tenant application

Response
LoginResult
The Login method call returns LoginResult object which contains the status of method call and session id for making subsequent API calls in case of successful login.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub Login()

Dim api As New HostAPI()

Dim strSessionId As String = "" , strTenantCode As String = "" , objLoginResult As LoginResult

Try

'User login/pwd for the API access and the tenant code

strLogin = "admin@planful.com"

strPWD = "admin123"

strTenantCode = "MoonPie"

'Instantiate the authentication header object to accept the session ID from the web method after sucessful login

api.AuthenticationHeaderValue = New AuthenticationHeader

'Call the web method to login the Planful web server API

objLoginResult = api.Login(strLogin, strPWD, strTenantCode)

If objLoginResult.Success Then

'Assign the session ID in login result object to API objects authenticatio header. This is to pass the session ID as SOAP header for authentication in subsequent API calls

api.AuthenticationHeaderValue.SessionId =

objLoginResult.sessionId

End If

Console.WriteLine(objLoginResult.message)

Catch ex As Exception

End Try

End Sub `



## GetSessionId API
Retrieves the session id for the current user session.
**Syntax**	  
[Copy](javascript:void(0);) ```

`SessionId = api.getSessionId()`

Usage
Use the GetSessionId to retrieve the session id for the current user session. Upon invocation, the Web Service returns the session id of the current user session. The Client application can then use methods on the session id and retrieve information. The Client application must be logged in with sufficient access rights to retrieve the session id.
Response
SessionId
The GetSessionId method call returns session id of the current user session.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub getSessionId()

Dim api As New HostAPI()

Dim strSessionId As String = ""

Try

'Call the web method to retrieve the current session ID

strSessionId = api.getSessionId()

Console.WriteLine(strSessionId)

Catch ex As Exception

End Try

End Sub `



## GetVersion API
Retrieves the current version of the Planful application for the tenant.
**Syntax**	  
[Copy](javascript:void(0);) ```

`AppVersion = api.GetVersion()`

Usage
Use the GetVersion call to retrieve the current version of the Planful application for the tenant. Upon invocation Web Service queries and returns the AppVersion object which contains the version name and version number of the Planful application for the tenant. The Client application must be logged in with sufficient access rights to retrieve the session id.
Response
AppVersion
The GetVersion call returns the AppVersion object which contains the version name and version number of the Planful application for the tenant.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub getVersion()

Dim api As New HostAPI()

Dim objVersion As APPVersion

Try

'Call the web method to retrieve the API version details

objVersion = api.getVersion()

Console.WriteLine("Version Name : " & objVersion.Name)

Console.WriteLine("Version : " & objVersion.Version)

Catch ex As Exception

End Try

End Sub `



## GetAllCurrencies API
Retrieves the collection of currency objects. Each currency object returned from this method corresponds to a data row of currency in the database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`Currency = api.GetAllCurrencies()`

Usage
Use the GetAllCurrencies call to retrieve currency data. Upon invocation, the Web Service queries the database for currency data rows and returns the collection of currency objects. Each currency object corresponds to a data row in the database. The Client application can then use methods on the collection of currency objects to iterate through the collection and retrieve information. The Client application must be logged in with sufficient access rights to query currency objects.
Response
Currency()
The GetAllCurrencies method call returns collection of Currency objects which contain the data values of currency data rows in the database.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub getAllCurrencies()

Dim api As New HostAPI()

Dim objCurrency() As Currency

Try

'Call the web method to retrieve the list of currencies

objCurrency = api.getALLCurrencies()

'Loop through the currency collection objects to display the currencies retrieved

If Not objCurrency Is Nothing Then

Console.WriteLine("Code" & vbTab & "|Name" )

For Each _Obj As Currency in objCurrency

Console.WriteLine(_Obj.Code & vbTab & "|" & _Obj.Name)

Next

End If

Catch ex As Exception

End Try

End Sub `



## GetAllCurrencyTypes API
Retrieves the collection of currency type objects. Each currency type object returned from this method corresponds to a data row of currency type in the database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`CurrencyType = api.GetAllCurrencyTypes()`

Usage
Use the GetAllCurrencyTypes call to retrieve currency type data. Upon invocation, the Web Service queries the database for currency type data rows and returns the collection of currency type objects. Each currency type object corresponds to a data row in the database.
The Client application can then use methods on the collection of currency type objects to iterate through the collection and retrieve information. The Client application must be logged in with sufficient access rights to query currency type objects.
Response
CurrencyType()
The GetAllCurrencyTypes method call returns collection of CurrencyType objects which contain the data values of currency type data rows in the database.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub getAllCurrencyTypes()

Dim api As New HostAPI()

Dim objCurrencyType() As CurrencyType

Try

'Call the web method to retrieve the list of currency types

objCurrencyType = api.getALLCurrencyTypes()

'Loop through the currency type collection objects to display the currency types retrieved

If Not objCurrencyType Is Nothing Then

Console.WriteLine("Code" & vbTab & "|Name" )

For Each _Obj As CurrencyType in objCurrencyType

Console.WriteLine(_Obj.Code & vbTab & "|" & _Obj.Name)

Next

End If

Catch ex As Exception

End Try

End Sub `



## GetAllSegments API
Retrieves the collection of COAsegment objects. Each COAsegment object returned from this method corresponds to a data row of COAsegment in the database.
**Syntax**	  
[Copy](javascript:void(0);) ```

`COAsegment = api.GetAllSegments()`

Usage
Use the GetAllSegments call to retrieve COAsegment data. Upon invocation, the Web Service queries the database for COAsegment data rows and returns the collection of COAsegment objects. Each COAsegment object corresponds to a data row in the database.
The Client application can then use methods on the collection of COAsegment objects to iterate through the collection and retrieve information. The Client application must be logged in with sufficient access rights to query COAsegment objects.
Response
COAsegment ()
The GetAllSegments method call returns collection of COAsegment objects which contain the data values of COAsegment data rows in the database.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub getAllSegments()

Dim api As New HostAPI()

Dim objSegment() As COASegmet

Try

'Call the web method to retrieve the list of COA segments

objSegment = api.getALLSegments()

'Loop through the segments collection objects to display the segments retrieved

If Not objSegment Is Nothing Then

Console.WriteLine("Name" & vbTab & "|DisplayName" & vbTab & "|Type" & vbTab & "|Visability" & vbTab & "|ActiveStatus" )

For Each _Obj As COASegment in objSegment

Console.WriteLine(_Obj.Name & "|" & _Obj.DisplayName & vbTab & "|" & _Obj.Type.ToString() & vbTab & "|" & _Obj.Visibility.ToString() & vbTab & "|" & _Obj.ActiveStatus.ToString())

Next

End If

Catch ex As Exception

End Try

End Sub `



## Logout API
Logs out of the Planful Web Service application.
**Syntax**	  
[Copy](javascript:void(0);) ```

`OperationResult = api.Logout()`

Usage
Use the Logout call to log out of the Planful Web Service application. When a Client application invokes the Logout call, the Web Service abandons the current user session.
The Client application must be logged in with sufficient access rights to logout from the application. Client applications do not need to explicitly log out to end the session. Sessions expire automatically after a predetermined length of time, which is 120 minutes (two hours).
Response
OperationResult
The Logout method call returns an OperationResult object, which contains the status and the status message of the logout method call.
Sample Code
[Copy](javascript:void(0);) ```

`Private Sub Logout()

Dim objResult As OperationResult

Try

'Call the web method to logout from the API

objResult = api.Logout()

Console.WriteLine (objResult.message)

Catch ex As Exception

End Try

End Sub `



## Employee APIs
Load Employees 
Delete Employees 
Get Employees 
Process Employees 
The following employee load APIs support loading multiple employee positions to budget, forecast, or default scenarios:
 
  * **Load Employees**	  — Load multiple employee positions through the employee data load. Can also load notes for each employee position, up to 4,000 characters;
  * **Delete Employees**	  — Delete employee positions for scenario, budget entities, and employees;
  * **Get Employees**	  — Retrieve employee positions for scenario, budget entities, and employees.
 
Each API requires a login name LoginName , password password , and tenant code TenantCode as parameters for a valid Planful application user. An UnAuthorized exception appears for invalid users.
**Note:**	    You can view the audit log to view all actions performed by particular users.


### Load Employees
Used to create or update a new employee position in the tenant.  If the employee positions are  already present in the tenant, they are updated with new data. The example below creates/updates employees in the tenant1code application.
**Note:**	    Existing compensations are overwritten with any compensations mapped against the employee type code.  Allocations are also overridden.
**Syntax**	  
[Copy](javascript:void(0);) ```

`public EmployeeStatus[] LoadEmployees(string LoginName, string Password, string TenantCode, EmployeePosition[] employees, DateTime payRollUploadDate)`

Example
[Copy](javascript:void(0);) ```

`LoadEmployees( "tenant1user1@company.com" , "tenant1user1@epmsuite.com" ,

"tenant1code" , employees, DateTime.UtcNow)`

**Success Response**	  
[Copy](javascript:void(0);) ```

`<soap:Body> 

<LoadEmployeesResponse  xmlns  ="http://www.HostAnalytics.com/API/SOAP/StateFree/Common/2020/03/19"  > 

LoadEmployeesResult>

<EmployeeStatus> 

<EmployeeInfo> 

<ScenarioCode> Default Scenario</ScenarioCode> 

<HomeBudgetEntityCode> 1000</HomeBudgetEntityCode> 

<Number> 12543</Number> 

<Name> Kristine Heggling</Name> 

<HireDate?2020-02-22T08:22:54</HireDate> 

</EmployeeInfo> 

<Status> true</Status> 

<ErrorMessage> Employee added sucessfully.</ErrorMessage> 

<PositionName> Admin</PositionName> 

</EmployeeStatus> 

</LoadEmployeesResult> 

</LoadEmployeesResponse> 

</soap:Body> `

Invalid Response
[Copy](javascript:void(0);) ```

`<soap:Body>

<soap:Fault>

<faulcode> soap:Server</faultcode>

<faultstring> Server was unable to process request. Payroll upload is mandatory.</faultstring>

<detail/>

</soap:Fault>

</soap:Body> `

An invalid response could due to be:  
 
  * LoginName invalid email or empty
  * Invalid or empty password
  * Invalid or empty TenantCode 
  * Empty payroll upload date or 01/01/0001 as value
  * Input size exceeds 1,000 records per call
 


### Delete Employees
Used to delete employees in the tenant. Only those employees which are accessible by a given user, and which are not forwarded  and not locked, can be deleted, even if the filter option is scenario . The example below deletes all employees under the DTHR  scenario in the DTHR  tenant. 
**Syntax**	  
[Copy](javascript:void(0);) ```

`public KeyValues[] DeleteEmployees(string LoginName, string Password, string TenantCode, string scenarioCode, EmployeeFilterOptions employeeFilterOption, string [] FilterOptions = null)`

Sample
[Copy](javascript:void(0);) ```

`DeleteEmployees( "tenant1user1@company.com" , "tenant1user1@epmsuite.com" ,

"tenant1code" , "ScenarioCode1" , EmployeeFilterOptions.Scenario , filterOptions);`

**Success Response**	  
[Copy](javascript:void(0);) ```

`<DeleteEmployeesResult>  

<KeyValues>

<Key >DTHR</Key >

<Value>Employees are delted for Scenario DTHR successfully for budget entities

</KeyValues>

</DeleteEmployeesResult>`

Invalid Response
An invalid response could be due to:

  • LoginName is empty or invalid email
  • Invalid or empty password
  • Invalid or empty TenantCode
  • Invalid or empty ScenarioCode
  • Invalid or empty EmployeeFilterOptions
  • Empty FilterOptions (e.g., HomeBudgetEntities/Employees)

Get Employees

Used to get employees in the tenant. You can get only those employees which are accessible by a given user, even if the filter option is scenario . The example shown below will get the first 1,000 employee positions, based on the start index given, under scenario API3 , in the APR08GOLDENTENANT tenant.
Note: For allocations with multiple rows for the same department and compensations, you only get segments for one row. Also, for input compensations items, you get the average annual value.
Syntax
[Copy](javascript:void(0);) ```

public EmployeePosition[] GetEmployees(string LoginName, string Password, string TenantCode, string scenarioCode, EmployeeFilterOptions employeeFilterOption, string [] FilterOptions = null)

**Sample**	  
[Copy](javascript:void(0);) ```

`GetEmployees("tenant1user1@company.com" , "tenant1user1@epmsuite.com" ,

"tenant1code" , "ScenarioCode1" , EmployeeFilterOptions.Scenario    , 0, arr);`

Success Response
[Copy](javascript:void(0);) ```

`<EmployeePosition>

<EmployeeInfo>

<ScenarioCode>API3</ScenarioCode>

<HomeBudgetEntityCode>new <</HomeBudgetEntityCode>

<Number>Load1</Number>

<Name>Load1</Name>

<HireDate>2020-01-01T00:00:00</HireDate>

</EmployeeInfo>

<PositionName>Position1</PositionName>

<PositionEntityCode>new </PositionEntityCode>

<OtherSegmentCodes>

<KeyValues>`

Invalid Response
An invalid response could be due to:  
 
  * LoginName is empty or invalid email
  * Invalid or empty password
  * Invalid or empty TenantCode 
  * Invalid or empty ScenarioCode  
  * Invalid or empty EmployeeFilterOptions 
  * Empty FilterOptions (e.g., HomeBudgetEntities/Employees)
 


### GetEmployeeCompensationsForPeriods
A new API has been introduced for the users to get the calculated compensation items based on the following filter options:

 
  * HomeBudgetEnity (Codes) 
  * EmployeeNumbers
  * Employee number and EmployeePosition
  * Compensation Item
  * Time (year) 
 

**Note:**	    Users can use multiple filters to generate required data depending on the use case.
**Syntax**	  

[Copy](javascript:void(0);) ```

`public EmployeeCompensation[] GetEmployeeCompensationsForPeriods(string LoginName, string Password, string TenantCode, string scenarioCode, Filters[] FilterCollection, int startIndex)`

Sample Request

[Copy](javascript:void(0);) ```

`

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.HostAnalytics.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:GetEmployeeCompensationsForPeriods>

<!--Optional :-->

<ns:LoginName>nrramisetty@hostanalytics.com</ns:LoginName>

<!--Optional :-->

<ns:Password>Host@123</ns:Password>

<!--Optional :-->

<ns:TenantCode>WFTMWFONRENAMEON</ns:TenantCode>

<!--Optional :-->

<ns:scenarioCode>Workforce Budget 2021</ns:scenarioCode>

<!--Optional :-->

<ns:FilterCollection>

<!--Zero or more repetitions:-->

<ns:Filters>

<ns:FilterOption>Employees</ns:FilterOption>

<!--Optional :-->

<ns:Values>

<!--Zero or more repetitions:-->

<ns:string >FT1</ns:string >

<ns:string >000000000657</ns:string >

</ns:Values>

</ns:Filters>

</ns:FilterCollection>

<ns:startIndex>0</ns:startIndex>

</ns:GetEmployeeCompensationsForPeriods>

</soapenv:Body>

</soapenv:Envelope>

`



**Success Response**	  

[Copy](javascript:void(0);) ```

`

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<GetEmployeeCompensationsForPeriodsResponse xmlns="http://www.HostAnalytics.com/API/SOAP/StateFree/Common/2009/03/19" >

<GetEmployeeCompensationsForPeriodsResult>

<EmployeeCompensation>

<EmployeeInfo>

<HomeBudgetEntityCode>2020</HomeBudgetEntityCode>

<Number>FT1</Number>

<Name>FT1</Name>

</EmployeeInfo>

<Positions>

<EmployeePositionSummary>

<PositionName>P1</PositionName>

<PositionEntityCode>2020</PositionEntityCode>

<CompensationItems>

<CompensationItem>

<Name>Salaries</Name>

<CalculatedAmounts>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>1</FiscalMonth>

<PeriodName>Feb-20</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>2</FiscalMonth>

<PeriodName>Mar-20</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>3</FiscalMonth>

<PeriodName>Apr-20</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>4</FiscalMonth>

<PeriodName>May-20</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>5</FiscalMonth>

<PeriodName>Jun-20</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>6</FiscalMonth>

<PeriodName>Jul-20</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>7</FiscalMonth>

<PeriodName>Aug-20</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>8</FiscalMonth>

<PeriodName>Sep-20</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>9</FiscalMonth>

<PeriodName>Oct-20</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>10</FiscalMonth>

<PeriodName>Nov-20</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>11</FiscalMonth>

<PeriodName>Dec-20</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>12</FiscalMonth>

<PeriodName>Jan-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>1</FiscalMonth>

<PeriodName>Feb-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>2</FiscalMonth>

<PeriodName>Mar-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>3</FiscalMonth>

<PeriodName>Apr-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>4</FiscalMonth>

<PeriodName>May-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>5</FiscalMonth>

<PeriodName>Jun-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>6</FiscalMonth>

<PeriodName>Jul-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>7</FiscalMonth>

<PeriodName>Aug-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>8</FiscalMonth>

<PeriodName>Sep-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>9</FiscalMonth>

<PeriodName>Oct-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>10</FiscalMonth>

<PeriodName>Nov-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>11</FiscalMonth>

<PeriodName>Dec-21</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>12</FiscalMonth>

<PeriodName>Jan-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>1</FiscalMonth>

<PeriodName>Feb-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>2</FiscalMonth>

<PeriodName>Mar-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>3</FiscalMonth>

<PeriodName>Apr-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>4</FiscalMonth>

<PeriodName>May-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>5</FiscalMonth>

<PeriodName>Jun-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>6</FiscalMonth>

<PeriodName>Jul-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>7</FiscalMonth>

<PeriodName>Aug-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>8</FiscalMonth>

<PeriodName>Sep-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>9</FiscalMonth>

<PeriodName>Oct-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>10</FiscalMonth>

<PeriodName>Nov-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>11</FiscalMonth>

<PeriodName>Dec-22</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>12</FiscalMonth>

<PeriodName>Jan-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>1</FiscalMonth>

<PeriodName>Feb-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>2</FiscalMonth>

<PeriodName>Mar-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>3</FiscalMonth>

<PeriodName>Apr-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>4</FiscalMonth>

<PeriodName>May-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>5</FiscalMonth>

<PeriodName>Jun-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>6</FiscalMonth>

<PeriodName>Jul-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>7</FiscalMonth>

<PeriodName>Aug-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>8</FiscalMonth>

<PeriodName>Sep-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>9</FiscalMonth>

<PeriodName>Oct-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>10</FiscalMonth>

<PeriodName>Nov-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>11</FiscalMonth>

<PeriodName>Dec-23</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>12</FiscalMonth>

<PeriodName>Jan-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>1</FiscalMonth>

<PeriodName>Feb-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>2</FiscalMonth>

<PeriodName>Mar-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>3</FiscalMonth>

<PeriodName>Apr-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>4</FiscalMonth>

<PeriodName>May-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>5</FiscalMonth>

<PeriodName>Jun-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>6</FiscalMonth>

<PeriodName>Jul-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>7</FiscalMonth>

<PeriodName>Aug-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>8</FiscalMonth>

<PeriodName>Sep-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>9</FiscalMonth>

<PeriodName>Oct-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>10</FiscalMonth>

<PeriodName>Nov-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>11</FiscalMonth>

<PeriodName>Dec-24</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>12</FiscalMonth>

<PeriodName>Jan-25</PeriodName>

<LCAmount>1000.000000</LCAmount>

<CCAmount>2000.000000</CCAmount>

<PositionCurrencyAmount>1000.000000</PositionCurrencyAmount>

</CalculatedAmount>

</CalculatedAmounts>

</CompensationItem>

<CompensationItem>

<Name>Headcount - FT</Name>

<CalculatedAmounts>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>1</FiscalMonth>

<PeriodName>Feb-20</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>2</FiscalMonth>

<PeriodName>Mar-20</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>3</FiscalMonth>

<PeriodName>Apr-20</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>4</FiscalMonth>

<PeriodName>May-20</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>5</FiscalMonth>

<PeriodName>Jun-20</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>6</FiscalMonth>

<PeriodName>Jul-20</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>7</FiscalMonth>

<PeriodName>Aug-20</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>8</FiscalMonth>

<PeriodName>Sep-20</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>9</FiscalMonth>

<PeriodName>Oct-20</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>10</FiscalMonth>

<PeriodName>Nov-20</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>11</FiscalMonth>

<PeriodName>Dec-20</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2021</FiscalYear>

<FiscalMonth>12</FiscalMonth>

<PeriodName>Jan-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>1</FiscalMonth>

<PeriodName>Feb-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>2</FiscalMonth>

<PeriodName>Mar-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>3</FiscalMonth>

<PeriodName>Apr-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>4</FiscalMonth>

<PeriodName>May-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>5</FiscalMonth>

<PeriodName>Jun-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>6</FiscalMonth>

<PeriodName>Jul-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>7</FiscalMonth>

<PeriodName>Aug-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>8</FiscalMonth>

<PeriodName>Sep-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>9</FiscalMonth>

<PeriodName>Oct-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>10</FiscalMonth>

<PeriodName>Nov-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>11</FiscalMonth>

<PeriodName>Dec-21</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2022</FiscalYear>

<FiscalMonth>12</FiscalMonth>

<PeriodName>Jan-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>1</FiscalMonth>

<PeriodName>Feb-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>2</FiscalMonth>

<PeriodName>Mar-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>3</FiscalMonth>

<PeriodName>Apr-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>4</FiscalMonth>

<PeriodName>May-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>5</FiscalMonth>

<PeriodName>Jun-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>6</FiscalMonth>

<PeriodName>Jul-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>7</FiscalMonth>

<PeriodName>Aug-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>8</FiscalMonth>

<PeriodName>Sep-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>9</FiscalMonth>

<PeriodName>Oct-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>10</FiscalMonth>

<PeriodName>Nov-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>11</FiscalMonth>

<PeriodName>Dec-22</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2023</FiscalYear>

<FiscalMonth>12</FiscalMonth>

<PeriodName>Jan-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>1</FiscalMonth>

<PeriodName>Feb-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>2</FiscalMonth>

<PeriodName>Mar-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>3</FiscalMonth>

<PeriodName>Apr-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>4</FiscalMonth>

<PeriodName>May-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>5</FiscalMonth>

<PeriodName>Jun-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>6</FiscalMonth>

<PeriodName>Jul-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>7</FiscalMonth>

<PeriodName>Aug-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>8</FiscalMonth>

<PeriodName>Sep-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>9</FiscalMonth>

<PeriodName>Oct-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>10</FiscalMonth>

<PeriodName>Nov-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>11</FiscalMonth>

<PeriodName>Dec-23</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2024</FiscalYear>

<FiscalMonth>12</FiscalMonth>

<PeriodName>Jan-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>1</FiscalMonth>

<PeriodName>Feb-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>2</FiscalMonth>

<PeriodName>Mar-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>3</FiscalMonth>

<PeriodName>Apr-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>4</FiscalMonth>

<PeriodName>May-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>5</FiscalMonth>

<PeriodName>Jun-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>6</FiscalMonth>

<PeriodName>Jul-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>7</FiscalMonth>

<PeriodName>Aug-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>8</FiscalMonth>

<PeriodName>Sep-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>9</FiscalMonth>

<PeriodName>Oct-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>10</FiscalMonth>

<PeriodName>Nov-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>11</FiscalMonth>

<PeriodName>Dec-24</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

<CalculatedAmount>

<FiscalYear>2025</FiscalYear>

<FiscalMonth>12</FiscalMonth>

<PeriodName>Jan-25</PeriodName>

<LCAmount>1.000000</LCAmount>

<CCAmount>2.000000</CCAmount>

<PositionCurrencyAmount>1.000000</PositionCurrencyAmount>

</CalculatedAmount>

</CalculatedAmounts>

</CompensationItem>

</CompensationItems>

</EmployeePositionSummary>

</Positions>

</EmployeeCompensation>

</GetEmployeeCompensationsForPeriodsResult>

</GetEmployeeCompensationsForPeriodsResponse>

</soap:Body>

</soap:Envelope>

`

Invalid Responses
An invalid response could be due to:

  • Invalid or no data for Default Scenario

  • Invalid filter value for a group of filters

  • Invalid or employees out of the Budget cycle

  • Invalid data for compensation items:

    • Compensations not mapped to employees ( or) out of the Budget cycle
    • For compensation Items with no user access
  • Invalid or zero compensation item value for:

    • Compensation items value calculated by system as zero for all the scenario months
    • Compensation item value is 0 explicitly input by the user
    • Compensation items with values calculated by system for some months and 0 for some months
    • For employees whose data is not processed (status is ‘Not processed’)
    • For employees out of the Budget cycle

Process Employees

Used to process employees automatically when you load multiple employees by API.
To process all the employees automatically by using this API, on the Configuration Task page, in the Define Workforce Planning Budgeting Criteria task, for the Enable Delta Processing list box, you must select the Yes option.
PlanningImagesEmployeeApi2.png
If you choose No for the Enable Delta Processing list box, the uploaded employees will not be processed automatically, and the Auto process stopped as Employee Delta process is not enabled notification is displayed. The Auto Process field is included in the Employee Load API definition.
Sample
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns: soapenv ="http://schemas.xmlsoap.org/soap/envelope/" xmlns: ns ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:LoadEmployees>

<!--Optional:-->

<ns:LoginName> ?</ns:LoginName>

<!--Optional:-->

<ns:Password> ?</ns:Password>

<!--Optional:-->

<ns:TenantCode> ?</ns:TenantCode>

<!--Optional:-->

<ns:employees1>

<!--Zero or more repetitions:-->

<ns:EmployeePosition>

<!--Optional:-->

<ns:EmployeeInfo>

<!--Optional:-->

<ns:ScenarioCode> ?</ns:ScenarioCode>

<!--Optional:-->

<ns:HomeBudgetEntityCode> ?</ns:HomeBudgetEntityCode>

<!--Optional:-->

<ns:Number> ?</ns:Number>

<!--Optional:-->

<ns:Name> ?</ns:Name>

<ns:HireDate> ?</ns:HireDate>

</ns:EmployeeInfo>

<!--Optional:-->

<ns:PositionName> ?</ns:PositionName>

<!--Optional:-->

<ns:PositionEntityCode> ?</ns:PositionEntityCode>

<!--Optional:-->

<ns:OtherSegmentCodes>

<!--Zero or more repetitions:-->

<ns:KeyValues>

<!--Optional:-->

<ns:Key> ?</ns:Key>

<!--Optional:-->

<ns:Value> ?</ns:Value>

</ns:KeyValues>

</ns:OtherSegmentCodes>

<!--Optional:-->

<ns:EmployeeTypeCode> ?</ns:EmployeeTypeCode>

<!--Optional:-->

<ns:PayPlanCode> ?</ns:PayPlanCode>

<!--Optional:-->

<ns:WageType> ?</ns:WageType>

<ns:RateperHour> ?</ns:RateperHour>

<ns:WorkHours> ?</ns:WorkHours>

<ns:Salary> ?</ns:Salary>

<ns:FromDate> ?</ns:FromDate>

<ns:TerminationDate> ?</ns:TerminationDate>

<!--Optional:-->

<ns:reviewType> ?</ns:reviewType>

<ns:NextReviewDate> ?</ns:NextReviewDate>

<!--Optional:-->

<ns:Attribute>

<!--Zero or more repetitions:-->

<ns:KeyValues>

<!--Optional:-->

<ns:Key> ?</ns:Key>

<!--Optional:-->

<ns:Value> ?</ns:Value>

</ns:KeyValues>

</ns:Attribute>

<!--Optional:-->

<ns:CompensationItem>

<!--Zero or more repetitions:-->

<ns:KeyValues>

<!--Optional:-->

<ns:Key> ?</ns:Key>

<!--Optional:-->

<ns:Value> ?</ns:Value>

</ns:KeyValues>

</ns:CompensationItem>

<ns:BudgetReviewPercentage> ?</ns:BudgetReviewPercentage>

<ns:CurrentReviewPercentage> ?</ns:CurrentReviewPercentage>

<!--Optional:-->

<ns:BudgetRaiseMultiple>

<!--Zero or more repetitions:-->

<ns:APIBudgetReviews>

<ns:Date> ?</ns:Date>

<ns:Percentage> ?</ns:Percentage>

</ns:APIBudgetReviews>

</ns:BudgetRaiseMultiple>

<!--Optional:-->

<ns:notes> ?</ns:notes>

</ns:EmployeePosition>

</ns:employees1>

<ns:payRollUploadDate> ?</ns:payRollUploadDate>

<ns:AutoProcess> ?</ns:AutoProcess>

</ns:LoadEmployees>

</soapenv:Body>

</soapenv:Envelope>

`

**Example**	  
In the example below, AutoProcess is set to **Yes**	  (<ns:AutoProcess>yes</ns:AutoProcess>).
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/ [schemas.xmlsoap.org]" xmlns:ns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:LoadEmployees>

<!--Optional :-->

<ns:LoginName>hchamarthi@planful.com</ns:LoginName>

<!--Optional :-->

<ns:Password>Wfp@1234</ns:Password>

<!--Optional :-->

<ns:TenantCode>WFPOnetimeGFNew</ns:TenantCode>

<!--Optional :-->

<ns:employees1>

<!--Zero or more repetitions:-->

<ns:EmployeePosition>

<!--Optional :-->

<ns:EmployeeInfo>

<!--Optional :-->

<ns:ScenarioCode>EUB_Budget2018</ns:ScenarioCode>

<!--Optional :-->

<ns:HomeBudgetEntityCode>45</ns:HomeBudgetEntityCode>

<!--Optional :-->

<ns:Number>Planful2000</ns:Number>

<!--Optional :-->

<ns:Name>HA2000</ns:Name>

<ns:HireDate>2017-12-12</ns:HireDate>

</ns:EmployeeInfo>

<!--Optional :-->

<ns:PositionName>HA2000</ns:PositionName>

<!--Optional :-->

<ns:PositionEntityCode>leaf</ns:PositionEntityCode>

<!--Optional :-->

<ns:OtherSegmentCodes>

<!--Zero or more repetitions:-->

<ns:KeyValues>

<!--Optional :-->

<ns:Key >?</ns:Key >

<!--Optional :-->

<ns:Value>?</ns:Value>

</ns:KeyValues>

</ns:OtherSegmentCodes>

<!--Optional :-->

<ns:EmployeeTypeCode>basic</ns:EmployeeTypeCode>

<!--Optional :-->

<ns:PayPlanCode>Equal Monthly</ns:PayPlanCode>

<!--Optional :-->

<ns:WageType>S</ns:WageType>

<ns:Salary>108000</ns:Salary>

<ns:FromDate>2018-01-01</ns:FromDate>

<!--Optional :-->

<ns:reviewType>Single </ns:reviewType>

<!--Optional :-->

<ns:notes>?</ns:notes>

</ns:EmployeePosition>

<ns:EmployeePosition>

<!--Optional :-->

<ns:EmployeeInfo>

<!--Optional :-->

<ns:ScenarioCode>EUB_Budget2018</ns:ScenarioCode>

<!--Optional :-->

<ns:HomeBudgetEntityCode>leaf</ns:HomeBudgetEntityCode>

<!--Optional :-->

<ns:Number>HA3000</ns:Number>

<!--Optional :-->

<ns:Name>HA3000</ns:Name>

<ns:HireDate>2017-12-12</ns:HireDate>

</ns:EmployeeInfo>

<!--Optional :-->

<ns:PositionName>HA11</ns:PositionName>

<!--Optional :-->

<ns:PositionEntityCode>leaf</ns:PositionEntityCode>

<!--Optional :-->

<ns:OtherSegmentCodes>

<!--Zero or more repetitions:-->

<ns:KeyValues>

<!--Optional :-->

<ns:Key >?</ns:Key >

<!--Optional :-->

<ns:Value>?</ns:Value>

</ns:KeyValues>

</ns:OtherSegmentCodes>

<!--Optional :-->

<ns:EmployeeTypeCode>basic</ns:EmployeeTypeCode>

<!--Optional :-->

<ns:PayPlanCode>Equal Monthly</ns:PayPlanCode>

<!--Optional :-->

<ns:WageType>S</ns:WageType>

<ns:Salary>108000</ns:Salary>

<ns:FromDate>2018-01-01</ns:FromDate>

<!--Optional :-->

<ns:reviewType>Single </ns:reviewType>

<!--Optional :-->

<ns:notes></ns:notes>

</ns:EmployeePosition>

</ns:employees1>

<ns:payRollUploadDate>2018-10-10</ns:payRollUploadDate>

<ns:AutoProcess>yes</ns:AutoProcess>

</ns:LoadEmployees>

</soapenv:Body>

</soapenv:Envelope>

`

Success Response
[Copy](javascript:void(0);) ```

`<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/ [schemas.xmlsoap.org]" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance [w3.org]" xmlns:xsd="http://www.w3.org/2001/XMLSchema [w3.org]" >

<soap:Body>

<LoadEmployeesResponse xmlns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<LoadEmployeesResult>

<EmployeeStatuses>

<EmployeeStatus>

<EmployeeInfo>

<ScenarioCode>EUB_Budget2018</ScenarioCode>

<HomeBudgetEntityCode>45</HomeBudgetEntityCode>

<Number>Planful2000</Number>

<Name>HA2000</Name>

<HireDate>2017-12-12T00:00:00</HireDate>

</EmployeeInfo>

<Status>true </Status>

<ErrorMessage>Employee added successfully.</ErrorMessage>

<PositionName>HA2000</PositionName>

</EmployeeStatus>

<EmployeeStatus>

<EmployeeInfo>

<ScenarioCode>EUB_Budget2018</ScenarioCode>

<HomeBudgetEntityCode>leaf</HomeBudgetEntityCode>

<Number>HA3000</Number>

<Name>HA3000</Name>

<HireDate>2017-12-12T00:00:00</HireDate>

</EmployeeInfo>

<Status>true </Status>

<ErrorMessage>Employee added successfully.</ErrorMessage>

<PositionName>HA11</PositionName>

</EmployeeStatus>

</EmployeeStatuses>

<TotalEmployeesLoaded>2</TotalEmployeesLoaded>

<EmployeeLoadSuccessCount>2</EmployeeLoadSuccessCount>

<EmployeeLoadFailureCount>0</EmployeeLoadFailureCount>

<ProcessStatusMessage>Employee process triggered successfully</ProcessStatusMessage>

</LoadEmployeesResult>

</LoadEmployeesResponse>

</soap:Body>

</soap:Envelope>`



## Approval Role Setup APIs


### Add Approval Role
**Syntax**	  
[Copy](javascript:void(0);) ```

`PlanfulAPIStateFreeClient.localplanful.OperationResult AddApprovalRoleForBudgetEntity(string userLogin, string entityCode, string roleName, string loginName, string password, string tenantCode)`

Usage
This API automates approval role setup for budget users eliminating the need to select approval role options on an individual budget user basis.
Approval Role identifies user authorizations to perform template actions such as; approval actions related to budget templates, sales templates and initiative templates. Approval roles also provide users with access to sales information.
Setup functionality allows you to define varying levels of user responsibility for budget entities. For example, when a user has access to two entities (A and B), but has HR responsibility for entity B only, the user can be restricted to only view specific data based on HR access for the approval role assigned for the entity.
Assigning different approval roles for different entities provides a user with different levels of privileges. For example, an Admin role might provide ‘Workforce’ template access, but an ‘Admin with no HR’ role, might not have ‘HR’ (Workforce Planning) template access.
The following fields are required.

  • User ID – typically the users name
  • Segment - A segment is the Planful term for a dimension. Dimensions may be referred to as segments throughout the application.
  • Code – represents the complete path to a budget entity. For example, Bob Smith is a Budget Manager and one of the segment codes he has access to is 2000-Americas|2100-US|2110-US North East|All.

Duplicate codes are supported, but the entire segment code path must be provided so that the API can properly identify it in regards to approval role access. For example, in the budget hierarchy below, the complete segment code path is provided. The paths are duplicates with the exception of the 100-100 entity.
Note: The segmentCode (Dimension Member Name / Budget Entity Name) must be unique in order for the API to work seamlessly. Otherwise, it will apply to the first member that the API finds with the segmentCode available in the Dimension Tree.

  

User IDSegment CodeApproval Role
bsmith@planful.comBudget Hierarchy | 100-100 | 100-100 | 101-101| 1001-1001Budget approver
bsmith@planful.comBudget Hierarchy | 100-100 | 100-101 | 100-100 | 1001-1001 | 100-100Budget approver

Sample
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:AddApprovalRoleForBudgetEntity>

<ns:userLogin>ababu@planful.com</ns:userLogin>

<ns:entityCode>Entity</ns:entityCode>

<ns:roleName>Budget Approver</ns:roleName>

<ns:loginName>anilvkbabu@planful.com</ns:loginName>

<ns:password>testUser123#</ns:password>

<ns:tenantCode>TESTCPMTENANTBASEQA</ns:tenantCode>

</ns:AddApprovalRoleForBudgetEntity>

</soapenv:Body>

</soapenv:Envelope>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<AddApprovalRoleForBudgetEntityResponse xmlns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<AddApprovalRoleForBudgetEntityResult>

<Success>true </Success>

<message>Approval Role has been configured successfully</message>

</AddApprovalRoleForBudgetEntityResult>

</AddApprovalRoleForBudgetEntityResponse>

</soap:Body>

</soap:Envelope>`



### Remove Approval Role
**Syntax**	  
[Copy](javascript:void(0);) ```

`PlanfulAPIStateFreeClient.localplanful.OperationResult RemoveApprovalRoleForBudgetEntity(string userLogin, string entityCode, string loginName, string password, string tenantCode)`

Sample
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:RemoveApprovalRoleForBudgetEntity>

<ns:userLogin>ababu@planful.com</ns:userLogin>

<ns:entityCode>Entity</ns:entityCode>

<ns:roleName>Budget Approver</ns:roleName>

<ns:loginName>anilvkbabu@planful.com</ns:loginName>

<ns:password>testUser123#</ns:password>

<ns:tenantCode>TESTCPMTENANTBASEQA</ns:tenantCode>

</ns:RemoveApprovalRoleForBudgetEntity>

</soapenv:Body>

</soapenv:Envelope>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<RemoveApprovalRoleForBudgetEntityResponse xmlns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<RemoveApprovalRoleForBudgetEntityResult>

<Success>true </Success>

<message>Approval Role has been removed successfully.</message>

</RemoveApprovalRoleForBudgetEntityResult>

</RemoveApprovalRoleForBudgetEntityResponse>

</soap:Body>

</soap:Envelope>`



### Extract Approval Role for a Single User
**Syntax**	  
[Copy](javascript:void(0);) ```

`PlanfulAPIStateFreeClient.localplanful.BudgetEntityApprovalRole[] GetApprovalRolesForUser(string userLogin, string loginName, string password, string tenantCode)`

Sample
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:GetApprovalRolesForUser>

<ns:userLogin>muralimohan1234@planful.com</ns:userLogin>

<ns:loginName>anilvkbabu@planful.com</ns:loginName>

<ns:password>testUser123#</ns:password>

<ns:tenantCode>TESTCPMTENANTBASEQA</ns:tenantCode>

</ns:GetApprovalRolesForUser>

</soapenv:Body>

</soapenv:Envelope>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<GetApprovalRolesForUserResponse xmlns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<GetApprovalRolesForUserResult>

<BudgetEntityApprovalRole>

<UserLogin>muralimohan1234@planful.com</UserLogin>

<BudgetEntityCode>1050-001-10-110-4100</BudgetEntityCode>

<BudgetEntityLabel>1050-001-10-110-4100 - OXO-Sales-USD</BudgetEntityLabel>

<ApprovalRole>Budget Approver</ApprovalRole>

</BudgetEntityApprovalRole>

<BudgetEntityApprovalRole>

<UserLogin>muralimohan1234@planful.com</UserLogin>

<BudgetEntityCode>1030-001-20-120-4200</BudgetEntityCode>

<BudgetEntityLabel>1030-001-20-120-4200 - Professional-Marketing-USD</BudgetEntityLabel>

<ApprovalRole>Budget Approver</ApprovalRole>

</BudgetEntityApprovalRole>

</GetApprovalRolesForUserResult>

</GetApprovalRolesForUserResponse>

</soap:Body>

</soap:Envelope>

`



### Extract Approval Role for All Users API
**Syntax**	  
[Copy](javascript:void(0);) ```

`PlanfulAPIStateFreeClient.localplanful.BudgetEntityApprovalRole[]GetAllApprovalRolesForAllUsers(ref bool hasMore, int startIndex, string loginName, string password, string tenantCode)`

Sample
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:GetAllApprovalRolesForAllUsers>

<ns:hasMore>true </ns:hasMore>

<ns:startIndex>0</ns:startIndex>

<ns:loginName>anilvkbabu@planful.com</ns:loginName>

<ns:password>testUser123#</ns:password>

<ns:tenantCode>TESTCPMTENANTBASEQA</ns:tenantCode>

</ns:GetAllApprovalRolesForAllUsers>

</soapenv:Body>

</soapenv:Envelope>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<GetAllApprovalRolesForAllUsersResponse xmlns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<GetAllApprovalRolesForAllUsersResult>

<BudgetEntityApprovalRole>

<UserLogin>vadlamudi.prathyusha@planful.com</UserLogin>

<BudgetEntityCode/>

<BudgetEntityLabel>Budget Hierarchy</BudgetEntityLabel>

<ApprovalRole>Budget Approver</ApprovalRole>

</BudgetEntityApprovalRole>

<BudgetEntityApprovalRole>

<UserLogin>ababu@Planful.com</UserLogin>

<BudgetEntityCode>Entity</BudgetEntityCode>

<BudgetEntityLabel>Entity - Common Areas</BudgetEntityLabel>

<ApprovalRole>Budget Approver</ApprovalRole>

</BudgetEntityApprovalRole>

<BudgetEntityApprovalRole>

<UserLogin>mchiruvella@planful.com</UserLogin>

<BudgetEntityCode/>

<BudgetEntityLabel>Budget Hierarchy</BudgetEntityLabel>

<ApprovalRole>Budget Approver</ApprovalRole>

</BudgetEntityApprovalRole>

<BudgetEntityApprovalRole>

<UserLogin>anilvkbabu@planful.com</UserLogin>

<BudgetEntityCode>1155</BudgetEntityCode>

<BudgetEntityLabel>1155 - Germany</BudgetEntityLabel>

<ApprovalRole>Budget Preparer</ApprovalRole>

</BudgetEntityApprovalRole>

<BudgetEntityApprovalRole>

<UserLogin>anilvkbabu@planful.com</UserLogin>

<BudgetEntityCode>Entity</BudgetEntityCode>

<BudgetEntityLabel>Entity - Common Areas</BudgetEntityLabel>

<ApprovalRole>Budget Approver</ApprovalRole>

</BudgetEntityApprovalRole>

<BudgetEntityApprovalRole>

<UserLogin>vadlamudiprathyusha3@planful.com</UserLogin>

<BudgetEntityCode/>

<BudgetEntityLabel>Budget Hierarchy</BudgetEntityLabel>

<ApprovalRole>Budget Approver</ApprovalRole>

</BudgetEntityApprovalRole>

<BudgetEntityApprovalRole>

<UserLogin>muralimohan1234@planful.com</UserLogin>

<BudgetEntityCode>1050-001-10-110-4100</BudgetEntityCode>

<BudgetEntityLabel>1050-001-10-110-4100 - OXO-Sales-USD</BudgetEntityLabel>

<ApprovalRole>Budget Approver</ApprovalRole>

</BudgetEntityApprovalRole>

<BudgetEntityApprovalRole>

<UserLogin>muralimohan1234@planful.com</UserLogin>

<BudgetEntityCode>1030-001-20-120-4200</BudgetEntityCode>

<BudgetEntityLabel>1030-001-20-120-4200 - Professional-Marketing-USD</BudgetEntityLabel>

<ApprovalRole>Budget Approver</ApprovalRole>

</BudgetEntityApprovalRole>

</GetAllApprovalRolesForAllUsersResult>

<hasMore>false </hasMore>

</GetAllApprovalRolesForAllUsersResponse>

</soap:Body>

</soap:Envelope>

`



## Scenario Access APIS


### Scenario Access Update API
**Syntax**	  
[Copy](javascript:void(0);) ```

`PlanfulAPIStateFreeClient.localplanful.OperationResultAllowScenarioAccessToUser(string userLogin, string scenarioCode, string loginName, string password, string TenantCode)`

Usage
This API updates Scenario Access permissions based on User ID and Scenario Code.
Sample
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:ns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:AllowScenarioAccessToUser>

<ns:userLogin>anilvkbabu@planful.com</ns:userLogin>

<ns:scenarioCode>Budget 2009</ns:scenarioCode>

<ns:loginName>anilvkbabu@planful.com</ns:loginName>

<ns:password>testUser123#</ns:password>

<ns:TenantCode>TESTCPMTENANTBASEQA</ns:TenantCode>

</ns:AllowScenarioAccessToUser>

</soapenv:Body>

</soapenv:Envelope>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<AllowScenarioAccessToUserResponse xmlns="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<AllowScenarioAccessToUserResult>

<Success>true </Success>

<message>Scenario Access has been provided successfully</message>

</AllowScenarioAccessToUserResult>

</AllowScenarioAccessToUserResponse>

</soap:Body>

</soap:Envelope>`



### Scenario Access Removal API
**Syntax**	  
[Copy](javascript:void(0);) ```

`PlanfulAPIStateFreeClient.localplanful.OperationResultRemoveScenarioAccessFromUser(string userLogin, string scenarioCode, string loginName, string password, string TenantCode)`

Usage
Before Scenario Access can be updated, existing data must be removed. This API removes Scenario Access permissions.
Sample
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns: soapenv ="http://schemas.xmlsoap.org/soap/envelope/" xmlns: ns ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:RemoveScenarioAccessFromUser>

<ns:userLogin> test1a1@ha.com</ns:userLogin>

<ns:scenarioCode> Budget 2009</ns:scenarioCode>

<ns:loginName> anilvkbabu@planful.com</ns:loginName>

<ns:password> testUser123#</ns:password>

<ns:TenantCode> TESTCPMTENANTBASEQA</ns:TenantCode>

</ns:RemoveScenarioAccessFromUser>

</soapenv:Body>

</soapenv:Envelope>

<soap:Envelope xmlns: soap ="http://schemas.xmlsoap.org/soap/envelope/"

xmlns: xsi ="http://www.w3.org/2001/XMLSchema-instance"

xmlns: xsd ="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<RemoveScenarioAccessFromUserResponse xmlns ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<RemoveScenarioAccessFromUserResult>

<Success> true</Success>

<message> Scenario Access has been removed successfully.</message>

</RemoveScenarioAccessFromUserResult>

</RemoveScenarioAccessFromUserResponse>

</soap:Body>

</soap:Envelope>

`



### Scenario Access Data Extract – Based on User
**Syntax**	  
[Copy](javascript:void(0);) ```

`string [] GetBudgetScenariosAccessibleToUser(string userLogin, string loginName, string password, string TenantCode)`

Usage
This API extracts existing scenario access data stored in Planful. Existing data is required to compare with source data to locate change records.
Two APIs are provided; one which will extract scenario access data for a single user only and the other which will extract data for all scenarios
Sample
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns: soapenv ="http://schemas.xmlsoap.org/soap/envelope/" xmlns: ns ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:GetBudgetScenariosAccessibleToUser>

<ns:userLogin> test1a1@ha.com</ns:userLogin>

<ns:loginName> anilvkbabu@planful.com</ns:loginName>

<ns:password> testUser123#</ns:password>

<ns:TenantCode> TESTCPMTENANTBASEQA</ns:TenantCode>

</ns:GetBudgetScenariosAccessibleToUser>

</soapenv:Body>

</soapenv:Envelope>

<soap:Envelope xmlns: soap ="http://schemas.xmlsoap.org/soap/envelope/"

xmlns: xsi ="http://www.w3.org/2001/XMLSchema-instance"

xmlns: xsd ="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<GetBudgetScenariosAccessibleToUserResponse xmlns ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<GetBudgetScenariosAccessibleToUserResult>

<string> Budget 2009</string>

<string> Budget 2010</string>

</GetBudgetScenariosAccessibleToUserResult>

</GetBudgetScenariosAccessibleToUserResponse>

</soap:Body>

</soap:Envelope>

`



### Scenario Access Data Extract – All Scenarios API
**Syntax**	  
[Copy](javascript:void(0);) ```

`PlanfulAPIStateFreeClient.localplanful.SegmentMemberSecurityInfo[] GetAllBudgetScenariosAccessible(ref bool hasMore, int startIndex, string LoginName, string Password, string TenantCode)`

Usage
This API extracts existing scenario access data stored in Planful. Existing data is required to compare with source data to locate change records.
Two APIs are provided; one which will extract scenario access data for a single user only and the other which will extract data for all scenarios.
Sample
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns: soapenv ="http://schemas.xmlsoap.org/soap/envelope/" xmlns: ns ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:GetAllBudgetScenariosAccessible>

<ns:hasMore> true</ns:hasMore>

<ns:startIndex> 0</ns:startIndex>

<ns:LoginName> anilvkbabu@planful.com</ns:LoginName>

<ns:Password> testUser123#</ns:Password>

<ns:TenantCode> TESTCPMTENANTBASEQA</ns:TenantCode>

</ns:GetAllBudgetScenariosAccessible>

</soapenv:Body>

</soapenv:Envelope>

<soap:Envelope xmlns: soap ="http://schemas.xmlsoap.org/soap/envelope/"

xmlns: xsi ="http://www.w3.org/2001/XMLSchema-instance"

xmlns: xsd ="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<GetAllBudgetScenariosAccessibleResponse xmlns ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<GetAllBudgetScenariosAccessibleResult>

<SegmentMemberSecurityInfo>

<UserLogin> muralimohan1234@planful.com</UserLogin>

<SegmentMemberCode> Budget 2009</SegmentMemberCode>

</SegmentMemberSecurityInfo>

<SegmentMemberSecurityInfo>

<UserLogin> test1a1@ha.com</UserLogin>

<SegmentMemberCode> Budget 2009</SegmentMemberCode>

</SegmentMemberSecurityInfo>

<SegmentMemberSecurityInfo>

<UserLogin> test1a1@ha.com</UserLogin>

<SegmentMemberCode> Budget 2010</SegmentMemberCode>

</SegmentMemberSecurityInfo>

</GetAllBudgetScenariosAccessibleResult>

<hasMore> false</hasMore>

</GetAllBudgetScenariosAccessibleResponse>

</soap:Body>

</soap:Envelope>

`



## Dimension Member Name Update API
The dimension member name update is available for Financial Dimension members. 
**Syntax**	  
[Copy](javascript:void(0);) ```

`UpdateDimensionMembersResponse UpdateNameforDimensionMember(string DimensionCode, List<DimensionMembers> Dimension Members, string LoginName, string Password, string TenantCode)`

Usage
This API updates names of members in a given dimension for the Main Hierarchy.
Sample
[Copy](javascript:void(0);) ```

`List<DimensionMember> membersList = new List<DimensionMember> (){ new

DimemsionMember(){ Code = "Sample Code", Name = "Sample Name"}};

UpdateDimensionMemberResponse response = UpdateNameforDimensionMember("Account", memberList, "user@planful.com", "password", "TestTenant");`

**Response**	  
**Status**	  - Enum (success, Failure, CompletedwithErrors)
**Message**	  - String
**MembersStatus**	  - List Object (each object in list will have Code - string, Status - enum. Message - Success or reason for failure


## Bulk User and User Group Extract API
**Syntax**	  
[Copy](javascript:void(0);) ```

`List<Planful.EPM.WebServices.UserInformation.UserAndUserGrroups> Get_AllUserGroups(Boolean hasMore, int startIndiex, string LogingName, string Password, string TenantCode)`

Usage
This API is available for bulk user and user group extraction.
Samples
[Copy](javascript:void(0);) ```

`List<Planful.EPM.WebServices.UserInformation.UserAndUserGrroups> Get_AllUserGroups(True, 0, "test@planful.com", QAEnviornment", "HACPM867")

<soapenv:Header/>

<soapenv:Body>

<ns:Get_AllUserGroups>

ns:hasMore>True</ns:hasMore>

ns:startIndex>0</ns:StartIndex

</ns:Get_AllUserGroups>

</soapenv:Body> `


[Copy](javascript:void(0);) This User Doesn't Have Any User Group Mapping

`Get_AllUserGroupsResult>

<UserAndUserGroups>

<UserLogin> khegglin@planful.com</UserLogin>

<UserGroups/>

</UserAndUserGroups> `


[Copy](javascript:void(0);) This User Belongs to Two User Groups

`Get_AllUserGroupsResult>

<UserAndUserGroups>

<UserLogin> khegglin@planful.com</UserLogin>

<UserGroups>

<string> G1</string>

<string> G2</string>

<UserGroups/>

</UserAndUserGroups> `

**Output**	  
[Copy](javascript:void(0);) ```

`<soap:Envelope xmlns: soap  ="http://schemas.xmlsoap.org/soap/envelope/"  

xmlns: xsi  ="http://www.w3.org/2001/XMLSchema-instance"  

xmlns: xsd  ="http://www.w3.org/2001/XMLSchema"  > 

<soap:Body> 

<Get_BulkUserGroupsResponse 

xmlns  ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19"  > 

<Get_BulkUserGroupsResult> 

<BulkUserGroups> 

<UserLogin> K.Hegglin@Planful.com</UserLogin> 

<UserGroups/> 

</BulkUserGroups> 

<BulkUserGroups> 

<UserLogin> K.Smith@Planful.com</UserLogin> 

<UserGroups/> 

</BulkUserGroups> 

<BulkUserGroups> 

<UserLogin> L.Bean@Planful.com</UserLogin> 

<UserGroups/> 

</BulkUserGroups> 

<BulkUserGroups> 

<UserLogin> Mike.John@Planful.com</UserLogin> 

<string> G1</string> 

<string> G2</string> 

<UserGroups/> 

</BulkUserGroups> 

</Get_BulkUserGroupsResult> 

<hasMore> false</hasMore> 

<Get_BulkUserGroupsResponset> 

</soap:Body> 

</soap:Envelope> 

`

Dimension Security APIs

This API provides the ability to apply dimension security to users. The following methods can be used to set or update dimension security.

ApplyDimensionSecurity

Applies all the Dimension Security Configuration updates and refreshes the Finance cube with latest security information. (Note that this is applicable for Financial Cube only.)
[Copy](javascript:void(0);) ```

Public Function ApplyDimensionSecurity(ByVal LoginName As String, ByVal Password As String, ByVal TenantCode As String) As StandardObjects.OperationResult



#### UpdateFactlessFactSecurityForUser
Updates all the Dimension Security setup for the specified user and refreshes the Finance cube with latest security information. (Note that this is applicable for Financial Cube only.)
[Copy](javascript:void(0);) ```

`Public Function UpdateFactlessFactSecurityForUser(ByVal UserLogin As String, ByVal LoginName As String, ByVal Password As String, ByVal TenantCode As String) As StandardObjects.OperationResult`

The dimension member name update is available for Financial Dimension members.
[Copy](javascript:void(0);) ```

StandardObjects.OperationResult



### Calls
The Dimensions Security API is made up of several calls that provide the automatic capability to:
Create users 
Modify users and update user properties 
Map users to user groups 
Generate a list of user groups per user 
Generate a list of users 
Update dimension security 
Retrieve dimension security details based upon segment 
Process dimension details/update the reporting cube 
Each section in this document contains information on:
•The functionality needed and how it is addressed using an API call
•The API call itself and examples
•Cases where the API call will be invalid


### User Creation
The CreateUser call is used to automatically create a new user(s) with specified roles and properties.  The current Data Load Rules option allows Native type users to be created only (no single sign on users).  The Dimension Security API allows you to create both Native and SSO user types.
A customer supplies a data load file with user information for users to be created in Planful.  A Boomi process (or any other Soap API) consumes the API to perform the required user creation and update tasks.  If the user is already present in the tenant group, but mapped to another tenant, the API will map the user to that tenant.  When a user is added to a tenant, the API will not update the first name, last name, and roles/properties for the user if the information differs from current user details.
**Format of API String**	  
Bool CreateUser(string firstName, string lastName, string userLogin, string navigationRole, string reportingRole, string supportRole, string authenticationType, bool isActive, string loginName, string password, string tenantCode)
Data that needs to be supplied to the API:
 
  * firstName – In string format
  * lastName – In string format
  * userLogin – A valid email ID  (the API will check to see if the user is already mapped in the application)
  * navigationRole - Existing navigation role
  * reportingRole - Existing reporting role
  * supportRole - Existing support role type (the API validates if the number of administrators are within the allowed limit)
  * Authentication type – In string format
  * Status – In Boolean format (“false” for Inactive, “true” for Active)
  * DynamicPlanningUser - If the user is a Dynamic planning user (Yes or No)
  * DynamicPlanningRole - If the user is a Dynamic Planning user, then this field must have an appropriate Dynamic Planning Role type
  * LoginName, password and tenantCode – the credentials of the user are used to authenticate the API connection
 
Following is sample request and response code of a successful API call.
**Sample Request**	  
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns: soapenv  ="http://schemas.xmlsoap.org/soap/envelope/"  xmlns: ns  ="http://www.HostAnalytics.com/API/SOAP/StateFree/Common/2009/03/19"  > 

<soapenv:Header/> 

<soapenv:Body> 

<ns:CreateNewUser> 

<!--Optional:--> 

<ns:FirstName> NewUser</ns:FirstName> 

<!--Optional:--> 

<ns:LastName> NewUser</ns:LastName> 

<!--Optional:--> 

<ns:UserLogin> NewUser007@planful.com</ns:UserLogin> 

<!--Optional:--> 

<ns:NavigationRole> Super Admin</ns:NavigationRole> 

<!--Optional:--> 

<ns:ReportingRole> Regular User</ns:ReportingRole> 

<!--Optional:--> 

<ns:SupportRole> User</ns:SupportRole> 

<!--Optional:--> 

<ns:authenticationType> 1</ns:authenticationType> 

<ns:status> 1</ns:status> 

<!--Optional:--> 

<ns:DynamicPlanningUser> Yes</ns:DynamicPlanningUser> 

<!--Optional:--> 

<ns:DynamicPlanningRole> Power User</ns:DynamicPlanningRole> 

<!--Optional:--> 

<ns:LoginName> qaautomationrun4@hostanalytics.com</ns:LoginName> 

<!--Optional:--> 

<ns:Password> H@20@fAut0m@te</ns:Password> 

<!--Optional:--> 

<ns:TenantCode> BVTFullyUnifiedAPITenant</ns:TenantCode> 

</ns:CreateNewUser> 

</soapenv:Body> 

</soapenv:Envelope> 

`

Sample Response
[Copy](javascript:void(0);) ```

`<soap:Envelope xmlns: soap ="http://schemas.xmlsoap.org/soap/envelope/" xmlns: xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns: xsd ="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<CreateNewUserResponse xmlns ="http://www.HostAnalytics.com/API/SOAP/StateFree/Common/2009/03/19" >

<CreateNewUserResult>

<Success> true</Success>

<message> User created successfully.</message>

</CreateNewUserResult>

</CreateNewUserResponse>

</soap:Body>

</soap:Envelope>

`

**Note:**	    Dynamic Planning User and Role are not supported through User Load in Data Load Rules.
Dynamic Planning Users and Roles are supported only in those applications where the Unified User Management is enabled. You can contact Planful Support to enable this feature in your application.
**Sample Call**	  
[Copy](javascript:void(0);) CreateUser

`(“Prasanna””Lakshmi”,”klakshmi@planful.com”,”BudgetAdministrator”,”RegularUser”,”SSO”,true,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”)Invalid Input - User already exists in the tenant

<CreateNewUserResult>

<Code> 5</Code>

<Success> false</Success>

<message> User already exists in current tenant.</message>

</CreateNewUserResult>

Valid Input - User created successfully

<CreateNewUserResult>

<Success> true</Success>

<message> User Created Succesfully.</message>

</CreateNewUserResult> `

**Invalid Cases**	  
•The user’s first name is null or empty
•The user login is not a valid email, the email already exists in the tenant, or the email is present in another tenant group
•The navigation role, reporting role, or support role is invalid
•The authentication type is not Native or SSO.  The authentication type must match the tenant authentication type


### User Modification / Update User Properties
Administrators need the ability to manage the status and other properties of application users over time.  The UpdateUserProperty call provides automatic and continuous user updates with the exception of the user’s first and last name.
**Format of API String**	  
bool UpdateUserProperty(string userLogin (userid), string userPropertyName, object value, string loginName, string password, string tenantCode)
Data that needs to be supplied to the API:
 
  * userLogin (user ID) – in string format
  * userPropertyName – In string format (the property that needs to be updated – Eg Status)
  * object value – The new updated property.  The format depends upon the input required for the property type.  For example, if the property being updated is First Name, then the input would be in string format.  If the property being updated is Status, the input would be in Boolean format.
  * loginName, password and tenantcode – user credentials to authenticate the API connection
 
Following is sample request and response code of a successful API call.
**Request**	  
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns: soapenv  ="http://schemas.xmlsoap.org/soap/envelope/"  xmlns: ns  ="http://www.HostAnalytics.com/API/SOAP/StateFree/Common/2009/03/19"  > 

<soapenv:Header/> 

<soapenv:Body> 

<ns:UpdateUserInformation> 

<!--Optional:--> 

<ns:UserLogin> NewUser007@planful.com</ns:UserLogin> 

<!--Optional:--> 

<ns:UserPropertyName> DynamicPlanningRole</ns:UserPropertyName> 

<!--Optional:--> 

<ns:Value> Power User</ns:Value> 

<!--Optional:--> 

<ns:LoginName> qaautomationrun4@hostanalytics.com</ns:LoginName> 

<!--Optional:--> 

<ns:Password> H@20@fAut0m@te</ns:Password> 

<!--Optional:--> 

<ns:TenantCode> BVTFullyUnifiedAPITenant</ns:TenantCode> 

</ns:UpdateUserInformation> 

</soapenv:Body> 

</soapenv:Envelope> 

`

Response
[Copy](javascript:void(0);) ```

`<soap:Envelope xmlns: soap ="http://schemas.xmlsoap.org/soap/envelope/" xmlns: xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns: xsd ="http://www.w3.org/2001/XMLSchema" >

<soap:Body>

<UpdateUserInformationResponse xmlns ="http://www.HostAnalytics.com/API/SOAP/StateFree/Common/2009/03/19" >

<UpdateUserInformationResult>

<Success> true</Success>

<message> User Updated Successfully</message>

</UpdateUserInformationResult>

</UpdateUserInformationResponse>

</soap:Body>

</soap:Envelope>

`

Dynamic Planning Roles are supported only in those applications where the Unified User Management is enabled. You can contact Planful Support to enable this feature in your application.
**Sample Calls**	  
[Copy](javascript:void(0);) Status Update - UpdateUserProperty

`(”klakshmi@planful.com”,”Status”,true ,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”) → Makes the user ‘klakshmi@planful.com’ Active in QATenant

`


[Copy](javascript:void(0);) Status Update - UpdateUserProperty

(”klakshmi@planful.com”,”Status”,false ,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”) → Makes the user ‘klakshmi@planful.com’ InActive in QATenant


[Copy](javascript:void(0);) Navigation Role Update - UpdateUserProperty

(”klakshmi@planful.com”,”NavigationRole”,”BudgetAdministrator”,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”)


[Copy](javascript:void(0);) Navigation Role Update - UpdateUserProperty - User Not Updated

`(”klakshmi@planful.com”,”ReportingRole”,”RegularUser”,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”)Invalid input – user does not exist in the tenant

<UpdateUserInformationResult>

<Code>15</Code>

<Success>false</Success>

<message>User does not exist in the tenant.</message>

</UpdateUserInformationResult>

`


[Copy](javascript:void(0);) UpdateUserProperty - User Updated Successfully

`<UpdateUserInformationResult>

<Success>true</Success>

<message>User Updated Successfully</message>

</UpdateUserInformationResult>`

**Invalid Cases**	  
 
  * The user login is invalid
  * Invalid value for NavigationRole and/or ReportingRole
  * userPropertyName does not equal the status/navigationRole/reportingRole
 


### Mapping Users to User Groups
Administrators need the ability to continually manage / update user groups.  The MapToUserGroup call automatically updates user group mapping information.
**Format of API String**	  
[Copy](javascript:void(0);) ```

`bool MapToUserGroup(string userLogin, string userGroupCode,bool mapUser, string loginName, string password, string tenantCode)`

Data That Needs to be Supplied to the API

  • userLogin (user ID) – in string format
  • userGroupCode – existing user group code in string format
  • mapUser – Boolean value – “False” unmaps the user to the user group and “True” maps the user to the user group
  • loginName, password and tenantCode – user credentials to authenticate the API connection

Sample Calls
[Copy](javascript:void(0);) MapToUserGroup - Add User to User Group


`(”klakshmi@planful.com”,”TestUserGroup”,true ,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”) → This call adds ‘klakshmi@planful.com’ to UserGroup ‘TestUSerGroup’.`

[Copy](javascript:void(0);) MapToUserGroup - Remove User From User Froup


`(”klakshmi@planful.com”,”TestUserGroup”,false ,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”) → This call deletes ‘klakshmi@planful.com’ from UserGroup ‘TestUserGroup’ if they are already added to that group `

[Copy](javascript:void(0);) Invalid Call – When user group code doesn’t exist in Planful


`<MapToUserGroupResult>

<Code>22</Code>

<Success>false </Success>

<message>Invalid user group code.</message>

</MapToUserGroupResult>`

[Copy](javascript:void(0);) Valid Call – User mapped to user group successfully


`<MapToUserGroupResult>

<Success>true </Success>

<message>User updated in user group successfully</message>

</MapToUserGroupResult>`

Invalid Cases

  • userLogin does not exist in Planful
  • userGroup code does not exist i in Planful

Get List of User Groups

To update user group mappings, an administrator needs to know the current user group mapping. The GetUserGroupsByUser call generates a list of user groups mapped to the user.
Format of API String
[Copy](javascript:void(0);) ```

List&lt;string &gt; GetUserGroupsByUser(string userLogin, string loginName, string password, string tenantCode)

Data That Needs to be Supplied to the API
 
  * userLogin (user id) – in string format
  * loginName, password and tenantCode – user credentials to authenticate the API connection
 
Output
API will result below list of values
**Sample Call**	  
[Copy](javascript:void(0);) GetUserGroupsByUser

`(”klakshmi@planful.com”,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”) → Gets the list of user groups for which ‘klakshmi@planful.com’ is added.

<Get_UserGroups_By_UserResult>

string >UG!</string >

<string >UG2</string >

<string >Raj+Naren</string >

<string >Test RC</string >

</Get_UserGroups_By_UserResult>`



### Generate List of Users – Get Users
The List<User>GetUsers call retrieves a list of users.
**Format of API String**	  
List<User> GetUsers(int startIndex=0, out hasMore,string loginName, string password, string tenantCode)
**Data That Needs to be Supplied to the API**	  
•startIndex – in numeric format
•loginName, password and tenantCode – user credentials to authenticate the API connection
**Output**	  
API will result in a list of values
The sample output below has 2 users and hasMore is true, which means that there are more users in the system.
[Copy](javascript:void(0);) ```

`<Get_UsersResponse 

<Get_UsersResult> 

<User> 

<UserLogin> vpeddineni@planful.com</UserLogin> 

<FirstName> Venkat</FirstName> 

<LastName> P</LastName> 

<NavigationRoleName> Budget Administrator</NavigationRoleName> 

<ReportingRole> RegularUser</ReportingRole> 

<SupportRole> User</SupportRole> 

<AuthenticationType> Native</AuthenticationType> 

<Status> true</Status> 

<SupportId> 376970479</SupportId> 

</User> 

<User> 

<UserLogin> vchakrapani@planful.com</UserLogin> 

<FirstName> V</FirstName> 

<LastName> Chakrapani</LastName> 

<NavigationRoleName> Budget Administrator</NavigationRoleName> 

<ReportingRole> RegularUser</ReportingRole> 

<SupportRole> User</SupportRole> 

<AuthenticationType> Native</AuthenticationType> 

<Status> true</Status> 

<SupportId> 344912099</SupportId> 

</User> 

</Get_UsersResult> 

<hasMore> true</hasMore> 

</Get_UsersResponse> 

`

Sample Calls
[Copy](javascript:void(0);) Get 0 to 4999 Users


`GetUsers(0,out has more,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”) → Gets the users in the system from sequence no 0-4999.

`

[Copy](javascript:void(0);) Get 5000+ Users


`If ‘hasmore’ is set to true after the API call, the API should be called again as follows:

GetUsers(5000,out hasMore,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”) to get the next 5000 users.`

Dimension Security Update API

In Planful, dimension access for reporting is controlled by the Dimension Security configuration and Setup. The UpdateDimensionSecurityByUser call saves the custom security data by user at the cube level. This security is applicable for all cube-based reporting in Planful (i.e. Dynamic Reports, Report Books, FPP, Excel Add-in, etc.).
Prior to using the UpdateDimensionSecurityByUser call, administrators establish dimension security using the Planful Dimension Security Configuration and Setup pages. Dimensions can be expanded to display specific members to secure as disucessed below. Once complete, the administrator uses the API to update user details.
Note: Customer dimensions such as Fund, Org, Program, and Account must be configured as secured dimensions.

Expanded Dimension Members

Format of API String
[Copy](javascript:void(0);) ```

Bool UpdateDimensionSecurityByUser(string userLogin, string dimensionName, string dimensionMemberCode,bool allowAccess, string loginName, string password, string tenantCode)

Data That Needs to be Supplied to the API
 
  * userLogin (user id) – in string format
  * dimensionName – in string format
  * dimensionMemberCode – in string format
  * allowAccess – In Boolean format – “False” for do not allow, “True” for allow
  * loginName, password and tenantCode – user credentials to authenticate the API connection
 
**Sample Calls**	  
[Copy](javascript:void(0);) UpdateDimensionSecurityByUser - Provide Access for a User to a Dimension

(”klakshmi@planful.com”,”Account”,”Internet”,true,Financial,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”) → Gives user ‘klakshmi@planful.com’ access to Dimension member ‘Internet’


[Copy](javascript:void(0);) UpdateDimensionSecurityByUser - Remove Access to a Dimension for a User

`(”klakshmi@planful.com”,”Account”,”Internet”,false,Financial,”planfuluser@gmail.com”,”planfulusertest”,”QATenant”) → Removes user ‘klakshmi@planful.com’ access to Dimension member ‘Internet’.

Valid call – Dimension security updated successfully

<Update_Dimension_Security_ByUserResult>

<Success> true</Success>

<message> Dimension Security Updated Successfully</message>

</Update_Dimension_Security_ByUserResult>

Invalid call – Invalid dimension member code

<Update_Dimension_Security_ByUserResult>

<Code> 20</Code>

<Success> false</Success>

<message> Invalid dimension member code.</message>

</Update_Dimension_Security_ByUserResult>

`

Invalid Calls
•userLogin which does not exist in the tenant
•dimensionName for dimension security is not enabled in the application/dimensionName is not available in the system
•dimensionMemberCode is not available in the tenant


### Get Dimension Security by Segment
An Admin user can update dimension access security for a user along with all members of the parent or rollup dimension.  To see a list of all segment members for a dimension that a user has access to, use the <SegmentMemberSecurityInfo> call.
**Format of API String**	  
List<SegmentMemberSecurityInfo> GetDimensionSecurityBySegment(int startIndex = 0, out hasMore, string dimensionName,Model model,string loginName, string password, string tenantCode)
The API will return 5000 rows at a time. When **More**	  is true, there are more combinations in the system.  The number of rows returned (which is currently 5000) is configurable and can be changed by contacting Support.
Data that needs to be supplied to the API:
•loginName, password and tenantCode – user credentials to authenticate the API connection
**Output**	  
•Segment ID  – in string format
•Index start value
•List of values (below)
[Copy](javascript:void(0);) ```

`<GetDimensionSecurityBySegmentResult> 

<SegmentMemberSecurityInfo> 

<SegmentMemberCode> Internet</SegmentMemberCode> 

<UserLogin> klakshmi@planful.com</UserLogin> 

</SegmentMemberSecurityInfo> 

<SegmentMemberSecurityInfo> 

<SegmentMemberCode> Account1</SegmentMemberCode> 

<UserLogin> planfuluser@gmail.com</UserLogin> 

</SegmentMemberSecurityInfo> 

</GetDimensionSecurityBySegmentResult> 

<hasMore> true</hasMore> 

</GetDimensionSecurityBySegmentResponse> `

Sample Request and Response
Sample request and response calls for the Get_Dimension_Security_By_Segment API is provided below. In the request, dimension security is applied at the Account parent level. In the response, all members of the Account rollup are provided starting with member code 1010 .
[Copy](javascript:void(0);) Request


`<soapenv:Envelope xmlns: soapenv  ="http://schemas.xmlsoap.org/soap/envelope/"  

xmlns: ns  ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19"  > 

<soapenv:Header/> 

<soapenv:Body> 

<ns:Get_Dimension_Security_By_Segment> 

<!--Optional:--> 

<ns:DimensionCode> Account</ns:DimensionCode> 

<ns:Model> Financial</ns:Model> 

<ns:hasMore> true</ns:hasMore> 

<ns:startIndex> 200</ns:startIndex> 

<!--Optional:--> 

<ns:LoginName> skogara@planful.com</ns:LoginName> 

<!--Optional:--> 

<ns:Password> Subbu123!</ns:Password> 

<!--Optional:--> 

<ns:TenantCode> POV</ns:TenantCode> 

</ns:Get_Dimension_Security_By_Segment> 

</soapenv:Body> 

</soapenv:Envelope> `

[Copy](javascript:void(0);) Response


`<soap:Envelope xmlns: soap  ="http://schemas.xmlsoap.org/soap/envelope/"  

xmlns: xsi  ="http://www.w3.org/2001/XMLSchema-instance"  

xmlns: xsd  ="http://www.w3.org/2001/XMLSchema"  > 

<soap:Body> 

<Get_Dimension_Security_By_SegmentResponse 

xmlns  ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19"  > 

<Get_Dimension_Security_By_SegmentResult> 

<SegmentMemberSecurityInfo> 

<UserLogin> skogara@planful.com</UserLogin> 

<SegmentMemberCode> 1010</SegmentMemberCode> 

</SegmentMemberSecurityInfo> 

<SegmentMemberSecurityInfo> 

<UserLogin> skogara@planful.com</UserLogin> 

<SegmentMemberCode> 1020</SegmentMemberCode> 

</SegmentMemberSecurityInfo> 

<SegmentMemberSecurityInfo> 

<UserLogin> skogara@planful.com</UserLogin> 

<SegmentMemberCode> 1030</SegmentMemberCode> 

</SegmentMemberSecurityInfo> 

<SegmentMemberSecurityInfo> 

<UserLogin> skogara@planful.com</UserLogin> 

<SegmentMemberCode> 1040</SegmentMemberCode> 

</SegmentMemberSecurityInfo> 

<SegmentMemberSecurityInfo> 

<UserLogin> skogara@planful.com</UserLogin> 

<SegmentMemberCode> 1050</SegmentMemberCode> 

</SegmentMemberSecurityInfo> 

<SegmentMemberSecurityInfo> 

<UserLogin> skogara@planful.com</UserLogin> 

<SegmentMemberCode> 1053</SegmentMemberCode> 

</SegmentMemberSecurityInfo> 

<SegmentMemberSecurityInfo> 

<UserLogin> skogara@planful.com</UserLogin> 

<SegmentMemberCode> 1210</SegmentMemberCode> 

</SegmentMemberSecurityInfo> 

<SegmentMemberSecurityInfo> 

</Get_Dimension_Security_By_SegmentResult> 

<hasMore> false</hasMore> 

</Get_Dimension_Security_By_SegmentResponse> 

</soap:Body> 

</soap:Envelope> `

Selective Property in the Get_Dimension_Security_By_Segment APl
You can export only selected members using this property. The sample code below shows how selective members are exported in the Dimension Security report.
[Copy](javascript:void(0);) Request


`<soapenv:Envelope xmlns: soapenv  ="http://schemas.xmlsoap.org/soap/envelope/ [schemas.xmlsoap.org]"  

xmlns: ns  ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19"  > 

<soapenv:Header/> 

<soapenv:Body> 

<ns:Get_Dimension_Security_By_Segment> 

<!--Optional:--> 

<ns:DimensionCode> Company</ns:DimensionCode> 

<ns:Model> Financial</ns:Model> 

<ns:hasMore> true</ns:hasMore> 

<ns:startIndex> 0</ns:startIndex> 

<!--Optional:--> 

<ns:LoginName> skogara@planful.com</ns:LoginName> 

<!--Optional:--> 

<ns:Password> Subbu123!</ns:Password> 

<!--Optional:--> 

<ns:TenantCode> DrillthroughHFJuly27</ns:TenantCode> 

<ns:Export> Selective</ns:Export> 

</ns:Get_Dimension_Security_By_Segment> 

</soapenv:Body> 

</soapenv:Envelope> `

[Copy](javascript:void(0);) Response


`<soap:Envelope xmlns: soap  ="http://schemas.xmlsoap.org/soap/envelope/ [schemas.xmlsoap.org]"  

xmlns: xsi  ="http://www.w3.org/2001/XMLSchema-instance [w3.org]"  

xmlns: xsd  ="http://www.w3.org/2001/XMLSchema [w3.org]"  > 

<soap:Body> 

<Get_Dimension_Security_By_SegmentResponse 

xmlns  ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19"  > 

<Get_Dimension_Security_By_SegmentResult> 

<SegmentMemberSecurityInfo> 

<UserLogin> skogara@planful.com</UserLogin> 

<SegmentMemberCode> HYD</SegmentMemberCode> 

</SegmentMemberSecurityInfo> 

<SegmentMemberSecurityInfo> 

<UserLogin> zzuser1@ha.com</UserLogin> 

<SegmentMemberCode> Company Main</SegmentMemberCode> 

</SegmentMemberSecurityInfo> 

</Get_Dimension_Security_By_SegmentResult> 

<hasMore> false</hasMore> 

</Get_Dimension_Security_By_SegmentResponse> 

</soap:Body> 

</soap:Envelope> `

Dimension Processing
After the dimension security update API call is complete, the dimension processing (ProcessDimension) call needs to take place to update the reporting cube. Processing of dimensions will update the cube with dimension security data for all dimensions.
Format of API String
void ProcessDimension(string dimensionCode, Model model,string loginName, string password, string tenantCode)

MapEntity API

Usage
Use this API to map templates to entities.
Sample Request
In this example an Workforce template is mapped to two entities "1000-USD" and "Test-New".
[Copy](javascript:void(0);) ```

`<soapenv:Envelope xmlns: soapenv ="http://schemas.xmlsoap.org/soap/envelope/"

xmlns: ns ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19" >

<soapenv:Header/>

<soapenv:Body>

<ns:MapEntity>

<ns:TenantCode> WFPOnetimeGF</ns:TenantCode>

<ns:LoginName> schamarthi@planful.com</ns:LoginName>

<ns:Password> Planful@1234</ns:Password>

<ns:ScenarioCode> Budget 2017</ns:ScenarioCode>

<ns:templateCode> HR</ns:templateCode>

<ns:budgetEntities>

<!--Zero or more repetitions:-->

<ns:string> Test-New</ns:string>

<ns:string> 1000-USD</ns:string>

</ns:budgetEntities>

</ns:MapEntity>

</soapenv:Body>

</soapenv:Envelope> `

To avoid duplicates, if you try to map the same entities again, the following message is displayed.
[Copy](javascript:void(0);) ```

`<MapEntityResult> 

<Status> Success</Status> 

<MapStatus> 

<string> 1000-USD-ALREADY MAPPED</string> 

</MapStatus) 

</MapEntityResult> `

When an invalid entity is mapped, the following message is displayed.
[Copy](javascript:void(0);) ```

`<MapEntityResult>

<Status> Fail</Status>

<MapStatus>

<string> srintnata-INVALID</string>

</MapStatus)

</MapEntityResult> `

**Sample Response with Invalid Entity**	  
[Copy](javascript:void(0);) ```

`<soap:Envelope xmlns: soap  ="http://schemas.xmlsoap.org/soap/envelope/"  

xmlns: xsi  ="http://www.w3.org/2001/XMLSchema-instance"  

xmlns: xsd  ="http://www.w3.org/2001/XMLSchema"  > 

<soap:Body> 

<MapEntityResponse 

xmlns  ="http://www.Planful.com/API/SOAP/StateFree/Common/2009/03/19"  > 

<MapEntityResult> 

<Status> Fail</Status> 

<MapStatus> 

<string> asdfasdfasdfa-INVALID</string> 

</MapStatus> 

</MapEntityResult> 

</MapEntityResponse> 

</soap:Body> 

</soap:Envelope> 

`

Refresh Preloaded Data API

The Refresh Preloaded Data API updates the Preload Budget Scenario with the data from the reference Scenario or the CC data based on the Scenario setup.
You have to generate the APIKey first to use the API. You can pass the following information to generate the APIKey.
Method
POST
Syntax
<Provide the Application Url>/auth/login
Sample Body
[Copy](javascript:void(0);) ```

`{

“Username”: “xyz@planful.com”,

“Password”: “Ayz@123”,

“TenantCode”: “Apr2021Demo”,

“ClientType”: “ExcelAddin”

}`

When you run this, an authorization key is generated. Use this key as the APIKey to refresh the preload budget scenario.
Do the following to refresh the preload budget scenario:
**Method**	  
POST
**Syntax**	  
<Provide the Application Url>/Scenario/RefreshPreloadedData?scenarioCode=<provide the scenario code>
**Note:**	    You can find the Source Code from the Scenario Setup screen.
**Headers**	  
Key : APIKey
Value : Authorization Key
**Response**	  
[Copy](javascript:void(0);) ```

`{

“status”: “Success”,

“message”: “Refresh Preload Budget data completed successfully”

}

`

The API refreshes the data and displays an appropriate successful message.

Best Practices and Tips

Authentication - Every API requires a loginName, password and tenantCod. The API results in an UnAuthorized exception if the user is not valid.
Audit Log - The application audit log displays each action performed based upon user.
Error Handling - Unlike DLRs, errors or exceptions thrown by the APIs need to be captured and necessary action taken. For example, if a user could not be created, It could be because the server was busy (overloaded) or because another user with the same user ID exists in the application.
When the API returns an error code, take action to handle the error. For example, the server was busy so you invoke Retry logic. Or, perhaps the failure occurred due to a duplicate user ID. You can capture details in the error in failure log. Details in the error failure log can be emailed.
An authentication failure may occur when there is an invalid username/password. If this is the case, a SoapException is produced by the API. A sample soap exception is provided below:
[Copy](javascript:void(0);) ```

`<soap:Fault>

<faultcode> soap:Server</faultcode>

<faultstring>

System.Web.Services.Protocols.SoapException: Invalid username or password.

</faultstring>

<faultactor> https://qa.planful.com/PlanfulAPI/</faultactor>

</soap:Fault> `

**Data Validation Errors**	  - Occur when there is a failure to validate data.  This means that the success value in the return object is set to false and a related error message is included in it. A sample response returned by the CreateUser API where there is invalid user login is provided below:
[Copy](javascript:void(0);) ```

`<CreateNewUserResult> 

<Code> 11</Code> 

<Success> false</Success> 

<message> Login must be a valid email address. Only alphanumeric characters are allowed.</message> 

</CreateNewUserResult> 

`

If the user already exists in the tenant, the following occurs:
[Copy](javascript:void(0);) ```

`<CreateNewUserResult>

<Code> 5</Code>

<Success> false</Success>

<message> User already exists in current tenant.</message>

</CreateNewUserResult> `

When a user is created successfully, the following occurs:
[Copy](javascript:void(0);) ```

`<CreateNewUserResult> 

<Success> true</Success> 

<message> User Created Succesfully.</message> 

</CreateNewUserResult> `

Server Level Exceptions - Occur when the server is busy or experiencing other issues. In this case the client process needs to be retried three times before exiting the process.
Authentication and Authorization - This API requires a valid Planful user ID and password for authentication.

  • Unique segment codes are needed. The dimension security API will not function correctly when there are duplicate segment codes. Only the first code found will be updated and the behavior cannot be predicted.
  • All segments need to have codes updated. For instance, the Planful application creates root nodes without the code and only the name. The Services team needs to ensure that codes are updated for all nodes.
  • After the dimension security API completes, Boomi needs to call the Process Dimension API as a task.
  • Ensure that the reporting roles are alpha numeric and not created with numeric codes.
  • Ensure that the user type (Native/SSO) field is not loaded with numeric values (this is a bug which will be fixed soon).

Enumerations

Enumerations are a group of named constants. Enumerations are built for the Host API and used during data import / export operations. Use enumerations to restrict the possible values of the web method argument. For example, FieldOperator contains the list of filtering patterns supported by the Host API. The following table provides a list of enumerations built for the Host API:

 

EnumerationMembers
AccountGroupAsset, Equity, Income, Liability, Statistical
AccountTypeBalance, Flow

ActiveStatus

Active, Inactive
Amount TypeOpening Balance, MTD, QTD, YTD
CreditDebitCredit, Debit
FieldOperatorContains, EndsWith, Equals, Greater, GreaterEq, Less, LessEq, NotEquals, StartsWith
GLDataFieldAll, Scenario, Segment1, Segment2, Segment3, Segment4, Segment5, Segment6, Segment7, Segment8, Reporting, FiscalYear, FiscalPeriod
MemberTypeConsolMember, CalcMember,LeafMember
NormalDataInputYTD, MTD
Segment1FieldAll, Code, Name, MemberType, RollupOperator, ActiveStatus, AccountGroup, AccountType, CreditDebit, NormalDataInput, CurrencyType,Variance
Segment2FieldAll, Code, Name, MemberType, RollupOperator, ActiveStatus, Currency
SegmentFieldAll, Code, Name, MemberType, RollupOperator, ActiveStatus
VariancePositive, Negative
VisibilityVisible, NotVisible

Was this article helpful?