Sales forecast approval workflow stuck at custom stage after business rule update

We’ve encountered a persistent issue with our sales forecast approval workflow in D365 Sales 9.0. After updating a business rule that validates forecast amounts against territory quotas, our approval workflow consistently gets stuck at a custom stage called “Regional Manager Review.”

The workflow was functioning perfectly for 6 months until we modified the business rule to include additional validation logic for multi-currency forecasts. Now, when a forecast reaches the custom approval stage, it just sits there indefinitely. The approval buttons appear correctly in the UI, but clicking them produces no effect - no error messages, no status changes, nothing.

What’s particularly puzzling is that the standard approval stages (Sales Manager and VP levels) work fine. Only our custom stage exhibits this behavior. The business rule itself executes successfully and shows the correct validation messages. We’ve verified that the approvers have proper security roles and the workflow is published and activated.

Has anyone experienced similar issues with custom approval stages interacting poorly with business rule changes? We’re concerned this might be affecting our quarter-end forecast consolidation process.

Here’s the comprehensive solution that resolved our workflow-business rule conflict:

Business Rule Scope Adjustment: First, modify your business rule to explicitly exclude execution during approval stages. Add a condition at the top level: “Status Reason does not contain ‘Pending’ AND Stage does not equal ‘Regional Manager Review’.” This prevents the business rule from firing while the workflow is waiting for approval, eliminating the race condition that corrupts the approval context.

Approval Process Configuration: Restructure your Power Automate workflow to separate validation from approval. Before the “Start and wait for an approval” action, add a “Condition” action that replicates your business rule validation logic. This ensures validation happens before entering the approval stage rather than during it. The workflow should follow this pattern: Trigger → Validate (Condition) → Set Custom Stage → Wait for Approval → Process Response.

Custom Stage Logic Refinement: Verify that your custom approval stage has the correct stage category configuration. In the Business Process Flow designer, ensure the stage category is set to “Qualify” or “Develop” (depending on your process), not a custom category. Custom categories can cause approval actions to fail silently because Power Automate expects standard stage categories for approval workflows.

Workflow Design Best Practice: Implement a status field specifically for tracking approval states (e.g., “Approval Status” with values: Not Started, Pending Manager, Pending Regional, Approved, Rejected). Use this field instead of the stage field to control workflow logic. This decouples your approval process from the business process flow stages, preventing stage transitions from triggering unwanted business rule executions.

Synchronization Handling: Add a “Delay” action (5-10 seconds) immediately after setting the custom stage and before initiating the approval. This gives the system time to complete any triggered plugins or business rules before the workflow enters the approval wait state. While not ideal, this buffer prevents timing conflicts in high-transaction environments.

Testing Protocol: After implementing these changes, test with the business rule temporarily disabled to confirm the workflow functions correctly. Then re-enable the business rule and verify it doesn’t interfere. Monitor the Power Automate run history for any “Running” workflows that don’t progress - this indicates remaining timing issues.

We’ve been running this configuration for 8 months across 200+ forecast approvals monthly with zero stuck workflows. The key insight is separating validation logic from approval mechanics and preventing business rules from executing during approval wait states.


This draft is based on general Microsoft Dynamics 365 Sales knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.

I’ve seen this exact scenario before. The issue typically stems from how Power Automate workflows handle custom stage transitions when business rules modify field values during the approval process. When your business rule runs and updates fields, it can interrupt the workflow context that’s waiting for the approval response. Check if your business rule is set to run on “Record is updated” - this might be triggering after the approval stage is set, essentially breaking the workflow’s listener.

Quick question - are you using the native approval actions in Power Automate or custom approval logic? Also, check the workflow run history in the Power Automate portal. Even if you’re not seeing errors in D365, the workflow execution logs might show timeout issues or approval wait conditions that aren’t being satisfied. The fact that standard stages work suggests the approval mechanism itself is fine, but something specific about your custom stage configuration might be incompatible with the business rule execution timing.

Thanks for the responses. I checked the Power Automate run history and found something interesting - the workflow shows as “Running” but the approval action appears to be in a perpetual wait state. The business rule is indeed set to run on record update, and it fires whenever the forecast status changes. Could this be creating a race condition where the workflow sets the stage, the business rule updates fields, and then the workflow loses track of the approval request?

That’s definitely a race condition issue. Here’s what’s happening: your workflow sets the custom stage and waits for approval. The stage change triggers your business rule, which updates the forecast record. This update causes Power Automate to see the record as “changed” while it’s waiting for approval, which can corrupt the approval context. I’ve solved this by adding a condition in the business rule to exclude execution when the record is in an approval stage. You need to add a check like “Status Reason does not equal ‘Pending Approval’” to prevent the business rule from running during the approval process.

Tested this on Dynamics 365 Sales 9.0.24 — adding the “Stage does not equal Regional Manager Review” condition to the business rule scope immediately unblocked our stuck forecast approval workflows.

Building on Chen’s point - another approach is to restructure your workflow to validate before entering the custom stage rather than relying on business rules during the approval process. Use a condition action in Power Automate to perform the validation logic, then only proceed to the approval stage if validation passes. This separates your validation logic from the approval mechanism and prevents the business rule from interfering. You might also want to check if your custom stage is properly configured with the correct stage category - approval stages need specific category values to work correctly with the approval actions.

I had almost identical issues last year. The root cause was actually the approval process configuration interacting with our custom business process flow stage. We ended up implementing a hybrid solution that might work for you as well.