Submit & track a report (Citizen workflow)
What you’ll do
You will submit a report with: - Location (required) - Category (type of issue) - Title and description - Optional contact details (so the municipality can update you)
Step-by-step: submit a report
- Choose the location
- The system checks whether the location is inside an active municipality boundary.
-
If it is not, the submission will be rejected and you’ll be asked to pick a valid location.
-
Describe the issue
-
Use a clear title (“Pothole on Main St”) and helpful details.
-
Pick a category
-
Categories determine routing, priority, and who can work on the issue.
-
Check for similar reports
- The system may show you similar reports nearby (duplicates).
-
Depending on municipal policy, you may:
- be allowed to proceed,
- be encouraged to confirm it’s not a duplicate,
- or be blocked if it’s clearly a duplicate.
-
Submit
- After submission, you receive a service request ID (a reference like
CITY-000123).
After you submit
- The issue may be automatically assigned to staff.
- You may receive an immediate confirmation message if auto-responses are enabled.
- As staff work on the issue, you may receive updates by email (depending on configuration).
Behind the scenes (grounded in code)
- Public submission endpoint:
apps/occurrences/views.py→OccurrenceViewSet.public_submit - Municipality boundary check:
WorkflowPolicyService.determine_municipality_from_location - Duplicate detection policy:
DuplicateDetectionSettings+WorkflowPolicyService.check_duplicates_before_create - Service request ID generation happens immediately after create.