# Resilience to maintenance, migrations and retirements

*Integration Architect Study Guide · Build Solution · Last updated October 16, 2026 · https://www.certifyforce.com/study-guide/integration-architect/build-solution/resilience-to-maintenance-migrations-and-retirements*

Keep integrations running through Salesforce maintenance and change: skip callouts in read-only mode, recover Pub/Sub API clients after releases and org migrations, rebuild local external client apps after sandbox refreshes, plan for retiring APIs and features, and use circuit breakers, My Domain URLs, mTLS and Trust notifications.

- Certification: Salesforce Integration Architect
- Exam section: Build Solution
- Study guide: https://www.certifyforce.com/study-guide/integration-architect

**Official exam objective:**

> Given a use case, identify the factors needed to build resilience in an integration solution for system updates.

## What the exam expects

- Keep Apex integrations consistent during read-only maintenance by checking `System.getApplicationReadWriteMode()`.
- Recover Pub/Sub API clients after major releases and org migrations: new token, error-specific backoff, deduplication on event `id`, and a fallback when retained events reset.
- Plan for environment and platform change: local external client apps after sandbox refresh, SOAP `login()` and API version retirements, legacy named credentials and other retiring features.
- Isolate external outages with a circuit breaker and queued requests, and remove brittle endpoints and network rules (instance URLs, narrow IP allowlists).

Key terms: **read-only mode** (maintenance state where reads work and writes fail); **org migration** (moving an org to a new instance); **retention window** (72 hours of stored events); **API Total Usage** (Event Monitoring event type that shows API versions in use); **circuit breaker** (stops calling a failing system until probes show recovery).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Callouts in read-only mode | Execute; Salesforce writes are blocked | [Callout Limits and Limitations](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_callouts_timeouts.htm) |
| API writes in read-only mode | `INSERT_UPDATE_DELETE_NOT_ALLOWED_DURING_MAINTENANCE` | [Salesforce Read-Only Mode Overview](https://help.salesforce.com/s/articleView?id=000386834&language=en_US&type=1) |
| `org.migrated` retry spacing | At least 30 minutes apart | [Handle Errors](https://developer.salesforce.com/docs/platform/pub-sub-api/guide/handling-errors.html) |
| Unique event key across migrations | Event `id`, not `replay_id` | [Event Message Durability](https://developer.salesforce.com/docs/platform/pub-sub-api/guide/event-message-durability.html) |
| Local external client apps on refresh | Not copied; only packaged apps are | [External Client Apps](https://help.salesforce.com/s/articleView?id=xcloud.external_client_apps.htm&type=5) |
| SOAP `login()` | API 64.0 and earlier; full retirement Summer '27 | [login()](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_login.htm), [Integration Patterns](https://architect.salesforce.com/docs/architect/fundamentals/guide/integration-patterns.html) |
| Retired API version request | 410 GONE; versions 21.0-30.0 retired Summer '25 | [API End-of-Life Policy](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/api_rest_eol.htm) |
| API version notice | Support at least 3 years; notice at least 1 year | [API End-of-Life Policy](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/api_rest_eol.htm) |
| Static IPs per instance | Not offered | [IP Addresses and Domains to Allow](https://help.salesforce.com/s/articleView?id=000384438&type=1) |

## Check yourself

- Why should Apex check `getApplicationReadWriteMode()` before a callout?
- When should a Pub/Sub API client fetch a new token instead of backing off?
- What breaks after a sandbox refresh if the integration used a local external client app?
- How do you find integrations still calling old API versions?

## Sources

- [Callout Limits and Limitations](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_callouts_timeouts.htm)
- [Salesforce Read-Only Mode Overview](https://help.salesforce.com/s/articleView?id=000386834&language=en_US&type=1)
- [Handle Errors (Pub/Sub API)](https://developer.salesforce.com/docs/platform/pub-sub-api/guide/handling-errors.html)
- [Retry Long-Lived RPC Calls After an Error Occurs](https://developer.salesforce.com/docs/platform/pub-sub-api/guide/retry-rpc-calls.html)
- [Event Message Durability (Pub/Sub API)](https://developer.salesforce.com/docs/platform/pub-sub-api/guide/event-message-durability.html)
- [External Client Apps](https://help.salesforce.com/s/articleView?id=xcloud.external_client_apps.htm&type=5)
- [OAuth 2.0 JWT Bearer Flow for Server-to-Server Integration](https://help.salesforce.com/s/articleView?id=xcloud.remoteaccess_oauth_jwt_flow.htm&type=5)
- [login()](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_login.htm)
- [Integration Patterns (Salesforce Architects)](https://architect.salesforce.com/docs/architect/fundamentals/guide/integration-patterns.html)
- [API End-of-Life Policy](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/api_rest_eol.htm)
- [Retirement of OAuth 2.0 Username-Password Flow for Connected Apps (Release Update)](https://help.salesforce.com/s/articleView?language=en_US&id=release-notes.rn_security_unpw_flow_retirement.htm&release=262&type=5)
- [Salesforce-to-Salesforce Retirement](https://help.salesforce.com/s/articleView?id=005103355&language=en_US&type=1)
- [Get Started with Named Credentials](https://developer.salesforce.com/docs/platform/named-credentials/guide/get-started.html)
- [Named Credentials](https://help.salesforce.com/s/articleView?id=sf.named_credentials_about.htm&type=5)
- [Well-Architected: Reliability](https://architect.salesforce.com/docs/architect/well-architected/guide/reliability.html)
- [Salesforce Core Services - IP Addresses and Domains to Allow](https://help.salesforce.com/s/articleView?id=000384438&type=1)
- [Message Durability (Streaming API)](https://developer.salesforce.com/docs/atlas.en-us.api_streaming.meta/api_streaming/using_streaming_api_durability.htm)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 10 linked practice questions, and unlimited timed mock exams are included with the Integration Architect pack (USD $19): https://www.certifyforce.com/practice-exams
