Expense management approval workflow gets stuck at manager level with multi-currency entries

We’re experiencing a critical issue where expense approval workflows halt at the manager approval level when expense reports contain multi-currency entries. The workflow progresses normally for single-currency expense reports but consistently stalls when employees submit expenses with transactions in multiple currencies.

The workflow error log shows:


Workflow execution suspended
TrvExpTable.WorkflowState = 'Submitted'
Error: Currency conversion failed at approval step
at TrvExpenseApproval.validateCurrency(line 287)

Our employees frequently travel internationally and submit expense reports with USD, EUR, and GBP transactions. The currency conversion rules appear to be configured correctly, and exchange rate configuration is updated daily via automated import. However, the workflow error handling doesn’t provide clear guidance on which specific currency pair is causing the failure. We’ve attempted workflow recovery multiple times, but the reports remain stuck in ‘Submitted’ status. This is blocking reimbursement processing for over 40 expense reports totaling $125,000. The multi-currency setup worked fine in our on-premises environment, but seems problematic after cloud migration.

Let me provide a comprehensive solution addressing all aspects of your multi-currency workflow issue:

1. Currency Conversion Rules Configuration Verify and correct your currency conversion setup:

  • Navigate to General ledger > Currencies > Exchange rate types
  • Ensure you have a dedicated rate type for expenses (e.g., ‘Expense’ or ‘Daily’)
  • Verify this rate type is specified in Expense management parameters: Expense management > Setup > General > Expense management parameters > Currency conversion
  • Check that the rate type has rates loaded for ALL currency pair combinations, not just direct pairs
  • For indirect conversions (e.g., GBP to EUR), ensure you have a triangulation currency configured (typically USD)

2. Exchange Rate Configuration Completeness Address missing rate scenarios:


// Required rate pairs for your scenario:
USD/EUR, EUR/USD  // Direct pairs
USD/GBP, GBP/USD  // Direct pairs
EUR/GBP, GBP/EUR  // Direct pairs

Validate rates exist for:

  • Transaction dates (when expenses occurred)
  • Submission dates (when reports submitted)
  • Approval dates (current date for pending approvals)
  • All approver accounting currencies

Use this query to identify gaps:

SELECT DISTINCT
    e.CurrencyCode,
    e.TransDate,
    a.AccountingCurrency
FROM TrvExpTrans e
JOIN TrvExpTable t ON e.ExpTableId = t.RecId
JOIN UserInfo u ON t.WorkflowApprover = u.Id
JOIN CompanyInfo a ON u.Company = a.DataAreaId
WHERE NOT EXISTS (
    SELECT 1 FROM ExchangeRate r
    WHERE r.FromCurrency = e.CurrencyCode
    AND r.ToCurrency = a.AccountingCurrency
)

3. Workflow Error Handling Enhancement Improve error diagnostics and recovery:

  • Modify your workflow configuration to capture detailed error information
  • Go to Organization administration > Workflows > Expense report workflows
  • Edit your workflow and select the approval element
  • In Properties > Error handling, enable “Log detailed error information”
  • Configure error notification to send emails with specific currency pair failures
  • Add custom workflow event handler to log currency conversion attempts

4. Multi-Currency Setup Validation Verify approver currency configurations:

  • Check each approver’s default legal entity: Organization administration > Users > Users
  • Note the Company field and corresponding accounting currency
  • Ensure exchange rates exist from all expense currencies to each approver’s accounting currency
  • Test workflow with a sample expense report containing all currency combinations
  • Verify rates are accessible during workflow execution (not just in UI)

5. Workflow Recovery Process Proper steps to recover stuck workflows:

First, fix the underlying issue:

  • Identify missing exchange rates using the query above
  • Import or manually enter missing rates for all required date ranges
  • Verify rates are active and within valid date ranges

Then recover workflows:

  • Navigate to Expense management > My expenses > Expense reports
  • Select stuck report and go to Workflow > View history
  • Click “Recall” to pull back the report
  • Verify exchange rates are now available
  • Resubmit the report
  • Monitor workflow execution in real-time via workflow history

For bulk recovery of 40+ reports:

  • Use workflow batch recovery: Organization administration > Workflows > Workflow history
  • Filter by status = ‘Error’ and workflow type = ‘Expense report’
  • Select all affected workflows and click “Recover”
  • System will attempt to resume from failed step

6. Exchange Rate Automation Improvements Prevent future issues:

  • Enhance your daily exchange rate import to validate completeness
  • Add validation step checking for all active currency pairs
  • Implement alerting when rates are missing for any pair
  • Consider using a rate provider service that guarantees all pair coverage
  • Set up a scheduled batch job to pre-cache rates for common pairs
  • Configure rate fallback rules: if today’s rate unavailable, use previous business day

7. Cloud-Specific Considerations Optimize for cloud workflow execution:

  • Enable workflow caching: System administration > Workflow > Workflow infrastructure configuration
  • Set appropriate timeout values for currency conversion steps (minimum 30 seconds)
  • Configure retry logic: In workflow properties, set retry attempts = 3, retry interval = 5 minutes
  • This handles transient cloud service connectivity issues
  • Implement workflow monitoring dashboard using Power BI to track stuck workflows in real-time

8. Testing and Validation Before deploying to production:

  • Create test expense reports with all currency combinations
  • Submit through the workflow with approvers in different legal entities
  • Verify successful conversion and approval at each step
  • Test recovery process on a sample stuck workflow
  • Validate that error messages now provide actionable information

Immediate Action Plan for Current Stuck Reports:

  1. Run the SQL query to identify missing exchange rate pairs
  2. Import/enter missing rates for all identified gaps
  3. Use bulk workflow recovery to process all 40 stuck reports
  4. Monitor recovery progress and address any remaining failures individually
  5. Once cleared, implement preventive measures to avoid recurrence

This comprehensive approach will resolve your current workflow blockage and prevent similar issues in the future. The key is ensuring complete exchange rate coverage for all currency pair combinations that might be needed during workflow execution, including indirect conversions through approver accounting currencies.

Multi-currency workflow issues in cloud environments often stem from timing problems with exchange rate lookups. The workflow execution in cloud happens asynchronously, and if exchange rates aren’t cached properly, the validation step can fail. Check your exchange rate table (ExchangeRate) to ensure rates exist for all currency pairs on the transaction dates. Also verify that your workflow error handling is configured to provide detailed error messages rather than generic failures.

The cloud environment handles workflow execution differently than on-premises, particularly around database locking and transaction isolation. Your on-premises setup might have allowed the workflow to complete even with temporary exchange rate lookup failures, but cloud enforces stricter validation. Consider implementing retry logic in your workflow configuration with exponential backoff. This gives the system multiple chances to retrieve exchange rates if there’s a transient connection issue to the rate service.