The digital personnel file is the most important use case of the DM module: every employee gets an identical, predefined folder structure per client in a document repository (usually Alfresco). The documents are visible in HR-Expert under the person's "Documents" tab and can additionally be exposed to end users through configurable partial views (action dm_folderExplorer) – for example a read-only view of one's own payslips.
Four building blocks work together:
DmRepository): the physical storage location. Two types: DB (storage in the Webdesk database) or CMIS_ALFRESCO (Alfresco via CMIS). A repository belongs to a client (or is client-less on single-client systems) and has an immutable root path – changing it later would make existing documents invisible.DmMetaStructure): the template of the folder structure. It is bound to an entity class (for the personnel file: HrPerson) and consists of a tree of meta folders.DmMetaFolder): one node of the template with name, description, folder name macro (Velocity) and permissions. The macro of the root meta folder produces the person-specific folder name, e.g. ${HrPerson.getPerson().getLastName()}_${HrPerson.getPerson().getFirstName()}. Child meta folders usually have fixed names ("Contracts", "Payroll", "Miscellaneous", ...).DmRepositoryMetaStructure): connects, per client, exactly one metadata structure with one repository and defines the parent folder path inside the repository.The full path of an employee folder is therefore:
repository root path + mapping parent folder path + macro result of the root meta folder + fixed subfolders
The person ↔ folder association is not stored as a path but as a persistent entity link. Every generated folder also remembers its originating meta folder – this is how the system recognizes system folders (generated from the template, neither renamable nor deletable by users) and distinguishes them from freely created user folders below them.
Under Repositories (dm_showRepositories / dm_editRepository): choose name, client and type. For CMIS_ALFRESCO:
Under Edit metadata structure (dm_editMetaDataStructure):
HrPerson. This binding cannot be changed afterwards.For new installations, the client setup wizard can create the Alfresco site, the repository, the mapping and the initial propagation in one pass.
Employee folders come into existence through three complementary mechanisms:
dm_folderExplorer configuration is opened – the structure is created on demand, and an incomplete structure is repaired automatically.propagateMetaStructure (or via the button in the structure editor): enforces the template for all entities of the mapped clients. Propagation creates missing folders, renames folders when the macro result has changed (e.g. after a person's name change), moves folders when the template hierarchy changed, and removes folders of deleted meta folders – the latter only if they no longer contain documents.The Documents tab on the person (available with licensed DM and WF modules) shows the folder tree on the left and the document table on the right:
When a person is deleted or historicized, the personnel file folder is handled as well: soft-delete (rename with a deletion suffix) on historicization, hard-delete on final deletion – unless prevented by the DM option "keep DM data when hard-deleting a person".
The configurable action dm_folderExplorer makes portions of the personnel file accessible in the Webdesk portal. There are two configuration types:
appCtx.getBean('HrPersonService').getPerson(entity) (the context provides entity = logged-in PoPerson, currentUser and appCtx).In addition there are the general options Read only (recommended for self-service views), Display folder tree by default and Default page size. The action offers breadcrumbs, upload (unless read-only), version management, display of linked entities and ZIP download of entire folders (folder permissions are respected).
For every configuration: the user sees their own portion – at runtime the root is resolved via the script and the metadata structure to the concrete folder of the user's own person, and created on demand if necessary.
How do payslips get into the personnel file? Through the PS module (action ps_editSalaryAccounting) combined with the DM module's split-PDF configuration:
dm_editSplitPdfConfiguration) describes how the collective PDF is split: start/end detection texts, a regular expression extracting the employee ID per page, and a Velocity expression for the file name of the individual documents (with documentIdentifier and referenceDate).Lohnzettel $year).Combined with a read-only dm_folderExplorer partial view on the payroll meta folder, the circle closes: upload the statement → split → distribute → each employee sees only their own payslips.
Two layers work together:
Every document download additionally passes a central check: the user's action permission, the folder permission (see above), and – for documents associated via entity links – module-specific authorization resolvers (e.g. for HR person documents, salary statements, travel expenses, workflow attachments). Without a matching rule, access is denied. This check is controlled by the DM option "document authorization enabled".
propagateMetaStructure job for the affected mapping – it adds missing folders without disturbing the structure. Since version 4.64 the dm_folderExplorer also repairs incomplete structures on access.bindFoldersToMetaStructure job links existing folder trees to a metadata structure (initially or repeatedly).convertAlfrescoObjectsToDmObjects job converts generic Alfresco folders/documents into DM-managed objects (with test and statistics functions).deleteDocumentsFromMetaFolders job deletes documents of a meta folder older than X years/months, logging to the deletion log.Related pages: Document Management Module (overview).