Skip to content
Alonso Ayala Ortega edited this page Jul 19, 2021 · 63 revisions

Project Overview

The purpose of this new software application is to track complaints from the public against police officers as well as have the ability to create new records of complaints, update these records, assign them to different investigators, close them out, and other related features.

It is intended to be a full-featured internal affairs case management system. The deliverables include:

  • Secure login module; personnel are assigned roles, and each role will be able to access defined elements of the program's functionality
  • Module to receive and document complaints from the public - to include the capture of the citizen's contact information, supervisor making the initial entry, and a summary of the complaint received
  • Module for an internal affairs investigator to modify the initial complaint, including adding additional summary notes to the complaint record
  • Means for the investigator to record the "findings" of the investigation (generally this will either be not sustained, sustained, exonerated, or unfounded)
  • Means for the investigator to close out the investigation
  • An administrator module where discipline can be assigned for every case that has been closed
  • A reports module that will produce a variety of reports designed to provide aggregated data, as well as data that will enable administrators to identify employees with an above-average complaint history

Project Architecture and Environment

This software will be built using Window Forms and C#.
It will be delivered as a desktop application, with MS SQL Server as the database hosted in Azure.

Vision Statement

Implement a desktop application named PSPro (Public Safety Professional) that enables law enforcement administrators a means to document and investigate citizen complaints against police officers.

Elevator Pitch

Elevator Pitch Flyer

The target audience for the elevator pitch is police administrators.

In conjunction with a tenured police chief and other police leaders, we've developed a software product that will enhance the level of professionalism within your progressive police agency. The software will enable your staff to intake, document and investigate complaints against police officers. This is an important tool that will build greater community trust and accountability within your department. The software will also feature "early warning" reports helping you identify problems early.

Iteration Goals, Stories, Issue Assignments and Iteration Summaries

Product Backlog


  • Citizen: The member of the public making the complaint against the officer
  • Officer: The people named in the complaints
  • Supervisor: The person who will receive or intake complaints.
  • Investigator: The people that will investigate the complaints and determine the disposition
  • Administrator: The person responsible for deciding how to respond to the complaint – the person who will determine discipline
  • System Administrator: The person responsible to give maintenance and add features to the system.

User Requirements

A supervisor who logs in will be presented with a form to file a complaint. Generally, the supervisor would do this when receiving a phone call or walk-in from a citizen who wishes to file a complaint.

The supervisor will enter the complaining citizen’s contact information, the officer who is the subject of the complaint (drop-down list), and a brief summary of the complaint. When the supervisor saves this record, it will record the date it was created (automatically) as well as associate the supervisor’s name with the new complaint record. A supervisor cannot assign a disposition.

An investigator will be able to show a list of all complaints OR complaints by officer OR by date. From a list of complaints, the investigator can select anyone and bring up the details of the complaint. The investigator will then be able to add date/time-stamped notes to the summary section. The investigator will be able to come back to this form and amend the summary section as many times as desired to add new notes. However, once the investigator assigns a disposition to the complaint, then the complaint is locked and the investigator can no longer edit the complaint. The investigator can also generate a new complaint just like a supervisor.

An administrator can view a complaint any time after it is generated, but cannot assign a discipline until the investigator has assigned a disposition. An administrator is the only one who can assign discipline (none, letter of reprimand, suspension, demotion, termination). Once discipline is assigned the case is now considered closed, and cannot be further edited by anyone. The administrator will also be able to generate the reports, as described in the user stories.

After a case has been closed, an officer can view a list of all cases in which he or she was the subject of an investigation – except the officer will only be able to view the name of the citizen, but not any of his or her contact information.

User Stories

As a Supervisor, I want to:

  1. Login into the System. (Iteration 1)
  2. Enter the contact information for a complaining citizen. (Iteration 1)
  3. Select the officer who is the subject of the complaint. (Iteration 1)
  4. Enter the initial details of the complaint from the citizen. (Iteration 1)
  5. Search for existing Citizens who have complained in the past by first or last name, OR by phone number, OR by email (Iteration 1)
  6. Edit existing Citizen information associated with a complaint before saving the complaint to the db (Iteration 1)
  7. Assign allegation type as excessive force, courtesy, derelict of duty, dangerous driving, officer safety violation, ethics, conduct unbecoming, other policy violation. (Iteration 1)

As an Investigator, I want to:

  1. Login into the System. (Iteration 1)
  2. View a list of all active complaints. (Iteration 1)
  3. View a list of active complaints by 'officer'. (Iteration 1)
  4. Select and view the details of any complaint from the list. (Iteration 2)
  5. Add date-time stamped information to complaints. (Iteration 2)
  6. Add a Disposition to complaints as either sustained, not sustained, exonerated, or unfounded. (Iteration 2)
  7. (OUT OF SCOPE) Search for complaints by the complaining party.
  8. (OUT OF SCOPE) Create new complaints just like a supervisor.
  9. View a list, and the details of any closed complaints. (Iteration 3)
  10. Sort the complaint list by date, officer, citizen, and allegation. (Iteration 3)

As an Administrator, I want to:

  1. Login into the System. (Iteration 1)
  2. View a list of all active complaints. (Iteration 1)
  3. View a list of active complaints by 'officer'. (Iteration 1)
  4. Select and view the details of any complaint from the list. (Iteration 2)
  5. Add date-time stamped information to the complaint. (Iteration 2)
  6. Close the Complaint by Assigning a discipline and record it in the system (none, letter of reprimand, suspension, demotion, termination. (Iteration 2)
  7. Generate a report that provides complaint statistics aggregated by year in the past 5 years. (Iteration 3)
  8. View complaints of officers who have received more than three complaints within the past twelve months. (Iteration 3)
  9. (OUT OF SCOPE) Manage officers and supervisors in the system (Create, Update, Delete, List).
  10. View a list, and the details of any closed complaints. (Iteration 3)
  11. (OUT OF SCOPE) Report that includes names of citizens who have complained more than once in the past year, and the number of complaints each of these citizens made
  12. (OUT OF SCOPE) Report that includes number of complaints investigated by each investigator, as a well as a breakdown by investigator of the dispositions they assigned during the past year
  13. Sort the complaint list by date, officer, citizen, and allegation. (Iteration 3)

As an Officer, I want to:

  1. (OUT OF SCOPE) View a list of closed complaints in which I am the accused officer.
  2. (OUT OF SCOPE) View the details of any complaint in the list.

As the System Administrator, I want to:

  1. Use credentials of DB user with only permissions to a predefined set of Stores Procedure to be included in the system's source code. (Iteration 1)
  2. (OUT OF SCOPE) Manage authorization tokens for the DB user when executing Stored Procedures.

Enhanced Entity Relationship Diagram


State Diagrams

State Diagrams

UI Mockups