Customer case study · High-volume document generation

21,500+ documents a day, without turning Salesforce into a rendering engine

How one customer uses Salesforce as the control plane, AWS Lambda for orchestration, OpusDocs microservices for generation, and Amazon S3 for file storage.

An anonymized customer implementation.

See this customer’s generation benchmarks
21,500+
documents per day
Generated across production proposal workflows
1.1 sec
production average generation time
Across the full daily document mix
3.1M+
documents since Nov 2024
Generated since the customer launch
1.3M+
documents generated in 2026
Produced this year and growing

The implementation

Keep Salesforce authoritative without making it the bottleneck

Each committed proposal carries hundreds of data points about the customer, products, services, pricing, agreement, jurisdictional context, and related child records. That persisted CRM data becomes the source for every generated document.

Salesforce determines which documents and templates to use and builds the generation request from CRM-managed configuration and business logic. AWS and OpusDocs then execute that governed request without moving control of the process outside CRM.

The document package

One proposal can require an entirely different set of documents

Every proposal produces a customer agreement. The rest of the package is selected dynamically from hundreds of data points and child records. The customer's preferred language (English or Spanish), along with location, state, utility, deal type, product offerings, and local requirements determines which documents belong in the package.

Example generated package

  • Customer agreement
  • English or Spanish versions
  • State and location disclosures
  • Utility-specific forms
  • Local-authority documents
  • Deal-type exhibits
  • Product-offering documents

Inside this customer’s template library

Less waiting, from simple forms to complex agreements

A focused benchmark of this customer’s own templates covered about 150 document variations and 12 template families. The suite delivered a 2.35-second median to generate and store the finished PDF, handling the conditional content, repeating data, images, and signature requirements behind their everyday document workflows.

The 1.1-second production average above covers their full daily document mix. This benchmark measures a selected set of variations across the template library.

The performance gap was visible at both ends of the complexity range. Even a lightweight form meant nearly a minute of waiting in their legacy Conga workflow. OpusDocs delivered a subsecond median for that form and a few seconds for their most complex Customer Agreement.

Median elapsed time · two measured customer workloads
Document complexityCongaLegacy workflowOpusDocsDocument generation
Low complexityLightweight document · 8-page source template
High complexityCustomer Agreement · 257-page source template

Separate samples from one customer. Conga measures the wait from starting the workflow to a completed file. OpusDocs measures generating and storing the PDF after the data is supplied. These results show individual document speed, not simultaneous processing capacity.

The Customer Agreement source contains 257 pages, nearly 300,000 document elements, extensive tables and images, and conditional rules that select the right terms for each customer. That complexity stays in the template while generation keeps the workflow moving.

The architecture

CRM controls the process. AWS executes it.

Salesforce provides the request, customer data, templates, and rules. AWS orchestrates generation, stores the files, and writes file metadata back to CRM.

AWS to Salesforce CRM

Lead / proposal creation

AWS creates the lead and proposal records, persisting the customer, product, pricing, language, and agreement data in CRM.

Control plane

Salesforce CRM

Source data

Customer and proposal data

Customer, product, pricing, agreement, location, language, and related records.

OpusDocs Configuration

Template Metadata and Business Logic

Templates, configuration, document-selection rules, and business logic.

File Metadata

Linked document records

Document name, type, status, S3 link, and e-signature information.

Execution plane

AWS

Amazon Lambda

OpusDocs Generation Engine

Builds the document package from the CRM request, data, and templates.

OpusDocs Orchestrator

Calls CRM APIs and coordinates generation, storage, and metadata writeback.

Amazon S3

Generated file data

Stores document binaries outside CRM for scalable, cost-effective storage.

OpusDocs Template Files

Stores the template files selected by the CRM configuration.

What happens for each proposal

A dynamic request, assembled and executed in seconds

  1. 01

    Commit the proposal to CRM

    Salesforce persists hundreds of customer, product, service, pricing, agreement, jurisdiction, and child-record data points for the proposal.

  2. 02

    Determine the document set

    Salesforce evaluates CRM-defined configuration and business logic to select every document and template required for the proposal.

  3. 03

    Build the generation request

    Salesforce builds the request from committed proposal data, template assignments, and generation configuration persisted in CRM.

  4. 04

    Orchestrate in AWS

    AWS Lambda receives the request, retrieves the referenced CRM data and assets, and prepares the complete workload for generation.

  5. 05

    Generate the document set

    OpusDocs merges the customer and proposal data into the selected templates to render the agreement and all conditional documents.

  6. 06

    Store files and synchronize metadata

    Lambda persists the binaries in Amazon S3 and writes linked records back to Salesforce with file metadata, status, and e-signature activity.

Why this design works

Cost-effective infrastructure without losing CRM visibility

CRM resources stay focused on CRM work

Rendering and package assembly run in purpose-built microservices instead of consuming Salesforce transaction time and compute.

File storage scales independently

Generated binaries live in Amazon S3, removing Salesforce file-storage capacity and file-size constraints from the generation path.

Business configuration stays visible

Templates, assignments, and rules remain managed in Salesforce, where administrators and business teams already govern the process.

Users keep end-to-end visibility

CRM users can see each document type, name, status, and e-signature state without requiring the binary file to live in Salesforce.

Your architecture will be different

Bring us your volume, data model, and hardest document package

We will show how OpusDocs can fit your CRM, orchestration layer, storage model, and document rules without forcing generation into the platform that holds your data.