Md Asim Khan
ServiceNow Employee
Options
- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
an hour ago
This article documents the key system properties that govern SPM/Project Workspace financial behavior. Each property controls a distinct aspect of how costs, budgets, actuals, and currencies are calculated and stored.
Core System Properties
1. Budget Allocation Model
sn_invst_pln.enable_budget_allocation_v2
| Value | Behavior |
|---|---|
| true | Investment-budget model (v2) — budget records stored in sn_invst_pln_invst_budget, supporting period breakdowns, expense/cost type dimensions, and multicurrency. Enables portfolio-level budget rollup and advanced allocation features. |
| false | Legacy project-funding model (v1) — budget stored in project_funding. Simpler allocation with no period granularity or investment-level breakdown. |
Note: This is a one-way migration flag. Once
true, existing project_funding records are not automatically migrated. Use migration utilities before switching. Check is_budget_migrated on investment records to confirm migration state.2. Budget Allocation Attribute
sn_invst_pln.budget_allocation_attribute
| Value | Behavior |
|---|---|
| expense_type | Budget, cost plans, and breakdown records are dimensioned by expense_type (opex/capex). Aggregation and reporting group financial data along the opex/capex axis. |
| cost_type | Budget and cost plans use cost_type (labor, hardware, software, etc.) as the primary financial dimension. Breakdowns aggregate along cost type categories. |
Functional impact: This setting determines which field is populated and displayed in cost plan breakdowns and investment financials grids. Changing this value mid-lifecycle without data migration will cause breakdowns to become misaligned.
3. Cost Rollup Behavior
com.snc.project.rollup.cost
| Value | Behavior |
|---|---|
| true | When financials change on a project task, a business rule triggers recalculation on the parent cost plan. The top-level project reflects the sum of all child task costs and benefits. |
| false | Each task maintains an independent cost plan. Updates to child tasks do not propagate to the parent. Top project financials only reflect records directly entered against it. |
Functional impact: With rollup enabled, cost plan edits trigger a cascading recalculation chain through the project hierarchy. In large projects with deep task trees this can have performance implications. With rollup disabled, project-level financial reporting requires manual consolidation or reporting queries that aggregate across tasks.
4. Actuals Expense Line Processing
glide.cost_mgmt.process_task_top_task
| Value | Behavior |
|---|---|
| true | When an expense line (actual cost) is created on a task, the system also creates a corresponding expense line on the top-level project. Both task and project carry their own actuals records. |
| false | Expense lines are created only on the task they are directly associated with. Top-level project actuals reflect only lines entered directly against it, not rolled up from tasks. |
Functional impact: When
true, querying actuals at the project level gives an aggregated view without needing to traverse child tasks. When false, top-project actuals are incomplete unless the reporting layer explicitly joins task expense lines. Timesheet-driven actuals, manual expense entries, and integration-fed actuals are all affected.5. Demand Currency Setup
com.snc.ppm_multicurrency.demand_currency_setup
| Value | Behavior |
|---|---|
| follow_functional_currency | Demand records inherit the functional currency of their associated business unit or cost center. Ensures financial reporting aligns with the organizational unit's accounting currency. When the demand converts to a project, the project adopts the same currency. |
| drive_project_currency | The currency explicitly set on the demand record drives the currency of the resulting project at conversion time. Provides consistency between demand financials and post-conversion project financials, regardless of the cost center's functional currency. |
| flexi_option | Each demand record can have its own currency selected independently. Supports mixed-currency portfolios and cross-regional demand pipelines where a single cost center may manage demands in multiple currencies. |
Functional impact: This setting affects currency stamping at demand creation and at demand-to-project conversion. Misalignment between demand and project currency can cause multicurrency drift — use
InvestmentMultiCurrencyMigrationUtil for remediation of existing records.Additional Properties
| Property | Description |
|---|---|
com.snc.project.multicurrency.rollup_if_different |
Controls whether cost rollup from child tasks to parent project is allowed when the two records carry different currencies. When false, rollup is skipped entirely if currencies differ, preventing implicit conversion errors. When true, the platform converts using the active FX rate before rolling up. |
com.snc.resource_management.use_budget_reference_rates |
Determines which FX rate source is used when converting resource costs across currencies. When true, uses itfm_fx_rate (budget reference rates, typically locked at fiscal year start). When false, uses platform fx_rate (live/updated rates). Budget reference rates give stable, audit-consistent calculations; live rates introduce variance over time. |
sn_pw.enable_resource_planning |
Enables the resource assignment creation flow within Project Workspace (newer UX). When false, resource assignments must be created through legacy project forms. Affects whether users can allocate resources directly from the PWS timeline view. |
sn_plng_att_core.default.expense_type |
Sets the default expense_type (opex or capex) automatically stamped onto new projects and tasks at creation time when no value is explicitly provided. Ensures financial records are never created without an expense type dimension, which is required for breakdown aggregation. |
sn_invst_pln.enable_benefit_plan_in_new_financials |
Controls visibility of the benefit plan section within the new Investment Planning financials UI. When false, benefit plans are hidden from the new UI and are only accessible via legacy forms. Does not affect the underlying data — benefit plan records are not deleted. |
sn_invst_pln.baseline_prefix |
String prepended to the auto-generated name when creating investment plan baselines (e.g., prefix BL produces BL 1, BL 2). Used to enforce consistent naming conventions across the portfolio. Has no effect if baselines are named manually. |
sn_plng_att_core.labor_costtype_sysid_mapping |
Comma-separated list of cost_type sys_ids that the planning attribute pipeline classifies as labor. Records with a matching cost_type are counted toward labor cost totals in planning attribute aggregations and reporting. Any cost_type not in this list is treated as non-labor. |
sn_invst_pln.use_latin_numerals_for_financials_grid |
Forces the Investment Planning financials grid to render standard Latin digits (0–9) regardless of the user's locale. Relevant for locales such as Saudi Arabic (SAR) where the browser may otherwise render Arabic-Indic numerals, which can cause client-side parsing failures in the grid's numeric input fields. |
com.snc.time_card.default_rate |
Fallback hourly rate (default $50) applied when no matching labor rate card is found for a resource during actual cost calculation. Ensures timesheet-driven expense lines are always created with a non-zero rate even when rate card coverage is incomplete. |
com.snc.allowed_tasks_for_cost_plan_on_expense_line |
Comma-separated list of task table names (e.g., pm_project, rm_epic). When an expense line is created for a record in one of these tables, the system automatically creates or updates a corresponding system-generated cost plan entry. Tables not in this list do not trigger cost plan creation from expense lines. |
com.snc.resource_management.first_day_of_week |
Sets the week boundary for Resource Management time bucketing. 1 = Monday, 7 = Sunday. Affects how planned and actual hours are distributed when viewed in weekly grid views and how time periods are calculated in resource utilization reports. |