Case management for Nextcloud — configurable workflows, deadlines, and formal decisions
Procest brings structured case management (zaakgericht werken) natively into Nextcloud. Define case types with custom status lifecycles, track progress and deadlines, assign roles, and record formal decisions — all within a clean, intuitive interface that integrates naturally with the rest of your Nextcloud workspace.
It pairs with Pipelinq to form a complete intake-to-resolution workflow: Pipelinq handles the customer-facing CRM side, Procest handles the internal case processing.
Requires: OpenRegister — all data is stored as OpenRegister objects (no own database tables).
![]() |
![]() |
![]() |
| Dashboard | Cases | Admin — Case Types |
- Configurable Workflows — Define case types with allowed statuses, deadline durations, required documents, and custom properties
- Status Lifecycle — Design the exact sequence of statuses a case must pass through
- Default Values — Set default confidentiality level, assigned roles, and SLA targets per case type
- Admin Panel — Manage all case types from a dedicated admin settings view
- Case Lifecycle — Full CRUD with status transitions, validation rules, and audit trail
- Status Timeline — Visual progress indicator showing all lifecycle phases and current position
- Automatic Deadlines — Deadlines calculated from case type duration with live countdown (days remaining / overdue alerts)
- Quick Status Changes — Change status directly from the case list without opening the full detail view
- Task Assignment — Create and assign tasks to team members with BPMN-style lifecycle (available → active → completed)
- Formal Decisions — Record official decisions (besluiten) with outcomes, motivation, and effective dates
- Document Checklists — Track required documents at each status stage with upload verification
- Participant Roles — Assign the right people to the right roles: handler, advisor, decision-maker
- My Work Dashboard — Personal overview of all assigned cases, pending tasks, and overdue items
- KPI Cards — At-a-glance counts of open cases, overdue deadlines, pending tasks, and recent activity
- Activity Timeline — Complete history of every change made to a case, with timestamps and responsible party
- Unified Search — Deep links for cases and tasks in Nextcloud's global search
- Pipelinq Bridge — Receive requests handed off from Pipelinq CRM as new cases
- Sub-cases — Break complex cases into parent-child hierarchies for structured processing
graph TD
A[Vue 2 Frontend] -->|REST API| B[OpenRegister API]
B --> C[(PostgreSQL JSON store)]
A --> D[Nextcloud Activity]
A --> E[Nextcloud Search]
F[Pipelinq] -->|request handoff| A
| Object | Description | CMMN 1.1 | ZGW Mapping |
|---|---|---|---|
| Case | Formal process with lifecycle | CasePlanModel |
Zaak |
| Case Type | Configurable case template | CaseDefinition |
ZaakType |
| Task | Work item within a case | HumanTask |
— |
| Status | Lifecycle phase | Milestone |
Status |
| Role | Participant relationship | — | Rol |
| Result | Case outcome | — | Resultaat |
| Decision | Formal decision | — | Besluit |
Data standard: CMMN 1.1 (OMG Case Management Model and Notation) with Schema.org mapping and ZGW API compatibility.
procest/
├── appinfo/ # Nextcloud app manifest, routes, navigation
├── lib/ # PHP backend — controllers, services
├── src/ # Vue 2 frontend — components, Pinia stores, views
│ ├── components/ # Reusable UI components
│ ├── store/ # Pinia stores per entity (cases, caseTypes, tasks…)
│ └── views/ # Route-level views
├── docs/
│ ├── FEATURES.md # Full feature specification
│ ├── ARCHITECTURE.md
│ └── features/ # Per-feature documentation
├── img/ # App icons and screenshots
├── l10n/ # Translations (en, nl)
└── docusaurus/ # Product documentation site (procest.app)
| Dependency | Version |
|---|---|
| Nextcloud | 28 – 33 |
| PHP | 8.1+ |
| OpenRegister | latest |
- Go to Apps in your Nextcloud instance
- Search for Procest
- Click Download and enable
OpenRegister must be installed first. Install OpenRegister →
cd /var/www/html/custom_apps
git clone https://github.com/ConductionNL/procest.git
cd procest
npm install
npm run build
php occ app:enable procestdocker compose -f openregister/docker-compose.yml up -dcd procest
npm install
npm run dev # Watch mode
npm run build # Production build# PHP
composer phpcs # Check coding standards
composer cs:fix # Auto-fix issues
composer phpmd # Mess detection
composer phpmetrics # HTML metrics report
# Frontend
npm run lint # ESLint
npm run stylelint # CSS linting| Layer | Technology |
|---|---|
| Frontend | Vue 2.7, Pinia, @nextcloud/vue |
| Build | Webpack 5, @nextcloud/webpack-vue-config |
| Backend | PHP 8.1+, Nextcloud App Framework |
| Data | OpenRegister (PostgreSQL JSON objects) |
| UX | @conduction/nextcloud-vue |
| Quality | PHPCS, PHPMD, phpmetrics, ESLint, Stylelint |
Full documentation is available at procest.app
| Page | Description |
|---|---|
| Features | Complete feature specification |
| Architecture | Technical architecture and design decisions |
| Development | Developer setup and contribution guide |
- Data standard: CMMN 1.1 (OMG Case Management specification)
- Process standards: BPMN 2.0, DMN for task and decision logic
- Dutch interoperability: ZGW APIs (Zaken, Besluiten, Catalogi), RGBZ information model
- Accessibility: WCAG AA (Dutch government requirement)
- Authorization: RBAC via OpenRegister
- Audit trail: Full change history on all objects
- Localization: English and Dutch
- Pipelinq — CRM intake; hands off requests to Procest as new cases
- OpenRegister — Object storage layer (required dependency)
- OpenCatalogi — Application catalogue
AGPL-3.0-or-later
Built by Conduction — open-source software for Dutch government and public sector organizations.


