It is important to setup the Financial Plan in OnePlan correctly before you start importing data from your source file. It is equally import to ensure that all required data fields are provided in the source file in the format expected.
Best Practices
- The first column in your CSV should be the Plan External Id field.
- Use global cost categories if possible as custom cost categories exist only on the plan level and makes comparing financial data more difficult.
- Use detail rows only if you need the extra detail. If you use detail rows, remember that they roll up. You will not be able to set a different value on the parent cost category.
- The default time phasing period is monthly. Use the weekly option only if it is absolutely necessary.
- When you are using monthly time phasing, use the first of the month to store your data.
- As the integration updates data, pass in 0 if you want to "remove" existing cost.
- Always provide consistent External Ids to avoid duplicate records
- Use Cost Type Name unless strict ID matching is required
- Include Cost Name when creating new categories
- Validate parent-child relationships before importing
- Ensure custom field names match exactly
- Test with a small dataset before full import
Financial Plan Settings
Setting Up Plan External Id
In order to identify a plan, there must be a unique ID configured in OnePlan. If you don't have this setup already, please follow these steps:
-
Create custom plan field if you don't have one already for a unique ID:
- In OnePlan, go to an Area's List view (e.g. Enterprise Portfolios).
- Click Columns.
- Click Add Field > Enterprise Field.
- Name the field (e.g "Plan External Id").
- Set the field type to Text.
- Click Save.
-
Select Custom Field for Financial Import
- In OnePlan go to Settings (gear icon).
- Go to Financial Plan > Import.
- Use the External Id Field dropdown to select your new custom field.
- The selection saves automatically.
Setting up Cost External Ids
Cost external IDs are used to specify the cost category in the source file.
To configure external IDs for your global cost categories, please do the following:
- Navigate to the Admin pages.
- Access Financial Plan section.
- Select Cost Categories.
- Find your cost category and click on the edit (paper and pencil) icon.
- Enter a unique External Id and Save.
Please note that when adding new cost categories via the UI, there is no automatically generated External Ids, one must be manually entered. Possible External Ids can be letters, numbers, or a mix of the two.
Cost Type Name vs Cost Type Id
The integration uses cost types (such as Budget, Forecast, and Actuals) to determine where financial values are written.
However, it’s important to understand that Financial Plan Cost Types and Resource Cost Types are stored in the same underlying table.
Why This Matters
Because these cost types share the same table:
- It is possible for a Resource Cost Type and a Financial Plan Cost Type to have the same name
- When this happens, using Cost Type Name can result in ambiguity
- The integration may not reliably determine which cost type to use
When to Use Cost Type Name
Use Cost Type Name when:
- You are confident there are no duplicate names across Resource and Financial Cost Types
- You want a more readable and user-friendly configuration
When to Use Cost Type Id (Recommended in Complex Scenarios)
Use Cost Type Id when:
- There are duplicate or similar cost type names in your environment
- You are working with both Resource Planner and Financial Planner data
- You want to ensure the value is written to the exact correct cost type
Using Cost Type Id removes any ambiguity and guarantees that data is written to the intended destination.
Recommendation: If there is any overlap between Resource and Financial Plan Cost Type names in your environment, it is strongly recommended to use Cost Type Id to avoid unexpected behavior.
Custom Cost Categories
If you have a wide range of cost categories and some of them apply to only specific plans, you can use custom cost categories that exist only for individual plans. You have to enable this feature in order to use it.
Please follow these steps to enable custom cost categories:
- In the OnePlan admin pages, navigate to Financial Plan, and click on Advanced.
- Check the box labelled Allow Plan Level Cost Categories.
If you don't want to use custom cost categories, please check the Do not create custom cost categories for plans checkbox during the setup.
If you don't use custom cost categories and your source file includes cost categories that are not in OnePlan already, then those records will be skipped as they cannot be imported.
Creating New Custom Cost Categories
If a row contains a Cost External Id that does not match an existing cost category, the integration will create a new cost category (if enabled in the configuration).
When Cost Name is NOT Provided
If Cost Name is not included in the import:
- A new cost category is created, however the value residing within the CSV field Cost External Id is used as the category name in the Financial Planner.
This behavior works well when the Cost External Id is the same as the desired display name (Cost Category). However, in many cases, it may not be user friendly or suitable as a display name.
When Cost Name IS Provided
If Cost Name is included:
- A new cost category is created
- The cost Name is used as the display name (Cost Category) in the Financial Planner
- The Cost External Id is still used as the unique identifier behind the scenes.
Best Practice
- Always include Cost Name when creating new cost categories unless:
- Your Cost External Id values are already user-friendly and intended for display
Creating a Custom Cost Category Under an Existing Category
The Parent Cost External Id is only used when creating new custom cost category that should be placed (as a child cost category) under an existing cost category.
Behavior
If the Cost External Id already exists:
- The integration updates the existing cost category
If the Cost External Id does NOT exist (a new category is being created for that plan):
- If Parent Cost External Id is provided:
- The new cost category is created as a child of that specified parent.
- If Parent Cost External Id is NOT provided:
- The new cost category is created at the top (root) level
Best Practice
Use Parent Cost External Id only when:
- Creating new (custom) cost categories
- You want to control where they appear in the hierarchy
Do no rely on this field when updating existing categories.
Custom Fields
For the integration to write to a custom field in the financial planner, the custom field must first exist in OnePlan. To create custom fields for the financial planner:
- Navigate to the OnePlan Admin page, select the Financial Plan section.
- Expand the Fields section.
- Click on Custom Fields +.
- Provide a Name and Field Type.
- Click ADD.
Writing to Custom Fields
Requirements
- The custom field must already exist in OnePlan
- The column name in your file must exactly match the field name
- Choice fields can use the front-end option name and does not require a GUID Id.
Behavior
- Custom fields are not mapped manually in the integration
- Matching is done automatically based on column name
Detail Rows
Detail rows allow more granular financial tracking under a cost category.
Required Fields
To use detail rows, include:
- Use Detail Row = Yes
- Detail Row External Id
Behavior
- If the detail row exists → it is updated
- If it does not exist → it is created
Important Notes
- Detail rows roll up to their parent cost category
- Values at the detail row level contribute to totals
- You cannot directly override parent totals when using detail rows.
- You should not add detail rows on top of custom cost categories, one or the other should be used, not both.
- Detail rows do not have a cost name associated to them. The title/name will remain blank in the Financial Planner.
Source Data
How the Import Works
For each row in the source file, the integration processes data in the following order:
- Identify the target plan using Plan External Id
- Identify the cost category using Cost External Id
- Determine whether to:
- Update an existing cost category
- Create a new cost category
- Write to a detail row
- Apply the cost value for the specified Cost Date and Cost Type
Understanding this flow is key to correctly structuring your data.
Required & Optional Fields
Mandatory Fields (Always Required)
The Following fields must be present in every import:
| Field | Purpose |
| Plan External Id | Identifies the plan |
| Cost External Id | Unique identifier for the cost category |
| Cost Type Name OR Cost Type Id | Determines where the value is written (e.g. Budget, Forecast, Actuals) |
| Cost Date | The date for the financial value. Format of 2026-05-01T00:00:01 (YYYY-MM-DDTHH:MM:SS). |
| Cost Value | The numeric value being imported |
Conditionally Required Fields
These fields are required depending on the scenario:
| Field | Purpose |
| Cost Name | Helpful (not required) when creating new cost categories. Specifically when the Cost External Id should be different than the Cost Name that is listed in the Financial Plan |
| Parent Cost External Id | This field will provide guidance to determine the placement or insertion of a cost category within your financial planner if it does not currently exist. If no parent cost category is specified, the system will create the cost category at the root level. |
| Detail Row External ID | Used to find the detail row, this field is optional and only required if Use Detail Row is set to Yes for that row item. |
| Use Detail Row | This field must be named in the file exactly as shown. Indicates if the values should be added as a detail row or not. Potential values are: "Yes" or "No". Blank values are treated as No. |
Example Data
CSV File
How the data is prepared in the CSV file
| CSV Row | Intention |
| 2 | Writing to an existing Cost Category (Developer) |
| 3 | Creating a custom Cost Category (Cost Name: Pieces of Flair) beneath an existing Cost Category (Supplies), by entering a Cost External Id that does not exist globally or within this plan. Setting the Expense Type (Custom Field to CapEx). |
| 4 | Creating a Detail Row beneath a global Cost Category (Expenses) by setting the Use Detail Row value to Yes, and assigning an External Id (BBQ Cookouts) on that detail row for future imports. |
How Data Imports into OnePlan
Above is an example of how the data will appear within the Financial Planner based on the information set within the CSV.
Strategies
CostImportToFinancialPlanner
The only strategy is the CostImportToFinancialPlanner that executes the import logic. You can run this on a schedule or on demand, manually.
Mind the Gap
- This integration only import financial data into OnePlan. If you want to export financial data, use our OneAnalytics integration to do that.
- This integration is designed to import time phased data into OnePlan. If you want to import only rolled up numbers like a single "budget" per plan, then use our plan import integration.
- For all custom Cost Categories that are created by this integration, those Cost Categories are only created for the specific plan the data is being written to. This integration will not create Cost Categories at the global level.
Related to
Comments
0 comments
Article is closed for comments.