A Copilot Studio agent at Wingtip Toys calls a live inventory API during checkout. The API is occasionally unavailable due to maintenance. The business requires that customers still complete checkout using cached inventory data rather than seeing an error. Which pattern implements graceful degradation?
Select an answer to reveal the explanation.
Short Explanation and Infographic
Graceful degradation is like a store switching to a paper receipt when the printer fails — you complete the transaction with a backup, not a shutdown. Routing the OnError path to cached data keeps checkout alive. The correct answer is A.
Full explanation below image
Full Explanation
## Why A is Correct This pattern implements graceful degradation: when the primary path (live API) fails, execution routes to the OnError path which calls a fallback (cached Dataverse table). The checkout flow continues using best-available data rather than stopping. This is the recommended pattern for resilient agent design in Copilot Studio.
## Why the Distractors Are Wrong B (Disable inventory check entirely): Removing the check means you always use no inventory data — this is not graceful degradation, it's removal of a feature. The business may need inventory data when the API is available.
C (Retry loop up to 10 times): Retrying an unavailable API 10 times introduces significant latency (potentially minutes) in the checkout experience. A single retry may be reasonable, but a long retry loop is not user-friendly, and the API outage is stated to be maintenance-related (not transient).
D (Error system topic with apology): The Error system topic is the last resort for unhandled exceptions. Configuring it to end the conversation means every API failure terminates checkout — not graceful degradation.
## Exam Tip Graceful degradation in Copilot Studio = OnError path → alternative data source or simplified flow, not error display and stop. Know the difference between OnError (action-level), Fallback topic (intent-matching), and Error system topic (session-level unhandled exception).