Skip to main content
Version: 1.28 (Current)

Document Management System

Audience: Low-code Engineers, System/Security Administrators

Skill Prerequisites: Entities, Workflows, Automation, APIs

General Description​

The Document Management System (DMS) is a solution built on Plant an App 2.0 for public institutions. It covers the internal document work of an institution: the registry office, the document repository, cases, tasks, approval and signing, archiving and retention, reports, audit and functional administration. A REST API connects it to the institution's portal and business applications.

This page describes the reference DMS application on Plant an App 2.0.161 (November 2026). The Romanian names of its menus and actions are used, with the English meaning next to them. See Glossary.

What the DMS Covers​

The DMS is the internal document management application. The institution's external portal (its public website, citizen accounts and e-services) is a separate application. The DMS provides the server side the portal works with: document intake, case status, dispatch and petitions, through its Integration API.

Connected Services​

Some steps hand work to a specialised service. The DMS has the step, its statuses and its data; the service is connected per installation.

StepIn the DMSConnected service
OCRAn intake step with its own statuses, which fills in the text and the page count.An OCR engine. See Extending the DMS.
SigningA step of every outgoing flow. It records the signer, time and outcome, and the signed version becomes the official one.The user's own token through PDF AutoSigner, or an accredited signature provider.
Document generationHTML templates with placeholders, generated from the case page.Word templates with the Word add-on, and PDF files with the PDF Generator add-on.
Email intakeThe intake API files documents from any channel and never files the same reference twice.A mailbox, through the platform's IMAP and POP3 triggers.

At a Glance​

  • Registry: five registers with their own prefixes and yearly numbering, triage, duplicate checks, and corrections without renumbering.
  • Documents: one central repository, type-specific metadata, numbered versions with restore, and check-out.
  • Cases: generated case numbers, main and secondary documents, links between cases, and closing rules.
  • Approval: four versioned approval flows with sequential and parallel steps, deadlines, escalation and delegation.
  • Archive: retention rules with their legal basis, legal hold, and a nightly review that never deletes anything.
  • Audit and integration: an audit log of business actions, an integration log with retry, and a REST API for other systems.
  • No code: every type, register, flow, template and rule is maintained on a screen.

To grow the DMS further with platform features, see Extending the DMS.

Architecture​

The DMS keeps data, process logic and interface in separate layers:

LayerOn the site
Data24 DMS entities plus the system entities User, Role, Document and Image, in the platform database (the Built-in Database connector). The database is Microsoft SQL Server: the platform event log shows the DNN SqlDataProvider. DNN, the platform and the DMS share one database, through the single connection string SiteSqlServer. Uploaded files and the full-text index (Lucene) are on disk.
Process logic51 server-side workflows in the DMS namespace, 13 Automation jobs, and approval flows stored as data in Administrare > Fluxuri.
InterfacePages with grids, detail pages and action forms, under one top menu. The layout is responsive.
IntegrationThe REST endpoints the platform generates for every entity, plus four custom DMS endpoints. See Integration API.

The DMS runs on Plant an App 2.0.161, on .NET Framework 4.8 and DNN 10.2.1 under IIS on Windows. A reverse proxy, for example nginx on Linux, can terminate TLS in front of the web servers. Email goes through the Default SMTP connector.

Entities​

EntityWhat it holds
Document FileA document in the repository: title, type, direction, status, register and registration number, dates, sender and recipient, owner, organizational unit, channel, subject, keywords, page count, OCR status and text, signature status, check-out, legal hold, retention date, archiving date, and the document it duplicates.
Document VersionA numbered version of a document: date, author, file, change note, and status (Draft or Final).
Document TypeThe document types, each with a default register, classification level, retention rule and flow, and whether it must be signed.
Metadata Field, Metadata ValueThe metadata fields of each document type (Text, List, Number, Date, Yes/No) and their values on each document.
Registry, Registry EntryThe registers and their numbered entries.
CaseA case (lucrare or dosar): number, subject, type, status, priority, main document, requester, responsible user and organizational unit, dates, resolution and closing reason.
Case TypeThe case types, each with a classification code, default organizational unit, days until the due date, whether an outgoing document is required, a retention rule and a default flow.
Case DocumentLinks cases and documents, as main or secondary documents. A document can belong to several cases.
Case RelationLinks two cases: continuation of, reply to, associated with, or completion for.
Flow Definition, Flow Step, Flow RunA versioned approval flow, its ordered steps, and each running instance.
Work TaskA task created by a flow step, or by hand.
NotificationA notification for a user: type, channel (Aplicație for in-app, or E-mail), status (new, unread or read), and a link to the basket where the work is.
PartyPeople, companies and institutions: citizens, economic operators and public bodies.
Org UnitThe organizational structures, each with a head, a parent and an email address.
DelegationA transfer of tasks from one user to another for a period.
Retention RuleA retention period, the event that starts it, its legal basis, and whether destruction is restricted.
Classification LevelThe security classification: Public, Internal, Confidential.
Document TemplateA template with placeholders, used to generate documents.
Audit EventAn audit log entry: event type, object, user, time, result, IP address and details. More than 45 event types are used.
Integration LogEvery message to and from other systems, with its payloads, status and retry count.
Acasă (Home)
Registratură ── De înregistrat · Registre · Corespondență de ieșire
Documente
Lucrări ─────── Lucrările mele · Lucrările structurii · Nealocate · În întârziere
Sarcini ─────── De avizat · De semnat · Sarcinile mele
Arhivă ──────── De arhivat · Termene de păstrare
Rapoarte
Administrare ── Tipuri de documente · Tipuri de lucrări · Registre · Fluxuri · Șabloane ·
Structuri organizatorice · Reguli de păstrare · Niveluri de clasificare ·
Parteneri · Delegări
Audit ───────── Jurnal de integrare · Operațiuni cu erori
Configuration (Plant an App administration; super users only)
Account menu ── Profile & preferences · Privacy · Sign out

A full-text search box is in the header and on the home page.

Roles and Users​

Roles​

RoleWhat they do
RegistratorReceives correspondence, checks its metadata, registers it and sends it to the right structure.
FuncționarWorks on the cases assigned to them and drafts replies.
CoordonatorHeads a structure: assigns cases, sets deadlines and follows delays. Receives escalations.
AvizatorReviews: approves, rejects with a reason, or returns for completion.
SemnatarSigns the documents within their competence.
ArhivarArchives closed cases and applies retention rules.
AuditorReads history and reports, without changing operational data.
Administrator funcționalManages types, nomenclatures, flows, templates and registers.
IntegrareThe service account svc.integrare, used by the portal and the institution's other applications. Never give it to a person.

These are ordinary platform roles. The platform's own roles are there too: Admins, Managers, Citizen Developers, Low-Code Engineer, All Users and Users.

Organizational Structures​

The structures are kept in Administrare > Structuri organizatorice: a general directorate at the top, with directorates, services, regional directorates and local offices under it. Each structure has a code, a type, a head, a parent and an email address.

Screens​

Sign-In​

Sign-in page

Users sign in with their email and password, and can reset their password with Forgot Password? or in Profile & preferences. A second factor and single sign-on come from an OpenID Connect identity provider. See Extending the DMS. Every sign-in is written to the platform event log, in Configuration > Logs, with the user, time and IP address. The session lasts 60 minutes by default.

Home​

Home page

Acasă shows the signed-in user's baskets:

BasketWhat's in it
Sarcinile meleMy open tasks.
Notificările meleMy notifications.
Lucrările mele în lucruMy cases in progress.
Lucrările mele în întârziereMy overdue cases.
De înregistrat la registraturăDocuments waiting to be registered.

Registry​

PageWhat it does
De înregistratTwo grids: documents received but not yet classified, and indexed documents waiting to be registered. Columns include title, status, type, direction, sender, structure, channel, date received, OCR status, external number and proposed register. Row actions: OCR, Triază (triage) and Triază din nou.
RegistreAll register entries, with number, register, year, date, direction, document, subject, counterparty, who registered it and status. An entry can be rectified, with a new subject, external number or structure and a mandatory reason, or cancelled, with a mandatory reason and optionally cancelling the document too. Entries are never renumbered.
Corespondență de ieșireOutgoing documents, with registration number, recipient, dispatch channel, register, signature status and dispatch result.

Registers are set up per institution. For example:

RegisterCodeDirectionNumberingPrefixRestarts every year
Registrul general de intrareRGIIncomingInstitution-wideIN/Yes
Registrul general de ieșireRGEOutgoingInstitution-wideOUT/Yes
Registrul de corespondență internăRCIInternalInstitution-wideINT/Yes
Registrul special al autorizațiilorRSAOutgoingPer structureAUT/Yes
Registrul de petiții și sesizăriRPTIncomingInstitution-widePET/Yes

Registration numbers look like IN/1427/2026.

Documents arrive through a channel: Poștă (post), Curier (courier), E-mail, Portal, Ghișeu (front desk), Scanare (scanning), Intern (internal) or Sistem extern (external system).

Documents​

Documents repository

  • Depozitul de documente is the central repository. You can filter it by direction, type, status, registration number and date, sender, recipient, structure, channel, OCR status and signature status, and add, edit or delete documents.
  • Căutare după metadate searches the type-specific metadata values, such as an EORI code, a tax ID (CUI) or a bonded warehouse code.

Document detail

The document page has these sections:

SectionWhat it does
Type-specific metadataThe fields defined for the document's type, each marked Completat or Necompletat. Values are checked against the field's type: number, date (dd.mm.yyyy), list value or yes/no.
VersionsThe numbered versions, with date, author, file, change note, status (Draft or Final) and whether the version is the official one. Restaurează restores a version by creating a new one, so history is never rewritten. The signed version stays the official one.
Check-outScoate pentru modificare locks the document, so only that user can upload or restore versions. Eliberează fără versiune nouă releases it, and uploading a new version releases it too. The holder shows in Checked Out By.
TriageChoose the destination structure, accept a probable duplicate, or reject the document with a reason.
RegisterChoose the register and the structure, and add notes.
Open caseCreate a case from the document: case type, priority, subject, responsible person and structure.
DispatchThe outgoing register, dispatch channel, result (sent or failed) and the provider's reference, such as an AWB or a message ID.
DetailsAll the document's fields, including OCR text, signature status, legal hold and retention date.

A document goes through these statuses: Primit, De indexat, Înregistrat, În revizuire, Semnat, Transmis, Arhivat, or Anulat if it's cancelled. Its OCR status is Neprocesat, În procesare, De verificat, Acceptat or Cu eroare.

Cases​

PageWhat it shows
LucrăriAll cases, filtered by status, type, priority, requester, responsible user and structure, opening date and due date.
Lucrările meleOpen cases assigned to me.
Lucrările structuriiCases of the structures I head.
NealocateCases with no responsible person.
În întârziereCases past their due date.

Case numbers are built from the classification code, the structure code, the year and a counter, for example II.A.3-SAA-2026-0003. A case is Nou, În lucru, În așteptare, În avizare, Soluționat, Închis or Arhivat.

Case detail

Action on the case pageWhat it does
RepartizeazăAssigns a responsible user or structure, with a note.
ReatribuieReassigns the case. A reason is mandatory, and both the old and the new holder are notified.
Pornește fluxulStarts the case type's default flow, or a chosen one.
Generează documentulGenerates a document from a template, with a title.
Leagă lucrărileLinks the case to another one: continuation of, reply to, associated with, or completion for.
Închide lucrareaCloses the case with a resolution and a reason: Soluționată favorabil, Soluționată cu măsuri, Respinsă motivat or Clasată.

A case can't be closed while it has no main document, a mandatory task is open, a required outgoing document is missing, or no resolution is given. An authorized exception, with a mandatory reason, overrides these checks.

Case types are set up per institution. For example:

Case typeClassification codeDefault structureDays to due dateNeeds an outgoing documentRetentionDefault flow
Autorizare antrepozit fiscal de accizeII.A.3SAA60Yes10 yearsAutorizare accize
Atribuire cod EORIII.B.1SEORI10Yes10 yearsAvizare document de ieșire
Scutire de taxe vamaleIII.C.2DAPV30Yes10 yearsAvizare document de ieșire
Soluționare petițieI.D.1DJSC30Yes3 yearsSoluționare petiție
Corespondență internăI.A.5DGV15No5 yearsConsultare internă
Control ulteriorIV.A.1DSCV90Yes30 yearsAvizare document de ieșire
Autorizare regim vamal specialII.A.7DAPV45Yes10 yearsAutorizare accize

Tasks​

Tasks to approve

PageWhat it shows
SarciniAll tasks, with type, status, case, document, assignee, priority, due date and outcome.
De avizatOpen approval tasks, with a one-click Aprobă button.
De semnatOpen signing tasks, with a one-click Semnează button.
Sarcinile meleMy tasks and the tasks delegated to me.

On the task page, the assignee chooses Aprobă, Returnează, Respinge or Semnează, with a justification. Returning and rejecting need one. A task is De preluat, În lucru, Finalizată, Returnată, Respinsă or Anulată. Task types include Verificare, Avizare, Semnare, Transmitere, Repartizare, Analiză, Redactare, Aprobare, Decizie, Consultare, Înregistrare and Arhivare.

Archive​

  • De arhivat lists closed cases not yet archived, with an Arhivează button. Archiving stamps the case and its documents, and computes each document's retention date from the retention rule. It's refused if a document is under legal hold. Documents shared with a case that's still open are skipped until that case closes.
  • Termene de păstrare lists documents with a retention date, the legal hold flag and its reason, such as a court case that blocks destruction, and a Revizuiește termenele button.

Retention rules come from the institution's archival schedule. For example:

RuleCodeApplies toStarts atYearsLegal basisDestruction restricted
Păstrare permanentă — acte administrativeRET-PDocumentCase closure100Legea 16/1996 art. 7, 13Yes
Retenție 10 ani — autorizații și deciziiRET-10DocumentAuthorization expiry10Reg. (UE) 952/2013 art. 51(1)No
Retenție 5 ani — corespondență curentăRET-5DocumentCase closure5Archival nomenclature, pos. 12No
Retenție 3 ani — petiții și sesizăriRET-3DocumentPetition resolution3O.G. 27/2002 art. 13No
Retenție 30 ani — dosare de control ulteriorRET-30FileCase closure30Legea 16/1996 art. 13(2); Legea 207/2015 art. 25No

The daily retention job only flags documents for the archivist to review, with an audit event and a notification. It never deletes anything.

Reports​

Reports

Rapoarte has six predefined reports, as tables with sortable columns and paging:

ReportWhat it shows
Volum documenteDocument volume by date, number, type, direction, channel, structure, register and status.
Dosare pe stare și responsabilCases by status and responsible person.
Întârzieri și durate pe pasDelays and durations per flow step: started, completed, escalated, outcome.
Activitate de registraturăRegistry activity: active, corrected and cancelled entries.
Avizare și semnareApproval and signing decisions, by reviewer and signer.
Erori de integrareIntegration errors.

Reports have no charts and no export, and users can't build their own. Administration grids have an Export Excel button.

Administration​

Every nomenclature is maintained on a screen, without code:

PageWhat it holds
Tipuri de documente11 document types (Cerere, Adresă de răspuns, Anexă, Adresă, Referat, Aviz, Decizie, Autorizație, E-mail, Proces-verbal, Petiție), each with a code, category, default register, classification level, retention rule and flow, and whether it must be signed. A second grid defines the metadata fields of each type: 13 fields for Cerere, Petiție, Proces-verbal, Decizie and Autorizație, of type Text, List, Number or Date, each with a mandatory flag, an order, a help text and an active flag. Adding or changing a field updates the existing documents.
Tipuri de lucrăriThe 7 case types. See Cases.
RegistreThe 5 registers, with their next number and current year. See Registry.
FluxuriThe approval flows. See Approval Flows.
Șabloane4 templates: Adresă de răspuns către solicitant (TPL-ADR 1.2), Decizie de autorizare antrepozit fiscal (TPL-DEC 2.0), Referat de specialitate (TPL-REF 1.0) and Invitație la completarea documentației (TPL-INV 1.1). They produce HTML, with placeholders such as [Case:CaseNumber], [Party:Name], [DocumentFile:RegistrationNumber], [OrgUnit:Name], [User:DisplayName] and [Today]. Generation stops if a placeholder in the template has no value.
Structuri organizatoriceThe 12 structures. See Organizational Structures.
Reguli de păstrareThe 5 retention rules. See Archive.
Niveluri de clasificarePublic (1), Intern (2) and Confidențial (3), described with reference to Legea 544/2001 and need-to-know access.
ParteneriParties (people, companies and institutions), each with a tax ID (CUI) or personal number (CNP), email, phone, locality and county.
DelegăriDelegations: holder, delegate, period, structure, scope (Tasks, Approval, Case handling or All tasks) and reason. A delegation is Programată, Activă, Expirată or Revocată. Delegations expire on their own and can be revoked early.

Delegations

The Administrare page also has a Reindexează căutarea button that rebuilds the full-text index.

Audit​

Audit log

  • Evenimente de audit lists the audit events. Event types include Creare, Modificare, Procesare OCR, Rezervare (check-out), Căutare, Autentificare, status changes, assignments and dispatch. Each event records the user, time, object, linked document or case, result (Succes, Eșec or Excepție), IP address and details.
  • Jurnal de integrare has every integration message, with system, direction, operation, status, external reference, linked document, retry count, error message, and the full request and response.
  • Operațiuni cu erori lists failed integration operations, with a Reia operațiunile eșuate (retry) button.

Search results

Full-text search covers documents, including their OCR text, cases, tasks, register entries, metadata values, parties and templates. Results show snippets and can be filtered by object type, for example Case 4, DocumentFile 5, RegistryEntry 1, MetadataValue 5, Party 1 for "tutun". The index is rebuilt every night and on demand. See Search.

How search behaves:

You search forResultsWhat it shows
antrepozit51A single word works.
antrepozit tutun15With several words, all of them must match.
"garanție bancară"4A phrase in quotes finds the exact phrase.
RO21547890, IN/1427/20261, 3Identifiers, such as tax IDs and registration numbers, are found as written.

Search matches whole words: AND, OR and - are read as ordinary words, and wildcards such as antrep* aren't used.

A search takes 0.02–0.04 s once warm. The first search after a pause took 4.7 s.

Configuration​

Super users have the Plant an App administration area, Configuration: Dashboard, General settings, Roles, Users, Pages, Files, SQL Console, Entities, Connectors, Workflows, APIs, Automation, Tokens, User Guides, Search, Updates, Logs and Version Control. That's where entities, server workflows, APIs and scheduled jobs are built and changed, without deploying code.

Phone Layout​

Home page on a phone

On a phone-sized screen, the top menu collapses into a menu button, forms stack vertically and text stays readable. The editing side bar shows only to platform administrators. Users can also work in the Plant an App mobile app.

Processes​

Incoming Correspondence​

  1. Intake. A document arrives at the front desk, by scanning, post, email, the portal or another application. Other systems call POST /api/dms/documents/intake. Intake finds the party, checks for duplicates, first by external number and then by sender, subject and date, creates the document and writes the integration log. It can also register the document right away. Sending the same external reference again never creates a second document or number.
  2. OCR. The OCR step fills in the OCR text, page count and OCR status, from the OCR engine connected to it. See Connected Services.
  3. Triage (Triază). The mandatory metadata is checked, possible duplicates are flagged, and the destination structure is set. The document moves from Primit to De indexat. A file that can't be used can be rejected, with a reason.
  4. Registration (Înregistrează). The next number is taken from the chosen register in a single step, so two documents never get the same number. The number, date and register are written on the document, and a register entry and an audit event are created. Registration is refused while mandatory metadata is missing.
  5. Opening a case (Deschide lucrarea). The subject, requester, classification and structure come from the document, the case number is generated, and the due date comes from the case type. The document becomes the case's main document and moves to În revizuire.

Case Handling and Approval​

  1. The coordinator assigns the case, or it waits in Nealocate. A reassignment needs a reason.
  2. The officer starts the flow. The first step's tasks are created for the step's user or role and appear in their baskets.
  3. Each participant decides: Aprobă, Returnează, Respinge or Semnează. Return goes back one step and reject goes back to the first step. Both need a justification.
  4. Parallel steps, which share an order number, create one task each. If they're all mandatory, all of them must finish. If none is mandatory, the first one to finish completes the group and the others are cancelled.
  5. The officer generates the outgoing document from a template. Its versions are kept, and it's checked out while it's edited.
  6. The signer signs. The signature is recorded on the document, and the signed version becomes the official one. See Connected Services. A refusal must be justified and doesn't complete the task.
  7. The registry dispatches the outgoing document, with a number from the outgoing register, a channel and a result. Dispatch is refused until approval and signing are complete. Delivery providers can confirm delivery through POST /api/dms/dispatch/callback.
  8. The officer closes the case with a resolution and a reason.

Archiving and Retention​

  1. Closed cases appear in De arhivat, where the archivist archives them.
  2. Each document's retention date is computed from the case type's retention rule.
  3. A legal hold blocks archiving and destruction.
  4. Every night, the retention job flags documents whose retention date has passed, for the archivist to review.

Deadlines, Escalation and Delegation​

JobTimeWhat it does
Daily Task Deadlines05:30Notifies the holders of tasks that are nearly due, and raises overdue tasks to priority Urgentă. At most one notification per task, type and day.
Daily Task Escalation05:45Escalates each overdue task once, to the head of the task's structure, or of the case's structure.
Daily Delegation Expiry03:10Starts scheduled delegations and ends expired ones, with an audit event.

Delegation doesn't widen the delegate's rights. Tasks stay assigned to the holder and appear in the delegate's basket, and the platform still checks the delegate's own permissions.

Petitions​

Petitions use the same features:

  • a case type, Soluționare petiție, with classification code I.D.1;
  • their own register, Registrul de petiții și sesizări (PET/);
  • a 30-day default deadline;
  • their own metadata: petitioner type and legal response deadline;
  • their own flow: assignment, analysis, drafting the reply, approval;
  • a 3-year retention rule, based on O.G. 27/2002.

A petition can be closed as Clasată (filed). Misdirected correspondence can be forwarded with an outgoing Adresă de înaintare.

Approval Flows​

Approval flows are data. A flow definition has a code, a version, a status and a start date, and an ordered list of steps. Each step has a role, a number of days, and says whether it's mandatory and whether the reviewer can reject or return. A new version is a new definition with the same code. Running cases continue on the version they started with: for example, Avizare document de ieșire version 1 is Înlocuit and version 2 is Activ.

Avizare document de ieșire​

Approving an outgoing document (AVIZ-IESIRE, version 2):

OrderStepRoleDaysCan rejectCan return
1Verificare document de ieșireFuncționar2NoYes
2Avizare document de ieșireAvizator3YesYes
3Semnare document de ieșireSemnatar2YesYes
4Transmitere document de ieșireRegistrator1NoNo

Soluționare petiție​

Answering a petition (PETITIE, version 1):

OrderStepRoleDaysCan rejectCan return
1Repartizare petițieCoordonator1NoNo
2Analiza petițieiFuncționar10NoYes
3Redactare răspuns la petițieFuncționar5NoYes
4Aprobare răspuns la petițieCoordonator3YesYes

Autorizare accize​

An excise authorization, with two mandatory approvals in parallel (ACCIZE, version 1):

OrderStepRoleDaysCan rejectCan return
1Verificare documentație accizeFuncționar3YesYes
2Aviz juridic accizeAvizator5YesYes
2Aviz economic accizeCoordonator5YesYes
3Decizie de autorizare accizeSemnatar3YesYes

Consultare internă​

An internal consultation, with two optional consultations in parallel, where the first answer is enough (CONSULTARE, version 1):

OrderStepRoleDaysMandatory
1Inițiere consultare internăFuncționar1Yes
2Consultare structura juridicăAvizator4No
2Consultare structura economicăCoordonator4No
3Concluzia consultăriiCoordonator2Yes

Server Workflows and Automation​

Server Workflows​

The DMS logic is in about 50 server workflows in Configuration > Workflows, in the DMS namespace: intake and registry, documents and versions, cases, flows and tasks, deadlines, delegation and retention, audit, notifications and search.

Automation Jobs​

The Automation jobs are in Configuration > Automation:

JobRuns whenWhat it does
On Document Status Change, On Case Status Change, On Work Task Status ChangeA status changes.Writes an audit event.
On Document File UploadA file is uploaded.Creates a new version.
On Document Type Set, On Metadata Field ChangeA document gets a type, or a metadata field changes.Adds or applies the type's metadata fields.
Daily Task Deadlines05:30See Deadlines, Escalation and Delegation.
Daily Task Escalation05:45Same.
Daily Delegation Expiry03:10Same.
Retry Integration Errors03:30Retries failed integration messages.
Daily Retention Review04:20Flags documents whose retention date has passed.
Reindexare nocturnăNightlyRebuilds the search index.
Roll Registries To New YearYearlyRestarts register numbering.

Integration API​

The APIs are in Configuration > APIs. See APIs.

DMS Endpoints​

MethodURLWhat it does
POST/api/dms/documents/intakeReceives a document from the portal, the email flow or another application, and can register it. Calls with the same external reference return the same document. Returns the status, document ID, registration number and the ID of a duplicate, if one was found.
POST/api/dms/documents/attachmentAdds a new version to an existing document. The reference application records the version's metadata; storing the file content from the API is set up per installation.
GET/api/dms/cases/statusReturns a case's number, status, due date, resolution and the main document's registration number, by case number, ID or external reference.
POST/api/dms/dispatch/callbackRecords the delivery result from post, courier, email or the portal.

Besides these, the platform generates POST, GET, PUT and DELETE endpoints for each of the 24 DMS entities, such as GET /api/Cases and GET /api/FlowSteps?RowLimit=200. They follow the platform's role permissions, without code, and return JSON.

An intake request, from the integration log:

{
"Title": "Cerere de autorizare ca expeditor agreat pentru regimul de tranzit unional — S.C. Euro Cargo Express S.R.L.",
"DocumentTypeName": "Cerere",
"RegistryCode": "",
"ExternalNumber": "PT-2026-58120",
"DocumentDate": "2026-11-03",
"SubjectText": "Cerere de acordare a statutului de expeditor agreat …",
"Keywords": "tranzit unional; expeditor agreat; garanție globală",
"Channel": "Portal",
"PartyName": "S.C. Euro Cargo Express S.R.L.",
"PartyIdentifier": "RO29184736",
"PartyEmail": "vama@eurocargo.example"
}

Its response is {"status":"Creat","documentFileId":"57","registrationNumber":"","duplicateOf":""}.

A case status response, for GET /api/dms/cases/status?CaseNumber=II.A.3-SAA-2026-0003, which answered in 74–182 ms:

{
"Found": "da",
"CaseIdOut": "29",
"CaseNumberOut": "II.A.3-SAA-2026-0003",
"Status": "În avizare",
"Subject": "Decizie de autorizare antrepozit fiscal — S.C. Tutun Distribuție România S.R.L.",
"DueDate": "1/6/2027 12:00:00 AM",
"Resolution": "",
"ClosedAt": "",
"RegistrationNumber": "",
"HttpStatus": "200",
"Error": ""
}

How the API Behaves​

CheckResult
A call without a session, from another domainHTTP 400, "Current domain is not allowed by this API method".
A call without a session, from the same domainHTTP 401, "Current request is not authorized to invoke method …".
A signed-in read of an entity endpointHTTP 200 in 37–55 ms. The RowLimit parameter is mandatory.
Response formatJSON only, no XML.
VersionsThe URLs have no version number.
Repeated intakeThe same external reference returns HTTP 200 with the same document.
Refused callsEach refused call without a session is written to the platform event log as a "General Exception", which fills the log.

Security and Performance​

AreaHow the DMS handles it
HTTPShttp:// redirects to HTTPS. TLS 1.3 and TLS 1.2 are offered; TLS 1.0, TLS 1.1 and SSL are refused. See Settings for Production.
Response headersX-Frame-Options: SAMEORIGIN and X-XSS-Protection. HSTS and a Content-Security-Policy are set for production.
Folders and unknown addresses/Portals/ isn't listed, and unknown addresses return a 404 page.
Access without signing inPages redirect to the sign-in page, and APIs return 401.
Sign-inEmail and password, or single sign-on through an OpenID Connect identity provider, which also adds the second factor. Passkeys are optional.
Account lockoutASP.NET membership locks an account after failed attempts: 5 in 10 minutes by default, set in web.config.
Sign-in loggingEvery sign-in is in the platform event log, with the user and IP address, in Configuration > Logs.
CookiesCookies, including the authentication cookie .DOTNETNUKE, are HttpOnly and SameSite=Lax; production adds the Secure flag.
DatabaseMicrosoft SQL Server, one database for DNN, the platform and the DMS.

Page load times on a desktop, for reading:

PageServer responseDOM readyLoad eventAll requests finished
Home146 ms1.10 s1.13 s2.32 s
Documents105 ms0.47 s0.64 s1.50 s
Reports125 ms0.32 s0.63 s1.46 s
Document detail158 ms0.40 s0.41 s1.57 s
Case detail177 ms0.42 s0.43 s1.53 s
Tasks to approve165 ms0.40 s0.84 s2.17 s
Audit170 ms0.53 s1.02 s1.94 s
Delegations110 ms0.37 s0.40 s1.40 s

Every page can be used well within 2 seconds. The last background requests on the busiest pages finish at 2.2–2.3 s. The cases/status API answers in under 0.2 s.

Accessibility. There's a "Skip to main content" link, and grid headers are buttons with labels. Mark the pages with their content language (lang="ro"). See Accessibility.

Language. The interface is in Romanian, with correct diacritics. Some platform labels on detail pages and controls, such as "Edit", "Details" and "Items per page", are translated per installation. See Languages.

Extending the DMS​

The DMS is built only from platform features, so it grows the same way: by adding add-ons, connectors and workflows, without code.

Next Steps by Area​

AreaIn the DMS todayTo take it further
OCR and captureOCR is a step of intake, with its own statuses (Neprocesat to Acceptat), and fills in the text and page count. The Scanare channel is ready for scanned documents.Connect an OCR engine to the OCR step, so it reads the scanned file instead of composing the text. Add barcodes with the Barcode Generator add-on.
SigningSigning is a step of every outgoing flow. It records the signer, time and outcome, and the signed version becomes the official one.Sign PDFs with the user's own token with the PDF AutoSigner add-on, or connect an accredited signature provider.
Document generationHTML templates with placeholders for the case, party, document, structure and user, generated from the case page.Fill in Word templates with the Word add-on, and produce PDF files with the PDF Generator add-on.
Email intakeThe intake API files documents from any channel, checks for duplicates, and never files the same reference twice.File messages from a mailbox with the platform's IMAP and POP3 triggers, which pass the attachments to the intake workflow.
NotificationsIn-app notifications on assignment, reassignment, deadlines, escalation and delegation, each with a link to the right basket. Notifications already have an E-mail channel.Send them by email through the Default SMTP connector, which is already set up.
Sign-inEmail and password, password reset, and account lockout after failed attempts.Sign in with Active Directory or LDAP accounts, with groups mapped to roles, with the Active Directory add-on or OpenLDAP. Add a second factor through an OpenID Connect identity provider.
Approval flowsFour versioned flows with sequential and parallel steps, deadlines, return and reject, maintained in Administrare > Fluxuri.Draw processes as diagrams with BPMN 2.0 workflows, with user tasks for the people in them.
TasksOne list per user, with delegated tasks, due dates, in-app reminders and escalation to the head of the structure.Use Built-in Tasks and My Tasks, which add email notifications and escalation steps.
AuditEvery business action, with the user, time, object and result. Status and assignment changes show the old and new value.Turn on Record History on the DMS entities, to record the old and new value of every field.
PermissionsRole permissions per entity, with separate view, add, edit and delete rights, and classification levels on documents.Give records an owner with Record Owners and Can Read. Add more classification levels on the same screen.
ReportsSix reports on volumes, cases, durations per step, registry activity, decisions and integration errors. Administration grids export to Excel.Create Excel files from any list or query with the Excel add-on, and add dashboards for managers.
MobileA responsive layout that works on phones.Connect phones with the Plant an App mobile app, add an approve and reject list for tasks, and send push notifications.
LanguagesA Romanian interface with correct diacritics.Translate the remaining platform labels, and mark the pages as Romanian (lang="ro").

Settings for Production​

Before going live, set up the web server and the site for production:

  1. Turn on HSTS (Strict-Transport-Security: max-age=31536000; includeSubDomains).
  2. Hide the server version (server_tokens off; in nginx), and add a Content-Security-Policy.
  3. Set the Secure flag on all cookies, especially the authentication cookie .DOTNETNUKE.
  4. Set the session timeout your security policy asks for. It's 60 minutes by default.
  5. Turn off public registration on the sign-in page, since the DMS is for internal users.
  6. Replace the privacy page with the institution's own text, and add a cookie consent banner.
  7. Make the audit log and the registers append-only for every role, the super user included.
  8. Audit changes to the nomenclatures, such as document and case types, flows, templates, registers and retention rules, for example with Record History.
  9. Log refused API calls as warnings, not as "General Exception", so the platform log stays easy to read.

The institution's external portal and its interoperability infrastructure (message bus, container platform, clustering) are delivered as separate applications. The DMS already has the integration contract they connect to. See Integration API.

Page Index​

AreaURL path
Sign-in/paa-login
Home/
Registry: to register/registratura/de-inregistrat
Registry: registers/registratura/registre
Registry: outgoing/registratura/iesiri
Documents/documente
Document page/Document-Files/Detail/DocumentFileId/{id}
Cases: all, mine, my structure, unassigned, overdue/lucrari, /lucrari/ale-mele, /lucrari/structura, /lucrari/nealocate, /lucrari/intarziate
Case page/Cases/Detail?CaseId={id}
Tasks: all, to approve, to sign, mine/sarcini, /sarcini/de-avizat, /sarcini/de-semnat, /sarcini/ale-mele
Task page/Work-Tasks/Detail/WorkTaskId/{id}
Archive: to archive, retention/arhiva/de-arhivat, /arhiva/retentie
Reports/rapoarte
Administration/administrare/tipuri-documente, /tipuri-lucrari, /registre, /fluxuri, /sabloane, /structuri, /reguli-pastrare, /clasificari, /parteneri, /delegari
Audit: events, integration log, errors/audit, /audit/integrari, /audit/erori
Search results/Search-Results?sb-search={term}
Platform configuration/Configuration
Profile/User-Profile

Glossary​

RomanianEnglish
RegistraturăRegistry office
Registru / poziție de registruRegister / register entry
De înregistratTo be registered
Corespondență de ieșireOutgoing correspondence
Lucrare / dosarCase / file
SarcinăTask
Avizare / a avizaReview and approval / to approve
SemnareSigning
Repartizare / reatribuireAssignment / reassignment
TriazăTriage
ExpediazăDispatch
Scoate pentru modificare / elibereazăCheck out / release
TermenDue date
Termen de păstrareRetention period
Reținere legalăLegal hold
Structură organizatoricăOrganizational structure
Partener / parteParty
DelegareDelegation
ȘablonTemplate
FluxFlow
PetițiePetition
ClasatăFiled (closed without further action)
Excepție autorizatăAuthorized exception
Jurnal de integrareIntegration log
Operațiuni cu eroriFailed operations

Revised 11/14/2026