gheb/docusign-bundle
Symfony bundle for DocuSign eSignature integration, providing configuration, API client services, and helpers to send envelopes, manage templates and recipients, and build document signing workflows in PHP applications.
Architecture fit. Unchanged by 5.6.5. The package is a Symfony bundle, not a Laravel package — this remains the single most important fact for triage. It integrates via Kernel::registerBundles(), a DI Extension with a Configuration tree (the docusign: config namespace), compiler passes, and Symfony event subscribers. None of those extension points exist in Laravel. Laravel's ServiceProvider/Facade model and its config/*.php convention are not compatible with a Symfony bundle's config tree, so the bundle will not autoload, register, or resolve anything in a standard Laravel app. Underneath, both frameworks share symfony/* components, so the concepts port cleanly — but the bundle as shipped is a Symfony-only artifact. A CS fix and a psr/log constraint bump do not touch this.
Integration feasibility. Unchanged. Three paths:
| Path | Effort | Verdict |
|---|---|---|
| Adopt bundle as-is | N/A in Laravel | Not possible |
| Fork bundle internals into a Laravel service provider + facade | 3–5 days + ongoing fork ownership | Feasible |
Skip the bundle; wrap docusign/esign-client (official SDK) in a thin Laravel package |
2–4 days, no fork burden | Recommended |
The recommended path is to treat this repo as a reference implementation rather than a dependency: it documents the object graph you need (JWT/Signer auth, envelope definition builder, recipient view generation, Connect webhook handling) without committing you to a 34-star, small-maintainer artifact. 5.6.5 slightly improves the fork path (see compatibility) without changing the build-vs-wrap calculus.
Technical risk.
psr/log:^3.0 support and a code-style fix. No features, no deprecations, no breaking changes, no auth or envelope changes. Nothing here de-risks the JWT consent flow or the Connect webhook path, which are the two things that actually determine success.vincentchalamon) is visibly doing maintenance work. Still no visible governance, release cadence, security disclosure process, or SLA. Assume no upstream fix arrives on your timeline; assume one may arrive eventually.Key questions to resolve before committing engineering time.
psr/log:^3.0 support makes modern Symfony/PHP stacks easier to satisfy than the prior release did. If Laravel, this becomes a build-vs-wrap decision, not a dependency decision.Stack fit. Green for Symfony 5.x/6.x applications (the bundle's target). Red for Laravel as a direct dependency. Amber for Laravel via adapter. If the estate is mixed, standardize on the official docusign/esign-client SDK wrapped per-framework — one auth and envelope layer, two thin framework bindings — rather than adopting framework-specific community bundles in each.
Migration path.
composer require gheb/docusign-bundle, configure docusign: block, wire the JWT consent flow, ship. ~1 day to a working envelope in the DocuSign demo environment. Take 5.6.5 if you are on psr/log v3.symfony/framework-bundle to satisfy the dependency — that is a net-negative architecture decision. Instead, extract the bundle's envelope-building and webhook-handling classes into an internal package (app/Domain/Signature or a private composer package), bind them through a DocuSignServiceProvider, and expose a DocuSign facade. Budget a spike first.FORK.md recording why — MIT permits this, but undocumented forks become invisible tech debt. 5.6.5 is a reasonable pin: it is current, non-breaking, and dependency-modern.Compatibility.
| Dimension | Assessment |
|---|---|
| License | MIT — no legal friction, safe to fork and vendor |
| PHP | Bundle era implies PHP 7.4–8.1; psr/log:^3.0 in 5.6.5 implies the dev/test matrix now runs PHP 8.1+, so verify against your 8.2/8.3 runtime |
| Symfony | 5.x/6.x likely; 7.x support still unverified |
| PSR-3 | Improved. 5.6.5 adds psr/log:^3.0, removing a real conflict against Laravel 10/11 and Symfony 6.2+, both of which ship psr/log v3. Re-check the full transitive tree; a single constraint bump rarely clears every conflict |
| DocuSign API | Still built against a v2.1-era SDK (5.6.5 does not touch it); pin and inspect the transitive docusign/esign-client version |
| PHPUnit / test stack | Slightly lower risk than before — the psr/log matrix widening suggests dev dependencies are being kept current — but verify no transitive conflicts land in your suite |
Sequencing. Do not parallelize; each stage is a gate. 5.6.5 does not change the sequence or the gates.
envelopeId + status.Gate 1 is the go/no-go: if JWT consent and token refresh don't work cleanly in the demo account, stop — the rest of the package won't rescue you.
Maintenance. Revised. The previous assessment said adopting this package means becoming the maintainer. That overstated it: 5.6.5 shows active, if infrequent, upstream maintenance from more than one contributor. Correct framing is shared-cost with a slow upstream: you get occasional dependency and style patches (this release is exactly that), but no committed cadence, no roadmap, and no guarantee the next PHP or Symfony major lands on your schedule. Budget a recurring line item — realistically 1–2 engineer-days per quarter for dependency review and pin bumps, plus a larger spike at each framework major, with a contingency that you may have to carry the patch yourself. The official SDK wrapper has the same shape of cost but a materially better upstream.
Support. Still no vendor support, no SLA, no documented security disclosure process. Community support is proportional to 34 stars — effectively zero, notwithstanding the release activity. Internal runbooks are mandatory, not optional. The DocuSign developer community and the official SDK's support channel remain your real escalation path; that argues again for the official SDK beneath any wrapper.
Scaling. Unchanged and unaffected by 5.6.5. The package is a thin orchestration layer — envelope payloads and HTTP calls — so it is not the bottleneck. Scale constraints live in DocuSign: per-account API rate limits (commonly ~1,000 calls/hour on standard plans), Connect webhook throughput, and concurrency limits on envelope sends. Design for queueing: envelope sends and status polls belong on a background queue with backoff, not in the request cycle. The webhook receiver must be horizontally scalable and idempotent.
Failure modes to design for explicitly.
| Failure | Impact | Mitigation |
|---|---|---|
| JWT token expiry / consent revoked | All sends fail silently | Health check on token acquisition; alert on auth failure rate |
| Connect webhook not delivered or delayed | Envelope status stalls in local DB | Reconciliation poller as backstop for in-flight envelopes |
| Duplicate webhook delivery | Double state transitions, duplicate downstream actions | Idempotency on envelopeId+status; unique constraint |
| Retry without idempotency key | Duplicate envelopes sent to signers | Persist client-side correlation ID; check before resend |
| API rate limit (HTTP 429) | Batch sends fail | Exponential backoff, queue with concurrency cap |
| Stale wrapper vs. API change | Schema mismatch on new envelope fields | Contract tests against demo account in CI |
| Upstream goes quiet again | No patches for PHP/Symfony majors | Pin the commit; keep the fork/patch path rehearsed |
| Document/envelope data retention | Compliance gap on audit trail | Persist Certificate of Completion + documents to your own storage |
Ramp-up. Unchanged. Two distinct knowledge domains: DocuSign's auth and envelope lifecycle (a genuine learning curve — JWT consent, recipient types, tabs, envelope state machine), and the package's internals. The first is unavoidable and portable; the second is throwaway if you fork. Expect 1–2 weeks for a mid-level engineer to be productive, front-loaded on DocuSign concepts rather than this codebase. Because the codebase is small, reading it end-to-end is a half-day and doubles as the integration specification.
Recommendation. Unchanged in substance; 5.6.5 improves the outlook at the margin. Do not adopt gheb/docusign-bundle as a production dependency on a Laravel stack — it is architecturally incompatible, and a maintenance release does not change that. Use it as a design reference, build a thin in-house wrapper over the official docusign/esign-client SDK, and put the effort saved into the two areas that actually determine success: JWT consent lifecycle and Connect webhook idempotency. If you are on Symfony, take 5.6.5 — it is a clean, non-breaking pin that resolves a real psr/log v3 conflict.
How can I help you explore Laravel packages today?