VerseDocs · for security reviewers

Security and data residency

The questions a security review asks about a document generator, answered from the architecture rather than a policy. Reviewed 16 September 2026. If a statement here is ever out of step with the product, the product documentation wins and we will correct this page.

01

Documents are rendered inside your Dataverse environment by sandboxed plug-ins. No document, template or field value is sent to VerseBlocks or to any third party during generation.

02

Files travel as base64 in Custom API parameters, are processed in memory, and are returned the same way. VerseDocs stores nothing of its own; what you keep is what you attach or save.

03

Licence keys are validated offline in the plug-in. The only outbound calls VerseDocs can make are three explicit actions (telemetry counts, registration, feedback), each optional and each without document content.

Where the work happens

VerseDocs is a managed Dataverse solution: a plug-in package registered as Custom APIs (vdocs_*), a model-driven admin app, two custom tables (templates and usage counts) and a command-bar button. There is no VerseBlocks web service in the generation path, no Azure resource in your subscription, no Entra app registration and no connector to consent to.

When a user clicks Generate document, or a flow calls an action, Dataverse executes the plug-in in its isolated sandbox worker in the same region as your environment. The plug-in reads the template row and the target record under the calling user's privileges, renders the document in memory, and hands the bytes back to the caller or attaches them as a note on the record. The sandbox has the same network and execution restrictions Microsoft applies to every registered plug-in.

PDF conversion runs in the same sandbox, using a commercially licensed .NET rendering library embedded in the plug-in package. VerseDocs does not use OneDrive, SharePoint, Microsoft Graph or a hosted converter to produce PDFs, and it never writes an intermediate file anywhere.

What moves, and where

Every input and output is a Custom API parameter. Templates arrive as base64 from the template table or from your flow; data arrives as JSON or is resolved from the record; the result leaves as base64. Nothing is written to blob storage, a queue, a log or a temporary file by VerseDocs.

DataPathLeaves the environment?
Template filesvdocs_template row (file column) or your flow → plug-in memoryNo
Record and related dataDataverse → plug-in memory, via the binding manifest's FetchXML, under the caller's privilegesNo
Generated documentsPlug-in memory → caller (base64) or timeline note on the recordNo
Images for {{image:}} tokensYour flow → plug-in memory (Options.images)No
Usage countsvdocs_usage table in your environment (action, duration, bytes, edition, per call)No, unless telemetry is on: aggregates only
Licence keyvdocs_LicenseKey environment variable; verified in the plug-inNo

The only three things that can leave

Three Custom APIs can transmit to VerseBlocks. None of them runs as part of generating or converting a document; each runs only when the admin app or a flow you built calls it. Telemetry never includes document content, template content, file names or field values.

ActionSendsHow to stop it
vdocs_SendTelemetryOrganisation id, tenant id, licence edition, template count, call counts by action and by month, read from the vdocs_usage tableToggle on the Licensing page, or set vdocs_TelemetryOptOut to true
vdocs_RegisterCompany name and contact email you typed into the registration formDo not submit the form
vdocs_SubmitFeedbackA free-text message you typedDo not send it
  • With the vdocs_TelemetryEndpoint environment variable unset, none of the three actions transmits anything at all.
  • Purchasing is a Stripe Checkout session opened from the Licensing page in your browser; card details go to Stripe, not to VerseBlocks or the plug-in.

Licensing without a phone-home

A licence key is a single signed string bound to your tenant. The plug-in verifies the signature with an embedded public key on every call; it never contacts a licensing service to decide whether a document may be generated, so nothing stops working because a service was unreachable. A key issued for another tenant is rejected as belonging to a different tenant rather than silently working.

The licensing service is contacted only from the Licensing page in the admin app, when you buy or retrieve a key. An unlicensed environment is a full-function trial: every action works, generated documents carry a visible trial watermark, and the optional utility-pack actions return a licence-required error. When a paid year ends, the watermark returns; nothing is deleted and no template or flow breaks.

Identity and access

Plug-ins execute under the calling user's Dataverse identity. A user can only generate a document from a record they can read, with related rows they can read, using a template they can read. Flows run as their connection's user or service account, with that account's privileges and time zone.

VerseDocs ships three security roles: User (read the template catalogue, generate), Template Author (create and edit templates, use Template Studio) and Administrator (licensing and configuration). Without one of them the Generate document button's template picker is empty. The button itself is off on every table until an administrator enables that table, so it never appears where it was not asked for.

Data residency and retention

Because rendering happens in the Dataverse sandbox of your environment, generated documents are processed in the same Azure region as that environment and inherit your tenant's data-residency commitments. VerseBlocks has no copy of any template, record or document, and therefore nothing to delete, retain or disclose on your behalf.

Generated files persist only where you put them: a timeline note, a SharePoint library, an email attachment, a Dataverse file column. Retention is governed by your own policies on those locations. The vdocs_usage table holds per-call counts (action, duration, input and output sizes, edition) and no content; you may truncate it at any time.

Provenance and auditability

Every document produced from a record is stamped with custom document properties recording the template id, name and version, the generating user's id, the UTC timestamp and the VerseDocs version (or the equivalent PDF Info keys for PDF output). Anyone with the file can see which template produced it and when. Set includeProvenance to false in Options to suppress stamping for a call.

Errors are named codes (TEMPLATE_FIELD_MISSING, FETCHXML_INVALID, EDITION_REQUIRED and so on) with messages that identify the token or query at fault, never a silently blank field. A misspelt column stops generation rather than producing a document that looks right and is not.

About the vendor

VerseBlocks LLC is an independent software vendor. The product is designed so that no customer document, template or record is ever processed on VerseBlocks systems; the controls that apply to your documents are the ones already governing your Microsoft tenant. VerseBlocks does not claim third-party certifications for its own systems, and does not need access to your environment to support you. Questions for a security review go to admin@verseblocks.com and are answered in writing.

Short answers
Does VerseDocs send our documents to a server to convert them to PDF?
No. PDF conversion runs inside the Dataverse plug-in sandbox with a rendering library embedded in the plug-in package. No OneDrive, Graph or hosted converter is involved.
What does telemetry contain?
Organisation id, tenant id, licence edition, template count and call counts by action and month. Never document content, template content, file names or field values. It can be switched off on the Licensing page, and with no endpoint configured nothing is sent.
Does the licence check call home?
No. Keys are signed and verified offline in the plug-in on every call. The licensing service is only contacted from the Licensing page when you buy or retrieve a key.
Which region are documents processed in?
The region of the Dataverse environment the plug-in runs in. Documents never leave that environment during generation.
Can VerseBlocks access our environment?
No. There is no VerseBlocks service account, connector or app registration in your tenant. Support is by email, with whatever you choose to share.

Something not covered? Write to admin@verseblocks.com and you will get a written answer. Pricing is on the pricing page.