
A SOAP API path can work for years. It can still block new mobile apps, partner links, or product teams that expect REST APIs. The hard part is not changing XML to JSON. It is keeping business behavior while you change contracts, login, errors, ownership, and release controls. This guide explains how to migrate SOAP to REST without a big-bang rewrite. It gives you a decision matrix and a WSDL-to-OpenAPI mapping model. It also gives you a cutover plan and the evidence to need before retiring the old API path.
SOAP to REST migration is the planned process of exposing or rebuilding SOAP web services as REST APIs. It maps WSDL tasks and XML messages to HTTP API paths and JSON contracts. It also covers login, errors, and a period when both APIs run together.
SOAP and REST are different contracts, not just different payloads. SOAP commonly describes tasks, messages, XML schemas, envelopes, and faults through WSDL and related standards. REST uses resources, HTTP methods, representations, status codes, and links between client and server behavior. The W3C SOAP 1.2 standard defines the SOAP processing model. It does not give a direct REST match for every task.
That distinction matters. A converter can produce a JSON response and still change input checks, default values, access control, retry behavior, or side effects. The goal is not to make the new API path look modern. The goal is to give clients a contract they can use safely while the business capability remains correct.
Start by separating four layers of the old API. One layer is the task model, such as GetOrder or SubmitPayment. Another is the message model, including XML types, namespaces, optional fields, and nested objects. A third covers transport and security, including headers, certificates, tokens, and policy rules. The last covers faults, retries, transactions, and state.
The REST design should address each layer. A resource path might replace an task name. The mapping still needs a method, request schema, response schema, status codes, error shape, login method, idempotency rule, and page rules behavior. The OpenAPI Specification describes much of the HTTP contract. It cannot decide whether an task is a resource, a command, or an async job. That remains an design choice.
The safest pattern depends on your client count and the stability of the SOAP backend. It also depends on whether the old contract blocks the business change you need. Use this matrix before you estimate a rewrite.
A wrapper or facade is often the right first move when the backend still handles business-critical work. Teams can publish a REST contract without moving every client on one day. Microsoft's Strangler Fig application pattern uses a similar approach. Put a facade in front of the old system. Route functions over time. Remove the old path after the replacement is ready.
A wrapper fits a stable SOAP service with scattered client ownership. It also fits a business that cannot tolerate a broad cutover. Gateway change fits a small meaning gap and a need for shared policy. Selective rewrite fits tasks with poor boundaries or unsafe side effects. This work sits within digital engineering services when the migration changes design and delivery.
A full rewrite deserves a higher bar. It changes the domain model, not just the transport. You should have a clear owner, a complete client map, sample test data, a rollback plan, and a reason to accept the extra migration surface. If the only reason is that REST is more familiar to a new team, a facade may produce the result with less run-time risk.
To migrate SOAP to REST safely, first inventory the old service. Then design and review the new contract. Add an adapter or targeted rewrite. Run both APIs together. Move clients in stages. Retire SOAP only when usage and risk evidence meet the exit rules.
Create an inventory for every service in scope. Record tasks, WSDL versions, schemas, namespaces, login, certificates, dependencies, scheduled jobs, client teams, traffic volume, error rates, latency, data sensitivity, and business importance. Include clients that do not appear in the main application repository, such as partner jobs, link platforms, and vendor-managed clients.
The output should be more than a spreadsheet of URLs. Add an ownership field, a last-used date, an estimated change risk, and the evidence used to assign that risk. A service with low traffic but a high-value settlement task should not be treated as an easy candidate. A high-traffic read task with few side effects may be a better first wave.
Use the WSDL to identify tasks, XML types, messages, and faults. Then design resource paths, HTTP methods, JSON schemas, status codes, and an error model. Do not ship made output without review. Generation can speed discovery. It cannot decide resource boundaries or side effects.
Ask five questions in the design review. What resource does the task act on? Is the method safe or idempotent? What happens when a request is accepted but work completes later? Which SOAP fault becomes which HTTP status and error code? How will a client move from version one to version two?
For example, an task named GetOrderDetails might become GET /orders/{orderId}. An task named SubmitOrder might become POST /orders, but only if a repeated request does not create duplicate orders or the contract includes an idempotency key. A batch task may need POST /order-jobs and a status resource instead of a synchronous response.
Put the new API beside the old one. Route test clients first, then compare responses and business side effects. Where safe, use shadow traffic to exercise the REST path without allowing it to write twice. For write tasks, use planned test data or a comparison harness rather than duplicating live side effects.
Move to a canary when the contract tests pass and the comparison results are understood. Start with one client, one region, or a low-risk task. Monitor error rate, latency, access control failures, input checks, data mismatches, and downstream effects. A rollback trigger should be a measurable condition, not a feeling during a release call.
Retire the SOAP API path only after each client has an owner, a migration status, and a tested replacement path. Require a period with zero unexplained traffic or a documented exception. Publish the retirement date, support window, and final contact. Keep the rollback plan ready until the business accepts the residual risk.
A public Entrans API migration case study shows why staged work matters. The engagement moved legacy links to updated API paths. Backend teams kept data exchange consistent. The work happened in stages while active workflows continued. The public outcome reports 100% uninterrupted API migration without live incidents. That is one engagement, not a universal promise. It shows the evidence a migration plan should target.
A useful mapping sheet connects the old contract to the new one and records the decisions that code generators do not make. Use one row per task or resource action, then have the service owner and at least one client owner sign off.
This table prevents a common failure mode: treating an XML-to-JSON change as the migration itself. A real migration has to explain behavior. A carrier migration guide in the research set documents changed field limits, defaults, input checks, and error behavior between SOAP and REST. The lesson generalizes even when the domain does not: compare edge cases, not only successful sample requests.
The IETF HTTP Semantics standard is a useful authority for method and status-code behavior. Use it to challenge designs that return 200 OK for every business outcome or retry a method without knowing whether it is safe or idempotent.
A safe migration tests business behavior, contract shape, security controls, and run-time speed. Functional parity is needed, but it is not enough when the new API changes input checks, access control, error handling, or timing.
Use contract tests to confirm that the public OpenAPI document matches build work. Use link tests to verify downstream systems, queues, databases, and partner calls. Use security tests for login, access control scopes, certificate handling, secret rotation, input input checks, and sensitive data in logs. Use speed tests that match realistic payload sizes and load. Then add shadow comparison or a canary stage that observes live-like behavior.
Governance needs named owners. The API owner approves the contract and version policy. The security owner approves login, access control, secrets, and logging. Consumer owners approve fit. Operations owns dashboards, alerts, rollback, and the retirement window. The DevOps and quality engineering team should join when the migration needs automated tests, release gates, or live visibility.
Do not describe this checklist as automatic compliance. It is a control structure that supports review and audit. Your legal, contract, and team rules still determine what evidence is needed.
Migration cost is driven by service count, client coupling, meaning differences, needd assurance, and the number of APIs that must remain live during transition. Gateway licensing or hosting is only one line. Budget for contract discovery, test-data preparation, client support, dual-run tasks, monitoring, documentation, and the later removal of the old path.
Track measures that show progress. Count clients migrated, unexplained SOAP traffic, contract-test pass rate, error-rate difference, p95 latency difference, data mismatches, incidents, support tickets, and monthly legacy-API cost. A credible business case connects these measures to fewer incidents, faster client delivery, or lower maintenance effort. It does not assume REST alone creates savings.
A SOAP to REST migration is the wrong first move when a service depends on stateful WS-* behavior or distributed transactions. It also fails when the REST boundary cannot represent its security rules. Keep the SOAP contract and add lifecycle controls. Modernize the domain behind it first. A thin facade over a misunderstood state machine can make failures harder to diagnose.
It is also a poor investment for a low-value service with no active client demand. If inventory shows no meaningful usage and no funded product need, retire the service or keep it in planned maintenance. A new API for an unused capability adds surface area without adding value.
Finally, do not force a rewrite where the task is tightly coupled to a transaction and the team cannot define an equivalent REST behavior. Redesign the domain boundary, or leave that task on SOAP while you migrate safer read paths and independent workflows. Entrans would advise a client not to start a big-bang rewrite before it has a client map, a contract review, and rollback evidence.
If you are deciding whether to wrap, transform, or rewrite a SOAP service, start with an API modernization assessment. Entrans can map clients and dependencies, review the target REST contract, define the run in parallelence and rollback plan, and scope the first migration wave. The team’s application modernization services cover discovery, API-first design, staged refactoring, testing, visibility, and control.
In the public API migration engagement cited above, Entrans finished 100% uninterrupted API migration without live incidents while preserving active workflows. Discuss an application modernization assessment if you need a migration plan that ties API decisions to run-time evidence.
SOAP to REST migration is the planned process of exposing or rebuilding SOAP web services as REST APIs. It maps WSDL tasks and XML messages to HTTP API paths and JSON contracts. It also covers login, errors, and a period when both APIs run together.
That definition is deliberately broader than payload conversion. The migration includes behavior, security, testing, and retirement.
Yes. A wrapper, facade, or API gateway can expose REST API paths while the existing SOAP service remains behind them. This approach is often safer when the backend works and clients cannot move together, but it still needs contract design, meaning map, testing, monitoring, and a retirement plan.
The facade should have an owner and a removal condition. Otherwise, it becomes a permanent translation layer with no clear lifecycle.
Start with an inventory of tasks, schemas, clients, dependencies, traffic, and errors. Design and review the REST contract, build an adapter or targeted rewrite, test parity, run SOAP and REST together, migrate clients in stages, monitor the canary, and retire SOAP only after exit rules are met.
The most common mistake is starting with a converter before the team knows its clients.
Use the WSDL to find tasks, XML types, messages, and faults. Then create paths, HTTP methods, JSON schemas, status codes, and an error model in OpenAPI. Generated output is a starting point, not a finished REST design, so client review is needd for naming, idempotency, page rules, and versioning.
A made document can accelerate discovery. It should not bypass design review.
Use a gateway or facade when the SOAP backend is stable, client teams need time to migrate, or rollback matters more than immediate removal. Choose a selective rewrite when the old contract blocks needed behavior. A full rewrite fits only when the domain and clients can be redesigned together.
The correct choice is a risk decision, not a preference for one product category.
Test more than matching payloads. Compare business outcomes, schemas, input checks, login, access control, SOAP faults mapped to HTTP errors, idempotency, retries, latency, and side effects. Use contract and link tests first, then shadow traffic and a canary with defined rollback thresholds for errors, latency, and data mismatch.
For write tasks, avoid duplicating live side effects during comparison. Use planned fixtures or a safe comparison harness.
The biggest risks are semantic drift, changed input checks and defaults, incomplete fault mapping, broken access control, hidden clients, and a cutover without rollback. A successful XML-to-JSON response does not prove behavioral fit. Compare edge cases and live-like traffic before deprecating the SOAP contract.
Make each risk visible in the mapping sheet, test plan, and cutover runbook.


