Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions docs/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,3 +143,31 @@ git push -u origin feature/my-feature

# Open a PR to development
```

## Local Mail Integration (Greenmail)

Procest's mail-driven flows (case intake from citizen emails, notifications to behandelaars) can be demoed locally against the [Greenmail](https://greenmail-mail-test.github.io/greenmail/) container that ships with the OpenRegister dev stack.

**Seed test data:**
```bash
bash ../openregister/docker/mail/seed-mail.sh
bash ../openregister/docker/mail/seed-cases.sh
```

`seed-mail.sh` sends 11 realistic Dutch case-management emails (omgevingsvergunning, kapvergunning, welstandsadvies, klachten, deadline-herinneringen) across 5 auto-created accounts.

`seed-cases.sh` creates matching procest cases (`ZK-2026-0142` dakkapel Kerkstraat 42, `ZK-2026-0034` kapvergunning Wilhelminastraat) + their caseTypes in the Procest register, so the OpenRegister mail sidebar can link incoming emails to existing cases.

**Configure the Nextcloud Mail app** (Settings → Mail → Add account → Manual):

| Setting | Value |
|---------|-------|
| IMAP host | `greenmail` (from container) or `localhost` (from host) |
| IMAP port | `3143` |
| SMTP host | same as IMAP |
| SMTP port | `3025` |
| Security | None |
| Username | email address (e.g. `behandelaar@test.local`) |
| Password | same as username |

Accounts created by the seed: `admin@test.local`, `behandelaar@test.local`, `coordinator@test.local`, `burger@test.local`, `leverancier@test.local`.
19 changes: 15 additions & 4 deletions l10n/en.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ OC.L10N.register(
"Add document" : "Add document",
"Add note" : "Add note",
"All" : "All",
"All cases active" : "All cases active",
"All caught up!" : "All caught up!",
"All your items are completed" : "All your items are completed",
"Are you sure you want to delete this case?" : "Are you sure you want to delete this case?",
Expand All @@ -41,15 +42,14 @@ OC.L10N.register(
"Cannot publish:" : "Cannot publish:",
"Case" : "Case",
"Case Information" : "Case Information",
"Case Map" : "Case Map",
"Case Type" : "Case Type",
"Case Type Management" : "Case Type Management",
"Case Types" : "Case Types",
"Case created with type \" : "Case created with type \",
"Case handler" : "Case handler",
"Case schema" : "Case schema",
"Case sensitive" : "Case sensitive",
"Case type" : "Case type",
"Case type \" : "Case type \",
"Case type has expired (valid until {date})" : "Case type has expired (valid until {date})",
"Case type is not yet valid (valid from {date})" : "Case type is not yet valid (valid from {date})",
"Case type is required" : "Case type is required",
Expand All @@ -58,6 +58,7 @@ OC.L10N.register(
"Cases" : "Cases",
"Cases and tasks assigned to you will appear here" : "Cases and tasks assigned to you will appear here",
"Cases by Status" : "Cases by Status",
"Cases by status" : "Cases by status",
"Cases overview" : "Cases overview",
"Change status" : "Change status",
"Change status..." : "Change status...",
Expand All @@ -81,6 +82,7 @@ OC.L10N.register(
"Days elapsed" : "Days elapsed",
"Deadline" : "Deadline",
"Deadline & Timing" : "Deadline & Timing",
"Deadline Alerts" : "Deadline Alerts",
"Deadline extended from {old} to {new}. Reason: {reason}" : "Deadline extended from {old} to {new}. Reason: {reason}",
"Deadline: {date}" : "Deadline: {date}",
"Decision schema" : "Decision schema",
Expand Down Expand Up @@ -155,6 +157,7 @@ OC.L10N.register(
"Make decision" : "Make decision",
"Manage case types and their configurations" : "Manage case types and their configurations",
"Manage cases and workflows" : "Manage cases and workflows",
"Map" : "Map",
"Mapping saved successfully" : "Mapping saved successfully",
"Missing required fields: {fields}" : "Missing required fields: {fields}",
"Must be a valid ISO 8601 duration (e.g., P28D)" : "Must be a valid ISO 8601 duration (e.g., P28D)",
Expand All @@ -175,7 +178,9 @@ OC.L10N.register(
"No cases found" : "No cases found",
"No deadline" : "No deadline",
"No file content received." : "No file content received.",
"No SLA targets" : "No SLA targets",
"No items assigned to you" : "No items assigned to you",
"No items found" : "No items found",
"No mapping configured for %s" : "No mapping configured for %s",
"No open cases" : "No open cases",
"No overdue cases" : "No overdue cases",
Expand All @@ -185,6 +190,7 @@ OC.L10N.register(
"No result recorded yet" : "No result recorded yet",
"No settings available yet" : "No settings available yet",
"No status types defined. Add at least one to publish this case type." : "No status types defined. Add at least one to publish this case type.",
"No task reminders" : "No task reminders",
"No tasks found" : "No tasks found",
"No tasks yet" : "No tasks yet",
"No widgets configured" : "No widgets configured",
Expand All @@ -198,6 +204,7 @@ OC.L10N.register(
"Only locked documents may be edited." : "Only locked documents may be edited.",
"Only published case types can be set as default" : "Only published case types can be set as default",
"Open Cases" : "Open Cases",
"Open cases" : "Open cases",
"OpenRegister is required" : "OpenRegister is required",
"Optional description..." : "Optional description...",
"Order" : "Order",
Expand Down Expand Up @@ -253,6 +260,7 @@ OC.L10N.register(
"Role type" : "Role type",
"Save" : "Save",
"Save the case type first before adding status types." : "Save the case type first before adding status types.",
"SLA Compliance" : "SLA Compliance",
"Saved successfully" : "Saved successfully",
"Schema ID" : "Schema ID",
"Secret" : "Secret",
Expand All @@ -269,13 +277,12 @@ OC.L10N.register(
"Source Register" : "Source Register",
"Source Schema" : "Source Schema",
"Stakeholder" : "Stakeholder",
"Stalled Cases" : "Stalled Cases",
"Start" : "Start",
"Start date" : "Start date",
"Started" : "Started",
"Status" : "Status",
"Status Timeline" : "Status Timeline",
"Status changed from \" : "Status changed from \",
"Status changed to \" : "Status changed to \",
"Status schema" : "Status schema",
"Status type" : "Status type",
"Status type name is required" : "Status type name is required",
Expand All @@ -284,6 +291,7 @@ OC.L10N.register(
"Subject" : "Subject",
"TASK" : "TASK",
"Task" : "Task",
"Task Due Reminders" : "Task Due Reminders",
"Task Information" : "Task Information",
"Task schema" : "Task schema",
"Tasks" : "Tasks",
Expand Down Expand Up @@ -318,12 +326,15 @@ OC.L10N.register(
"Valid from" : "Valid from",
"Valid until" : "Valid until",
"Value Mappings (enum translations)" : "Value Mappings (enum translations)",
"View all" : "View all",
"View all activity" : "View all activity",
"View all deadline alerts" : "View all deadline alerts",
"View all my work" : "View all my work",
"View all overdue" : "View all overdue",
"View case" : "View case",
"View task" : "View task",
"Welcome to Procest! Get started by creating your first case or task using the buttons above." : "Welcome to Procest! Get started by creating your first case or task using the buttons above.",
"Work Queue" : "Work Queue",
"Welcome to Procest! Get started by creating your first case type in Settings." : "Welcome to Procest! Get started by creating your first case type in Settings.",
"When heeftAlleAutorisaties is false, autorisaties must be specified." : "When heeftAlleAutorisaties is false, autorisaties must be specified.",
"When heeftAlleAutorisaties is true, autorisaties must not be specified. When heeftAlleAutorisaties is false, autorisaties must be specified." : "When heeftAlleAutorisaties is true, autorisaties must not be specified. When heeftAlleAutorisaties is false, autorisaties must be specified.",
Expand Down
19 changes: 15 additions & 4 deletions l10n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"Add document": "Add document",
"Add note": "Add note",
"All": "All",
"All cases active": "All cases active",
"All caught up!": "All caught up!",
"All your items are completed": "All your items are completed",
"Are you sure you want to delete this case?": "Are you sure you want to delete this case?",
Expand All @@ -40,15 +41,14 @@
"Cannot publish:": "Cannot publish:",
"Case": "Case",
"Case Information": "Case Information",
"Case Map": "Case Map",
"Case Type": "Case Type",
"Case Type Management": "Case Type Management",
"Case Types": "Case Types",
"Case created with type \\": "Case created with type \\",
"Case handler": "Case handler",
"Case schema": "Case schema",
"Case sensitive": "Case sensitive",
"Case type": "Case type",
"Case type \\": "Case type \\",
"Case type has expired (valid until {date})": "Case type has expired (valid until {date})",
"Case type is not yet valid (valid from {date})": "Case type is not yet valid (valid from {date})",
"Case type is required": "Case type is required",
Expand All @@ -57,6 +57,7 @@
"Cases": "Cases",
"Cases and tasks assigned to you will appear here": "Cases and tasks assigned to you will appear here",
"Cases by Status": "Cases by Status",
"Cases by status": "Cases by status",
"Cases overview": "Cases overview",
"Change status": "Change status",
"Change status...": "Change status...",
Expand All @@ -80,6 +81,7 @@
"Days elapsed": "Days elapsed",
"Deadline": "Deadline",
"Deadline & Timing": "Deadline & Timing",
"Deadline Alerts": "Deadline Alerts",
"Deadline extended from {old} to {new}. Reason: {reason}": "Deadline extended from {old} to {new}. Reason: {reason}",
"Deadline: {date}": "Deadline: {date}",
"Decision schema": "Decision schema",
Expand Down Expand Up @@ -154,6 +156,7 @@
"Make decision": "Make decision",
"Manage case types and their configurations": "Manage case types and their configurations",
"Manage cases and workflows": "Manage cases and workflows",
"Map": "Map",
"Mapping saved successfully": "Mapping saved successfully",
"Missing required fields: {fields}": "Missing required fields: {fields}",
"Must be a valid ISO 8601 duration (e.g., P28D)": "Must be a valid ISO 8601 duration (e.g., P28D)",
Expand All @@ -174,7 +177,9 @@
"No cases found": "No cases found",
"No deadline": "No deadline",
"No file content received.": "No file content received.",
"No SLA targets": "No SLA targets",
"No items assigned to you": "No items assigned to you",
"No items found": "No items found",
"No mapping configured for %s": "No mapping configured for %s",
"No open cases": "No open cases",
"No overdue cases": "No overdue cases",
Expand All @@ -184,6 +189,7 @@
"No result recorded yet": "No result recorded yet",
"No settings available yet": "No settings available yet",
"No status types defined. Add at least one to publish this case type.": "No status types defined. Add at least one to publish this case type.",
"No task reminders": "No task reminders",
"No tasks found": "No tasks found",
"No tasks yet": "No tasks yet",
"No widgets configured": "No widgets configured",
Expand All @@ -197,6 +203,7 @@
"Only locked documents may be edited.": "Only locked documents may be edited.",
"Only published case types can be set as default": "Only published case types can be set as default",
"Open Cases": "Open Cases",
"Open cases": "Open cases",
"OpenRegister is required": "OpenRegister is required",
"Optional description...": "Optional description...",
"Order": "Order",
Expand Down Expand Up @@ -252,6 +259,7 @@
"Role type": "Role type",
"Save": "Save",
"Save the case type first before adding status types.": "Save the case type first before adding status types.",
"SLA Compliance": "SLA Compliance",
"Saved successfully": "Saved successfully",
"Schema ID": "Schema ID",
"Secret": "Secret",
Expand All @@ -268,13 +276,12 @@
"Source Register": "Source Register",
"Source Schema": "Source Schema",
"Stakeholder": "Stakeholder",
"Stalled Cases": "Stalled Cases",
"Start": "Start",
"Start date": "Start date",
"Started": "Started",
"Status": "Status",
"Status Timeline": "Status Timeline",
"Status changed from \\": "Status changed from \\",
"Status changed to \\": "Status changed to \\",
"Status schema": "Status schema",
"Status type": "Status type",
"Status type name is required": "Status type name is required",
Expand All @@ -283,6 +290,7 @@
"Subject": "Subject",
"TASK": "TASK",
"Task": "Task",
"Task Due Reminders": "Task Due Reminders",
"Task Information": "Task Information",
"Task schema": "Task schema",
"Tasks": "Tasks",
Expand Down Expand Up @@ -317,12 +325,15 @@
"Valid from": "Valid from",
"Valid until": "Valid until",
"Value Mappings (enum translations)": "Value Mappings (enum translations)",
"View all": "View all",
"View all activity": "View all activity",
"View all deadline alerts": "View all deadline alerts",
"View all my work": "View all my work",
"View all overdue": "View all overdue",
"View case": "View case",
"View task": "View task",
"Welcome to Procest! Get started by creating your first case or task using the buttons above.": "Welcome to Procest! Get started by creating your first case or task using the buttons above.",
"Work Queue": "Work Queue",
"Welcome to Procest! Get started by creating your first case type in Settings.": "Welcome to Procest! Get started by creating your first case type in Settings.",
"When heeftAlleAutorisaties is false, autorisaties must be specified.": "When heeftAlleAutorisaties is false, autorisaties must be specified.",
"When heeftAlleAutorisaties is true, autorisaties must not be specified. When heeftAlleAutorisaties is false, autorisaties must be specified.": "When heeftAlleAutorisaties is true, autorisaties must not be specified. When heeftAlleAutorisaties is false, autorisaties must be specified.",
Expand Down
Loading