/ Stable integration
Advanced document generation inside Valtimo and GZAC workflows.
GZAC is an implementation of Valtimo and uses the same Epistola plugin. Case handling stays in the workflow platform while Epistola owns templates, data contracts, and rendering.
/ Clear responsibilities
Keep every concern in the system that owns it.
The plugin connects the workflow and document layers without moving case logic into Epistola.
Valtimo / GZAC owns the case
The workflow platform gathers case data, decides when a document is needed, handles ZGW APIs, and stores or presents the result.
Epistola owns the document
Epistola manages advanced templates and data contracts, validates the supplied data, and renders the requested document.
/ Architecture flow
From case data to document — watch the plugin flow.
Valtimo or GZAC orchestrates the case and its ZGW connections while Epistola generates the document. Click through the steps to see the responsibility boundary.
Caseworker starts process
Caseworker → Zaakafhandelsysteem
A caseworker initiates a case process in the zaakafhandelsysteem — for example handling an objection ("bezwaar").
Collect case data
Zaakafhandelsysteem → Data Source
/zaken/BZ-2024-001/eigenschappen{ "zaaktype": "bezwaar", "eigenschappen": [...] }The zaakafhandelsysteem gathers case data from the ZRC, ZTC, and other configured data sources.
Request document generation
Zaakafhandelsysteem → Epistola
/api/v1/documents/generate{ "templateId": "bezwaar-v2", "data": { "zaak": "BZ-2024-001", ... } }Plugin sends a generation request to Epistola with the resolved template and all variable data.
Render and store document
Epistola → Temporary Storage
/documents/gen-48291.pdf{ "contentType": "application/pdf", "size": "142KB" }Epistola renders the template with the provided data and stores the resulting PDF in temporary storage.
Wait for generation
Zaakafhandelsysteem → Epistola
/api/v1/jobs/gen-48291{ "status": "completed", "resourceUrl": "/tmp-storage/gen-48291.pdf" }The Valtimo plugin tracks the Epistola generation job until the document is ready or the job reports an error.
Collect document
Zaakafhandelsysteem → Temporary Storage
/tmp-storage/gen-48291.pdf{ "format": "application/pdf", "bytes": 145291 }The zaakafhandelsysteem downloads the completed PDF from the Epistola result location.
Register in Documenten API
Zaakafhandelsysteem → DRC
/enkelvoudiginformatieobjecten{ "titel": "Besluit op bezwaar", "informatieobjecttype": "besluit" }The zaakafhandelsysteem stores the PDF in the Documenten API (DRC), linking it to the original case for archival.
Document available
Zaakafhandelsysteem → Caseworker
The caseworker can now view and download the generated document from within the zaakafhandelsysteem.
/ Plugin setup
From template contract to case document in three steps.
Prepare the document contract
Publish the Epistola template and define the data its fields expect from the case workflow.
Configure the plugin
Connect Valtimo or GZAC to Epistola and map case information to the template's data contract.
Generate and handle the result
Generate, preview, retry when needed, and let the workflow store or present the finished document.
/ Plugin capabilities
The complete document step in your case workflow.
- Select a published Epistola template from a process.
- Map case data to the template's data contract.
- Preview and review a document before final generation.
- Wait for generation and handle success, failure, and retry paths.
- Return the generated document to the case workflow for storage or use.
/ Next step
Interested in what Epistola can do for your product?
Schedule a call and ask us any of your questions.