Forum Discussion

ChrisBriscoe's avatar
ChrisBriscoe
New Contributor III
1 day ago

Entity-Specific Historical FX Rates for Acquisitions — A More Accurate IFRS Translation

Stop Fighting Your Equity Translation — Let HSR Do the Heavy Lifting

A 5-minute read for anyone who's ever stared at a CTA movement and whispered: “Where did that come from?”

_____________________________________________________________________________

The consolidation problem we all know

It’s day 4 of close.

Consolidation runs clean. FX looks fine. Then someone opens the equity rollforward.

“Why is acquired share capital moving again?”

The entity was acquired years ago at a historical acquisition rate, but the system is retranslating equity at current closing FX every month.

CTA absorbs the movement.
Auditors ask questions.
Finance posts manual journals.
Everyone loses time.

This is the classic Historical Spot Rate (HSR) challenge.

The design principle

The goal was simple:

Freeze selected equity accounts at acquisition FX rates while keeping the standard OneStream Software translation engine intact.

No new cube.
No custom dimensions.
No complicated override framework.

Just:

  • metadata tagging,
  • controlled FX logic,
  • and safe fallback behaviour.

 

The HSR pattern

Component

Design

Entity activation

Entity.Text5 = "HSR_Entity"

Equity tagging

Account.Text15 = "HSR_Accounts"

Historic rates

Stored in dedicated HSR rate technical accounts

Translation logic

Finance Business Rule

Audit trail

Dedicated FX movement flow

HSR = Historical Spot Rate.

The rule only activates when BOTH:

  • The entity is tagged, and
  • The account is tagged.

This creates a simple but effective control framework.

The historic rate storage design should remain flexible:

  • use technical accounts,
  • use whatever Text property the project governance model agrees on,
  • and confirm all translation account tagging requirements with the Group Reporting Manager before deployment.

What does the rule actually do?

  1. Check if Entity is HSR_Entity
  2. Check if Account is HSR_Accounts
  3. Retrieve stored historic rate
  4. Calculate FX adjustment
  5. Post adjustment to MVMT_TRANS_FX
  6. If anything fails → revert to standard FX

That last line is important.

The design intentionally prioritises:

  • consolidation stability,
  • auditability,
  • and safe fallback behaviour.

If metadata is incomplete or a rate is missing, the application simply reverts to standard FX translation logic.

No broken consolidations.
No blocked close process.

 Why did this work well in practice?

The biggest advantage was operational simplicity.

Adding a newly acquired entity became:

  1. Load historic rate
  2. Apply metadata tags
  3. Run consolidation

No code changes required.

The approach also kept:

  • CTA cleaner,
  • Equity movements are more stable,
  • And audit support is significantly easier.

The real challenge: governance

The code itself was straightforward.

The harder part was operational discipline:

  • Maintaining 1:1 entity-to-rate mapping
  • Controlling metadata tagging
  • Defining fallback expectations
  • Building reconciliation reporting
  • Testing CTA behaviour thoroughly

In my experience, most FX translation problems are not technical problems.

They are governance problems.

Community question

I’d be interested to hear how other certified OneStream Software architects and administrators are handling Historical Spot Rate scenarios.

Particularly:

  • Are you using metadata-driven activation?
  • How are you storing historic rates?
  • Have you handled HSR entirely through translation override logic?
  • Any alternative designs that further reduce maintenance?
  • How are you handling CTA transparency and audit reporting?

Always interested in seeing cleaner or more efficient approaches from the community.

What should step 5 look like?

 

No RepliesBe the first to reply