Skip to content

Documents

A case can carry documents held in an external system rather than inside the platform itself. This page describes how that external document material is reached. A case's own record, by contrast, is the variables its running process instance has accumulated โ€” described in Processes and Tasks.


Referencing an external document store

A process can carry, among its own variables, a reference to a workspace in an external document-management system โ€” the same way it carries any other variable accumulated as the process runs. That reference is what ties a case to the documents held for it externally: the platform itself stores the pointer, not the documents.


Documents in a document-management integration

One integration pattern manages documents the way a records-management system does: a workspace is created (or reused if one already exists) to hold a case's documents, a document is uploaded into it with descriptive metadata such as its name and the responsible department, and from there a document can be listed, profiled, retrieved by version, or deleted. Every version of a document is addressable on its own, so a later upload does not replace what came before it โ€” it adds a new version alongside it.

As whom the document system sees a call

The document-management integration distinguishes two identities:

  • A person โ€” a caseworker or admin who signed in with their organisation account โ€” works in the document system as themselves: the platform opens a session with that person's own identity, so the document system enforces and records that person's rights. No shared password is involved.
  • The service account serves registered machine clients and background archiving, such as a process step that files a document or the archiving of a signed document.

Every data response says which one acted (actingAs: "user" or "service"). A person is never silently turned into the service account: when the platform cannot act as them, the request is refused with a reason they can act on, such as signing in again.

Background archiving runs as the service account, which can only record itself as the author. The employee who caused the write is therefore recorded at the end of the document's title, as " โ€” namens <naam> (<e-mail>)"</strong>.</p> <hr /> <h2 id="delivering-a-document-to-a-recipient">Delivering a document to a recipient<a class="headerlink" href="#delivering-a-document-to-a-recipient" title="Permanent link">¶</a></h2> <p>A second integration pattern is for delivery rather than storage: a document is sent to an external recipient โ€” registered first with the identifying and contact details a delivery platform needs โ€” and the delivery is tracked from there. A document that requires a follow-up state, such as confirmation that it was paid, can have that state recorded back through the same integration.</p> <hr /> <h2 id="integration-characteristics">Integration characteristics<a class="headerlink" href="#integration-characteristics" title="Permanent link">¶</a></h2> <p>Both patterns follow the same shape. Each is reached through its own set of endpoints, gated by authentication like any other protected route โ€” see <a href="../authentication-iam/">Authentication & IAM</a>. Each exposes a status check reporting whether the external system is reachable. And each can run in a <strong>stub mode</strong>, returning realistic fake responses instead of calling the external system at all, so the platform's own behaviour can be exercised without depending on the external system being available.</p> <hr /> <h2 id="related">Related<a class="headerlink" href="#related" title="Permanent link">¶</a></h2> <ul> <li><a href="../processes/">Processes</a> โ€” the process instance whose variables can reference an external document workspace</li> <li><a href="../tasks/">Tasks</a> โ€” the human step that most often produces or reviews a case's documents</li> <li><a href="../authentication-iam/">Authentication & IAM</a> โ€” the token validation every document endpoint requires</li> <li><a href="../security-compliance/">Security & Compliance</a> โ€” where secrets for an external integration are held</li> </ul> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type="button" class="md-top md-icon" data-md-component="top" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class="md-footer"> <nav class="md-footer__inner md-grid" aria-label="Footer" > <a href="../dynamic-forms/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Dynamic Forms"> <div class="md-footer__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </div> <div class="md-footer__title"> <span class="md-footer__direction"> Previous </span> <div class="md-ellipsis"> Dynamic Forms </div> </div> </a> <a href="../regelcatalogus/" class="md-footer__link md-footer__link--next" aria-label="Next: Regelcatalogus"> <div class="md-footer__title"> <span class="md-footer__direction"> Next </span> <div class="md-ellipsis"> Regelcatalogus </div> </div> <div class="md-footer__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-copyright"> <div class="md-copyright__highlight"> Copyright © 2026 Provincie Flevoland & RONL Initiative </div> Made with <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> Material for MkDocs </a> </div> <div class="md-social"> <a href="https://git.open-regels.nl/showcases/iou-architectuur" target="_blank" rel="noopener" title="GitLab Repository" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="m504 204.6-.7-1.8L433.6 21c-1.4-3.6-3.9-6.6-7.2-8.6-2.4-1.6-5.1-2.5-8-2.8s-5.7.1-8.4 1.1-5.1 2.7-7.1 4.8c-1.9 2.1-3.3 4.7-4.1 7.4l-47 144H161.3l-47.1-144c-.8-2.8-2.2-5.3-4.1-7.4-2-2.1-4.4-3.7-7.1-4.8-2.6-1-5.5-1.4-8.4-1.1s-5.6 1.2-8 2.8c-3.2 2-5.8 5.1-7.2 8.6L9.8 202.8l-.8 1.8c-10 26.2-11.3 55-3.5 82 7.7 26.9 24 50.7 46.4 67.6l.3.2.6.4 106 79.5c38.5 29.1 66.7 50.3 84.6 63.9 3.7 1.9 8.3 4.3 13 4.3s9.3-2.4 13-4.3c17.9-13.5 46.1-34.9 84.6-63.9l106.7-79.9.3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82"/></svg> </a> <a href="https://regels.overheid.nl/" target="_blank" rel="noopener" title="Regels Overheid" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M351.9 280H161c2.9 64.5 17.2 123.9 37.5 167.4 11.4 24.5 23.7 41.8 35.1 52.4 11.2 10.5 18.9 12.2 22.9 12.2s11.7-1.7 22.9-12.2c11.4-10.6 23.7-28 35.1-52.4 20.3-43.5 34.6-102.9 37.5-167.4zm-191-48h190.9c-2.8-64.5-17.1-123.9-37.4-167.4-11.4-24.4-23.7-41.8-35.1-52.4C268.1 1.7 260.4 0 256.4 0s-11.7 1.7-22.9 12.2c-11.4 10.6-23.7 28-35.1 52.4-20.3 43.5-34.6 102.9-37.5 167.4m-48 0c3.5-85.6 25.6-165.1 57.9-217.3C78.7 47.3 10.9 131.2 1.5 232zM1.5 280c9.4 100.8 77.2 184.7 169.3 217.3-32.3-52.2-54.4-131.7-57.9-217.3zm398.4 0c-3.5 85.6-25.6 165.1-57.9 217.3 92.1-32.7 159.9-116.5 169.3-217.3zm111.4-48C501.9 131.2 434.1 47.3 342 14.7c32.3 52.2 54.4 131.7 57.9 217.3z"/></svg> </a> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> <script id="__config" type="application/json">{"annotate": null, "base": "../../..", "features": ["navigation.tracking", "navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.path", "navigation.top", "navigation.footer", "navigation.indexes", "toc.follow", "toc.integrate", "search.suggest", "search.highlight", "search.share", "content.code.copy", "content.code.annotate", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src="../../../assets/javascripts/bundle.d7400e89.min.js"></script> <script src="../../../js/timeago.min.js"></script> <script src="../../../js/timeago_mkdocs_material.js"></script> <script src="../../../javascripts/doc-status.js"></script> </body> </html>