cleverage/soap-process-bundle
CleverAge/SoapProcessBundle adds SOAP integration to the CleverAge ProcessBundle, helping Symfony applications configure and run SOAP-based process tasks. Part of CleverAge’s process tooling, MIT licensed, with usage docs included.
What changed since v3.0 (v3.3 release, published 2025-12-10)
^8.2 (not >=8.2), explicitly rejecting PHP 9, and layers symfony/polyfill-php83/84/85 so PHP 8.3–8.5 language features are usable while still supporting PHP 8.2. The prior assessment's premise that this package is gated on PHP 8.5/Symfony 8 is wrong and materially changes the risk profile.cleverage/process-bundle ^5.4. This is now a peer package, not an optional add-on, and its version becomes part of our upgrade graph.ClientRegistry::addClient(), legacy service IDs, @final since 3.3) become breaking in 4.0.RequestTask now logs failures as Soap call failed (previously the misleading Empty resultset for query) and logs on the cleverage_process_task channel, restoring log visibility in the process execution UI.code (via tag attribute or #[AsSoapClient(code: '...')]).Architecture Fit
cleverage/soap-process-bundle remains a Symfony bundle, not a Laravel package. Fit with a Laravel codebase is therefore indirect: we consume it as a Symfony component-style dependency or wrap it. v3.3 strengthens the underlying architecture (lazy client registry, exception hierarchy implementing ProcessExceptionInterface, defined public API surface) but does not add any Laravel-facing surface — still no service provider, no facade, no config publishing.
Importantly, the bundle now declares no configuration at all: the extension alias is cleverage_soap_process (correcting the previously misspelled clever_age_soap_process), and configuring keys under it is deprecated and will be rejected in 4.0. Any assumption that this package offers runtime configuration toggles (endpoints, timeouts, credentials via config) is false — wiring happens through DI tags and attributes, which Laravel does not have natively.
Integration Feasibility
^8.2 constraint. Confirm the Symfony constraint in composer.json before committing; v3.3's notes only evidence symfony/service-contracts, symfony/deprecation-contracts, and removal of symfony/finder.code-indexed service locator and #[AsSoapClient] attribute are Symfony DI autoconfiguration features. In Laravel we must either (a) register clients manually and call the (deprecated-in-4.0) ClientRegistry::addClient(), or (b) build a Laravel wrapper that constructs the locator ourselves. Option (a) is a dead end past 4.0.cleverage/process-bundle ^5.4 must be installed and, if we use its process/UI features, understood. Task referencing by service is deprecated in favour of the new soap_request task code — this is actually a cleaner integration point for a Laravel wrapper than the old service-ID approach.Technical Risk
ClientRegistry::addClient() → code mandatory.cleverage_soap_process.task.request / .transformer.request → removed; use soap_request and class-name IDs.RequestTask, RequestTransformer, ClientRegistry, CleverAgeSoapProcessBundle → deprecated now, fatal in 4.0.cleverage_soap_process → rejected in 4.0.MissingClientException::create(string $code) is now strictly typed; psr/log ^2|^3 is required (psr/log 1 causes a fatal error on typed logger signatures).Key Questions
cleverage/process-bundle an acceptable addition to our dependency graph, or does it imply adopting a process-execution framework we don't want?#[AsSoapClient] equivalent), and is it funded for the 4.0 migration?php-soap, guzzle-soap, diabol/soap) whose removal cost exceeds the benefit of this bundle?Stack Fit
cleverage/process-bundle ^5.4.laravel-soap-process wrapper package that (a) registers a service provider, (b) builds ClientRegistry from a Laravel config array into the new locator-based constructor, (c) exposes a facade for dispatching RequestTask, and (d) provides a Laravel-native attribute (or config key) mirroring #[AsSoapClient(code: '...')]. This mirrors the bundle's own lazy-loading design rather than fighting it.ClientRegistry::addClient() calls (deprecated, removed in 4.0) and referencing the task by legacy service ID.php-soap extension (fastest, least abstraction), guzzle-soap, diabol/soap. The bundle's differentiator is process orchestration and transformation, not raw SOAP transport — if we only need request/response, the bundle is over-scoped.Migration Path
composer.json PHP/Symfony constraints across all SOAP-touching services; inventory existing SOAP clients; confirm cleverage/process-bundle version compatibility with anything already installed.addClient(), legacy service IDs, container fetches, subclassing of @final since 3.3 classes).code values per client.RequestTask invocations.Compatibility
^8.2 hard floor; PHP 9 rejected. Polyfills required and installed automatically.psr/log ^2|^3 — verify no transitive dependency pins psr/log ^1.symfony/finder no longer required (bundled files loaded via glob) — safe to drop if unused elsewhere..docker/, .github/, tests/, quality configs, Makefile) are excluded from the Composer dist archive — smaller vendor footprint, no dev-only code shipped.Sequencing
php-soap/Guzzle.cleverage/process-bundle ^5.4 + bundle v3.3.Maintenance
RequestTask, RequestTransformer, ClientRegistry, CleverAgeSoapProcessBundle are @final since 3.3; CleverAgeSoapProcessExtension and RegisterClientsPass are @internal. This is exactly the signal a TPM wants: extending these classes is now a known-unsupported path, which reduces long-term fork risk if we respect it.cleverage/process-bundle releases. Two upstream packages now gate our upgrades instead of one.Support
Soap call failed on the cleverage_process_task channel with process context — failed calls are finally visible in process execution logs rather than silently missing or mislabelled.ProcessExceptionInterface-implementing UnexpectedValueException, InvalidArgumentException, and RuntimeException that extend the previously thrown SPL exceptions with identical messages. Existing catch blocks keep working, which means our error handling needs no rewrite — but new code should catch the interface, not the SPL base.Scaling
php-soap before assuming parity.Failure Modes
| Scenario | Impact | Mitigation |
|---|---|---|
| PHP 8.1 host attempts install | Composer resolution failure | Enforce PHP 8.2+ in CI matrix and platform config |
| Shared client state leaks across jobs (Octane/queue) | Cross-tenant or cross-request auth/state contamination | Per-execution client instantiation; integration test with two sequential executions |
Duplicate or empty client code |
Container compilation fails at deploy | Fail-fast is desirable; add compile step to CI |
| Misconfigured client, lazily loaded | Runtime failure at first use, not at deploy | Smoke-test every client code in a deploy gate |
| 4.0 upgrade with un-migrated deprecations | Breaking upgrade across all SOAP services | Burn down the 4.0 removal list while on 3.3 |
psr/log ^1 pinned transitively |
Fatal error on typed logger signature | Dependency audit; pin psr/log ^2|^3 |
Config keys left under cleverage_soap_process |
Compile notice now, rejection in 4.0 | Remove config; the bundle has none |
| SOAP schema/WSDL drift | Broken requests/responses | Validate WSDLs in CI; contract tests |
| High SOAP latency | Degraded user experience | Circuit breakers, timeouts, async where possible |
Ramp-Up
Onboarding steps
cleverage/process-bundle ^5.4.code, invoke RequestTask via the soap_request task code, and confirm the log lands on cleverage_process_task.ProcessExceptionInterface.php-soap for a representative payload.Training focus: SOAP fundamentals (envelopes, WSDL, faults), Symfony DI autoconfiguration and service locators, and — critically — the semantics of shared clients in long-running workers.
How can I help you explore Laravel packages today?