# The OPSCOM Admin Portal

The Admin Portal is where all the OPSCOM admins will log in and carry out their daily duties serving their end users.

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

**\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_**

# Landing Page and Dashboards

When you sign in to OperationsCommander initially, you are presented with a landing page. You can navigate back to that page anytime by clicking the OPSCOM logo. You can also find your Dashboards and system Setup information on this page.

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Using the OPSCOM-ARC System Dashboard & Widgets

<p class="callout info">The OperationsCommander (OPSCOM)dashboard is a fully customizable, widget-based analytics dashboard built into the admin portal. Each user can create multiple personal dashboards, arrange widgets freely on a drag-and-drop grid, and configure each widget individually to show exactly the data they need. Dashboards and widgets automatically refresh on a configurable schedule and are fully responsive down to mobile widths.</p>

## Dashboard Types

OPSCOM has two distinct dashboard types. The type is determined by where the dashboard is accessed from, and controls which widgets and data sources are available.

### General Dashboard

The General Dashboard is the **main operations dashboard**, accessible to all admin users when they first log in and can be returned to at any time from anywhere in the system by clicking on the *OPSCOM Logo* in the top-left corner. It surfaces organization-wide data and is designed to give a broad operational overview.

**Available widgets:** Graph, Filterable Graph, List, Map, WYSIWYG, Incident Association  
**Default data sources:** All sources tagged <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">general</span> (Violation Stats, LPR Stats, Permit Stats)

[![Dashboard10326.png](https://opscom.wiki/uploads/images/gallery/2026-03/scaled-1680-/dashboard10326.png)](https://opscom.wiki/uploads/images/gallery/2026-03/dashboard10326.png)

---

### Admin Dashboard

The Admin Dashboard is a **per-admin profile dashboard**, shown when viewing a specific admin's profile page. It is scoped to that admin — widgets that show violation or activity data are automatically filtered to the admin being viewed, not the person viewing the page.

**Available widgets:** Graph, Filterable Graph, List, Map, WYSIWYG, Admin Info, Incident Association  
**Default data sources:** Violation Stats + all sources tagged <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">admin</span> (LPR Stats)

[![Dashboard20326.png](https://opscom.wiki/uploads/images/gallery/2026-03/scaled-1680-/dashboard20326.png)](https://opscom.wiki/uploads/images/gallery/2026-03/dashboard20326.png)

---

## Managing Dashboards

### Creating a Dashboard

1. On the **Dashboard** homepage in the admin portal, click **+ Create Dashboard**.
2. Enter a **Name** and choose a **Visibility**:
    
    
    - **Private** – only you can see it.
    - **Visible** – any admin with the <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_browse</span> permission can browse it.
3. Click **Create**. The new dashboard opens immediately.

### Switching Between Dashboards

Open the dashboard picker drawer named **Browse Dashboard** at any time. All dashboards you own, collaborate on, or that are "Visible" are listed. Click any entry to switch. Your personal default and the organization default are highlighted.

### Editing a Dashboard

Toggle **Edit Mode** via the toolbar toggle switch. In edit mode you can:

- **Drag** widgets to reposition them on the grid.
- **Resize** widgets by dragging their bottom-right corner.
- **Add** widgets using the **+ Add Widget** button (opens the widget gallery).
- **Delete or duplicate** individual widgets via the icons that appear on each widget header.
- **Rename or change visibility** of the dashboard via the **Edit** button in the toolbar.

When finished, click **Save Layout** to persist the grid positions.

<p class="callout success">If you navigate away without saving you will be prompted to confirm discarding unsaved changes.</p>

### Sharing &amp; Collaboration

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-feature-how-to-use-c"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-ba7ed9d9-3c9e-4d1d-9202-be80e41e60d9" data-ssr-placeholder-replace="table-ba7ed9d9-3c9e-4d1d-9202-be80e41e60d9" data-table-local-id="ba7ed9d9-3c9e-4d1d-9202-be80e41e60d9" data-table-width="760" style="width: 100%;"><colgroup><col style="width: 15.4936%;"></col><col style="width: 84.5064%;"></col></colgroup><tbody><tr data-local-id="f8da3e43-8a07-4a24-95eb-8d90382544b0" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="c30001f2-caac-4201-8e38-a0b86c633a5d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Feature

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="a5fb4436-7b98-418b-ba30-c57fe82e951c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">How to use

</th></tr><tr data-local-id="e9f499ab-b13e-43ae-802d-c7c676850197" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="99f383f8-a9bf-464d-b248-4f488951cb55" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Collaborators**

</td><td class="pm-table-cell-content-wrap" data-local-id="3eaec3e3-c4f5-42e2-84c1-8bd355979510" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Add other admins as collaborators (Edit button → Collaborators tab). Collaborators can view and edit the dashboard.

</td></tr><tr data-local-id="3e4026d1-c1c5-4b4d-a515-ca9783a22a6a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="06233844-1692-4d6d-bada-c2b02c2c0fcf" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Visibility**

</td><td class="pm-table-cell-content-wrap" data-local-id="a471df7c-41c3-4ec0-af42-761ee3747ff2" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Set to *Visible* to allow anyone with <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_browse</span> permission to view it (read-only).

</td></tr><tr data-local-id="66b6aa46-c533-4b30-a907-e4f1c0426f21" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="1d15d053-72d6-42d0-8157-068325116b2b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Organization Default**

</td><td class="pm-table-cell-content-wrap" data-local-id="684d5e6a-9d06-44b3-9ef2-1d1867be1f11" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Admins with <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_set\_org\_default</span> permission can mark one dashboard as the org default — it appears as the landing dashboard for all admins.

</td></tr><tr data-local-id="21364dfe-2736-48b4-810b-46547bd8906f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="aefd9228-6147-4057-8576-b0a1e1e7b09b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Personal Default**

</td><td class="pm-table-cell-content-wrap" data-local-id="00525059-bed6-4c01-8458-ccb2e6e4cefb" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Each user can star ⭐ a dashboard to mark it as their personal landing page.

</td></tr></tbody></table>

</div></div></div></div></div></div>### Deleting a Dashboard

Open the dashboard picker, hover over the dashboard entry, and click the trash icon.

<p class="callout danger">**Please Note:** Deletion is permanent.</p>

---

## Widgets

Widgets are the individual panels that populate a dashboard. Each widget has:

- A **widget type** — determines how data is rendered.
- A **data source** — determines where the data comes from and what filters are available.
- A **configuration** — display settings, filters, and widget-type-specific options.

### Adding a Widget

1. Turn on **Edit Mode**.
2. Click **+ Add Widget**.
3. Browse or search the widget gallery. Each card shows the widget type and compatible data sources.
4. Click a card to add it. The widget appears on the grid.
5. Click the ⚙️ **Settings** icon on the new widget to choose a data source and configure it.

---

## Widget Types

### Graph Widget

Displays data as an interactive chart. Supports five chart styles selectable from the settings modal:

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-chart-type-descripti"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-cb2c8b35-8269-4e72-8052-3e31d2c5b45b" data-ssr-placeholder-replace="table-cb2c8b35-8269-4e72-8052-3e31d2c5b45b" data-table-local-id="cb2c8b35-8269-4e72-8052-3e31d2c5b45b" data-table-width="760"><colgroup><col></col><col></col></colgroup><tbody><tr data-local-id="80c4b503-831f-4615-b238-9e53aa0e2205" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="217be8ef-44d4-4b15-8abb-59a70c79bb8e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Chart Type

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="2acd11d9-b329-4d20-b671-221e06fa194d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="580b3f22-79f6-4608-ab3d-cd3e547b73c7" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="091708ba-53a5-46f9-a6cc-5186f626cf0d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Bar**

</td><td class="pm-table-cell-content-wrap" data-local-id="8b5502e9-7700-4705-ad27-00f004b43d86" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Vertical bars — good for comparing counts over time.

</td></tr><tr data-local-id="fd7f4ea9-e417-4e62-aadd-273e8981fa4f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="58e5b82d-f8c9-4134-afb3-dc9cdfa84f63" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Stacked Bar**

</td><td class="pm-table-cell-content-wrap" data-local-id="92d6f857-79d6-4837-8392-339ea65748c8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multiple datasets stacked — ideal for group-by breakdowns.

</td></tr><tr data-local-id="40524efa-4c56-468a-b297-d754d2c121b1" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="9a8e5e1a-c1cd-4eb7-b775-39645c68d7ed" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Line**

</td><td class="pm-table-cell-content-wrap" data-local-id="89ebae05-5813-4d14-adeb-e3b9adcf8e98" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Trend line — best for continuous time-series.

</td></tr><tr data-local-id="65b9f781-2f2e-44f4-81f1-6ad48b006278" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="e60fc3fb-1d8c-4f78-a821-2608fe3d01ce" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Pie**

</td><td class="pm-table-cell-content-wrap" data-local-id="25b5e49d-6694-4d3b-83a7-9f58cc4596c8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Proportional slices — best for a small number of categories.

</td></tr><tr data-local-id="4f52be8a-d036-45a7-a592-0375bcdeef70" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="6d0376c2-072c-4205-b49a-e69bb0ff7b7f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Doughnut**

</td><td class="pm-table-cell-content-wrap" data-local-id="492826ff-7a1d-42bc-8baf-42775e36cb1d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Like Pie but with a hollow centre.

</td></tr></tbody></table>

</div></div></div></div></div></div>**Extra options:**

- **Colorful Bars** — when there is only one dataset, each bar gets a distinct colour from the palette.
- **View Data** (👁 button) — opens a tabular view of the underlying data with a **CSV download** option.

---

### Filterable Graph Widget

Identical to the Graph widget with one extra feature: an **inline filter dropdown** displayed directly on the widget header. This lets users slice the chart in real-time without opening settings.

The available filter dimension (e.g. `Camera`, `Permit Type`, `Device Type`) is configured in the widget settings under **Filter Dimension**. Once set, the dropdown appears on the widget and fetches the available options automatically from the same data source, respecting all other active filter settings.

---

### List Widget

Displays data as a sortable, paginated **data table**. The columns shown are controlled by the **Columns** setting in the data source configuration. Useful for raw record-level views (individual violations, permits, LPR reads).

---

### Map Widget (Geo Location)

Displays geocoded records as **pins on an interactive map** (Leaflet). Features:

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-feature-description-"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-88bb0ff2-7212-44d2-bba2-e27bc1e7f3ac" data-ssr-placeholder-replace="table-88bb0ff2-7212-44d2-bba2-e27bc1e7f3ac" data-table-local-id="88bb0ff2-7212-44d2-bba2-e27bc1e7f3ac" data-table-width="760"><colgroup><col></col><col></col></colgroup><tbody><tr data-local-id="06fb3b4e-c371-436e-83cc-fd70fc81a90d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="9321fedb-7b7c-432d-8760-e1bc73145493" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Feature

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="ae69a9f1-fff9-40c2-bd43-0bcf49b5444e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="24fd6360-a7ba-446d-9361-224c0723410c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="0a22e932-4526-4e8f-8d93-7d81d262400c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Cluster Pins**

</td><td class="pm-table-cell-content-wrap" data-local-id="57b4edc3-949c-4a4e-b30b-9f94e39940ed" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Groups nearby pins into numbered clusters that expand on zoom. Configurable minimum cluster size and maximum zoom level.

</td></tr><tr data-local-id="14563220-2c4a-4fa9-802a-ed1fafa81dd9" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="213dd5ee-7c2a-43e7-a641-5093d4889e11" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Color by Age**

</td><td class="pm-table-cell-content-wrap" data-local-id="c758deb1-67cc-4324-8d6f-fd629cbc00ba" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Pins are coloured from green (recent) to red (older) based on record age.

</td></tr><tr data-local-id="d25050f5-cf29-46a2-a34e-0e2a4b5be1cb" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="fca39ead-8212-4708-a383-3d9427775dea" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Draw Path**

</td><td class="pm-table-cell-content-wrap" data-local-id="b086648a-e63f-429e-9182-f5a24e92ef1e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Connects sequential records with a polyline — useful for patrol route visualization.

</td></tr><tr data-local-id="ffd3776a-7c5a-4571-a6f3-15b1467024ba" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="e24938be-9637-4a51-9a55-02417a697d0e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Bounding Box Filter**

</td><td class="pm-table-cell-content-wrap" data-local-id="76fb54f3-79f4-45b0-9eb2-2eaa06292f9c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Restrict visible records to a lat/long bounding box configured in settings.

</td></tr></tbody></table>

</div></div></div></div></div></div>---

### WYSIWYG Widget

A free-form **rich-text content panel**. Supports formatted text, headings, bullet lists, bold/italic, hyperlinks, and more. Useful for notes, announcements, or instructions embedded directly in the dashboard.

Content is edited in a dedicated editor page (accessible via the widget's settings).

---

### Admin Info Widget

A read-only **profile summary card** for the admin account currently being viewed. Displays the admin's name, role, contact details, and related account information. This widget is context-aware — it reflects the profile of whichever admin the viewer is currently inspecting, not their own account. No data source configuration required.

---

### Incident Association Widget

Displays incident association data relevant to the dashboard context. Configuration details depend on the deployment.

---

## Data Sources

Data sources connect widgets to the OPSCOM backend APIs. Each data source exposes a set of **Display Settings** (how data is grouped and presented) and **Filter Settings** (which records to include). Settings are split across two tabs in the settings modal.

---

### Violation Stats

**Identifier:** <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">admin-violations</span>  
**Compatible widgets:** Graph, Filterable Graph, List, Map

#### Display Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-88c11fa5-6372-479f-84ef-4b3e8f85dec7" data-ssr-placeholder-replace="table-88c11fa5-6372-479f-84ef-4b3e8f85dec7" data-table-local-id="88c11fa5-6372-479f-84ef-4b3e8f85dec7" data-table-width="760"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr data-local-id="cd0b7030-748a-4d3b-96ae-fa64707e85c8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="08248846-d085-4307-b8eb-5ac0c9756fd9" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="73f1ffa6-0c2d-4efb-ae43-50f1cc94a443" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="3dddc100-3307-4bf9-9db4-072585a55052" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="501ef697-f486-42c9-89c9-e599a4ce352a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="10dc451c-9a92-49eb-bdc6-ec8cc54f9387" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Time Period**

</td><td class="pm-table-cell-content-wrap" data-local-id="64678ddd-1de8-4312-b19f-607f04c00f96" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">All Time / Last 7 Days / Last 30 Days / Last 3 Months / Last 6 Months / Year to Date / Last Year

</td><td class="pm-table-cell-content-wrap" data-local-id="904ad7c8-4c34-4008-9394-af2213e2898e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Limits records to a relative date window.

</td></tr><tr data-local-id="6b7df12f-ef16-4eda-8846-9f7153aa3740" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="13e68eb4-70d6-4bee-a8df-a8178ef56783" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Group by Time**

</td><td class="pm-table-cell-content-wrap" data-local-id="47027db9-0ab0-4f0c-934f-5b77624e7def" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">None / Day / Week / Month / Year

</td><td class="pm-table-cell-content-wrap" data-local-id="4b3e31d2-55c0-4025-8037-935d7598d21c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Buckets records by time period on the X-axis.

</td></tr><tr data-local-id="7ef8fd8e-3e29-41ed-a3c1-0049a4135abf" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="4c85450b-6301-45fc-acdf-e1f911d63b94" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Group by Entity**

</td><td class="pm-table-cell-content-wrap" data-local-id="c04ffd3b-01ad-4de2-bd05-693ea2d6e608" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">None / Plate / Location / Writer / Category

</td><td class="pm-table-cell-content-wrap" data-local-id="577cace3-5271-450a-b205-f8d04df37007" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Splits data into one dataset per entity value.

</td></tr><tr data-local-id="cba9662c-b0c1-44be-8ceb-80ebb94c00ff" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="c15c87d4-61b5-47f9-a091-35a767ad4f50" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Limit**

</td><td class="pm-table-cell-content-wrap" data-local-id="d492c94c-240c-45bd-83e3-20f72e3a3985" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Auto / Manual

</td><td class="pm-table-cell-content-wrap" data-local-id="aa6a90d5-aca5-409e-9a62-ba6192d9f20b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Auto = top N entities; Manual = pick specific values.

</td></tr><tr data-local-id="f6d72136-7435-44a0-9978-5a32769bcca2" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="211b4f3a-1129-46cd-99ac-9bdefef0e8b9" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Filter**

</td><td class="pm-table-cell-content-wrap" data-local-id="8864efc1-6f96-45fa-8864-dcd2f51b50a8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select (up to 10)

</td><td class="pm-table-cell-content-wrap" data-local-id="ffb8d9d6-46f7-4195-836c-e2e4fb652c14" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Visible when Group by Entity + Manual limit is set.

</td></tr><tr data-local-id="0e8c2a1f-3ed2-4af6-842c-3b669eee9d85" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="e70f9b65-96e4-4c8f-82dd-28624168085a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Measure**

</td><td class="pm-table-cell-content-wrap" data-local-id="ba2f5a4f-2fcf-431e-a425-63366dbb0e69" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Count / Revenue

</td><td class="pm-table-cell-content-wrap" data-local-id="d44c1f32-85b1-4df7-9268-ed94faec51c5" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Whether Y-axis shows number of violations or dollar revenue.

</td></tr><tr data-local-id="68d85f54-0faf-49ca-bbed-9cc71de8f001" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="e71a7d47-b5a3-4ced-9cc5-620db22f1e70" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Columns** *(List only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="60996b91-8c3b-4a5d-bded-96007d35f319" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Ticket, Issued, Fine, Towing, Adjusted Fine, Due Date, Warning, Spoiled, Collections, Plate, Location, Writer, Category, Lat, Long, Revenue, Count

</td><td class="pm-table-cell-content-wrap" data-local-id="9f28b3f8-d44d-43e9-8400-bd04d69472c6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Columns to include in the list table.

</td></tr><tr data-local-id="80d0b3dd-a523-42ca-abd7-58e67b7118c1" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="0c71d1a7-eec6-4e0a-b1f1-ff0b0ef61c2b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Sort Order**

</td><td class="pm-table-cell-content-wrap" data-local-id="07be609c-3f4d-4697-afc5-9d7ba24cb50e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Ascending / Descending

</td><td class="pm-table-cell-content-wrap" data-local-id="b9567225-3635-4065-960e-778616a91d67" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr></tbody></table>

</div></div></div></div></div></div>#### Filter Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc-1"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-e44b66e9-f1a5-45de-bdb6-07d0f609a657" data-ssr-placeholder-replace="table-e44b66e9-f1a5-45de-bdb6-07d0f609a657" data-table-local-id="e44b66e9-f1a5-45de-bdb6-07d0f609a657" data-table-width="760"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr data-local-id="271d71f7-d604-40c3-a1d3-17ea0cbeed6c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="b87f3658-9319-4b12-9fc1-1b69a433ba2d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="9c6b0bd9-d2f9-4114-98c3-ecdd30ac44b6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="e3f6eff8-61ff-4944-958a-3cac3f1985c8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="b1fb6a61-052c-4492-8244-4eee185ee989" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="22d30b3c-1475-460d-a6d9-8f361cd45c38" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Payment Status**

</td><td class="pm-table-cell-content-wrap" data-local-id="3ea642c4-060a-41ff-bf42-d5ba759239f6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Unpaid / Overdue / Paid / Collections (multi-select)

</td><td class="pm-table-cell-content-wrap" data-local-id="f0cc8e4c-e88a-4604-ac46-bd4af3d3cedc" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Filter by payment state.

</td></tr><tr data-local-id="93b0d3b5-b226-4896-9424-6f1421d9efd5" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="a68bed46-5d67-4320-b5f0-8c9cf08371ba" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Payable Only**

</td><td class="pm-table-cell-content-wrap" data-local-id="d17e004a-6b37-482a-bf77-3d268b540973" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Toggle

</td><td class="pm-table-cell-content-wrap" data-local-id="9b240c56-df2b-46ed-a90b-7eb0398139e1" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Show only violations that are currently payable.

</td></tr><tr data-local-id="d169f190-62b4-444c-b92d-bf679b255c23" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="31c099ea-796e-4a20-928b-b12d0921d739" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Geocoded Only**

</td><td class="pm-table-cell-content-wrap" data-local-id="d43b2f1f-c520-455b-8348-2344ec26e063" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Toggle

</td><td class="pm-table-cell-content-wrap" data-local-id="1157b5b2-d5b1-44eb-9c18-8559edf91622" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Show only violations with GPS coordinates (useful for Map widget).

</td></tr><tr data-local-id="3ff05c5b-8981-46fa-993a-6a676240409b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="21cd6320-b021-4fa0-b5cd-c7eef1ed40e6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Active Writer Only**

</td><td class="pm-table-cell-content-wrap" data-local-id="60c5ac3e-f639-4378-8200-110f9edf549e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Toggle (default: on)

</td><td class="pm-table-cell-content-wrap" data-local-id="557e8af6-c4bb-4f54-a5e6-409f41316b84" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Exclude records from deactivated admin accounts.

</td></tr></tbody></table>

</div></div></div></div></div></div>---

### Permit Stats

**Identifier:** <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">permit-stats</span>  
**Compatible widgets:** Graph, List

#### Display Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc-2"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-36d8a72c-23c2-43c0-a874-49628dbae33e" data-ssr-placeholder-replace="table-36d8a72c-23c2-43c0-a874-49628dbae33e" data-table-local-id="36d8a72c-23c2-43c0-a874-49628dbae33e" data-table-width="760" style="width: 100%;"><colgroup><col style="width: 14.4219%;"></col><col style="width: 58.5229%;"></col><col style="width: 27.0552%;"></col></colgroup><tbody><tr data-local-id="34a1a5c1-7618-4ef7-b21a-d22d64921991" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="e0ba9ea8-b745-42ee-8148-8dc5173a12b4" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="78ae24c1-3839-4b9d-8aae-284758ce9360" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="0bc6b5db-075f-4337-94b3-b9890ed6d4bf" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="01508e0d-974a-4747-9e11-dbd60d18c19c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="0a50a11a-90a4-4654-97a1-59aaf0a0ce03" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Time Period**

</td><td class="pm-table-cell-content-wrap" data-local-id="58e444d5-f716-4cf7-a034-465b87262315" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">All Time / Last 7 Days / Last 30 Days / Last 3 Months / Last 6 Months / Year to Date / Last Year

</td><td class="pm-table-cell-content-wrap" data-local-id="fb2ae182-5671-482b-9d10-4683fa1f5930" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Date window filter on permit submit date.

</td></tr><tr data-local-id="820bcfbb-9195-4a0e-99b7-8d31afa27931" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="bb81a8e9-9ebe-4f0c-b48f-d9718be4563f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Group by** *(Graph only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="17759546-26d0-4a78-bbbb-d15c8be406ba" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">None / Permit Type / Lot / User Type / Lot Group / Lot Zone

</td><td class="pm-table-cell-content-wrap" data-local-id="0dc65833-bc9e-43b3-85ab-0f1fed866244" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Splits into one dataset per group value.

</td></tr><tr data-local-id="ccb1affc-24d5-4f04-bf38-3d8e1785cf08" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="50306d55-5c64-414e-8071-a5b71754883a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Limit** *(Graph only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="c4f380aa-2700-4362-ae50-4f07e318e3c2" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Auto / Manual

</td><td class="pm-table-cell-content-wrap" data-local-id="ae795832-f257-4297-a9b3-c33e3df6141c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Auto = top N; Manual = pick specific values.

</td></tr><tr data-local-id="52675a8b-c068-4265-8201-da35b8d0a075" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="82e01c02-c21a-4a8e-bbed-16dffbe0325a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Filter**

</td><td class="pm-table-cell-content-wrap" data-local-id="c0ee0444-0eac-421d-94b8-f5e34ef51088" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select (up to 10)

</td><td class="pm-table-cell-content-wrap" data-local-id="ed58f85f-7433-40db-b385-62f47eb3342d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Shown when Manual limit is active.

</td></tr><tr data-local-id="eb895c1e-6431-4239-b152-65249559d788" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="1d312626-fd70-48d5-b42d-a92de6dc76d7" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Measure**

</td><td class="pm-table-cell-content-wrap" data-local-id="25b48892-e2e5-40ea-9fac-ff84c33b0502" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Count / Revenue

</td><td class="pm-table-cell-content-wrap" data-local-id="d8aaae01-a227-4da8-9745-8bc4e8f48792" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Count of permits vs. revenue generated.

</td></tr><tr data-local-id="10312c2c-c559-4c15-a3c1-c4e8b8cde7df" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="6ad5128c-d45c-4158-afd5-52c4f64d5d88" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Columns** *(List only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="d3a2a732-d8d2-4733-b979-b8e9c520b19b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">User Type, Lot, Active Start, Active End, Lot Group, Price, Permit Type, Source, Lot Zone

</td><td class="pm-table-cell-content-wrap" data-local-id="6c9e201a-174b-4cd6-861d-856ce147c7cd" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr><tr data-local-id="4d7fff58-656e-4f5a-8be4-7ad101b2a9a3" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="99919879-b1b8-402e-ae6e-3d8a3e280fbd" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Sort Order**

</td><td class="pm-table-cell-content-wrap" data-local-id="884097a6-e279-443a-a857-f80c590e1e35" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Ascending / Descending

</td><td class="pm-table-cell-content-wrap" data-local-id="343cf6bf-ab13-46bf-b5c0-eafc1aa4c024" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr></tbody></table>

</div></div></div></div></div></div>#### Filter Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc-3"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-445418c6-5c20-42b8-98a9-a2a50f79c6dc" data-ssr-placeholder-replace="table-445418c6-5c20-42b8-98a9-a2a50f79c6dc" data-table-local-id="445418c6-5c20-42b8-98a9-a2a50f79c6dc" data-table-width="760"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr data-local-id="ff65fdb5-227f-4ccd-bd6a-631417cf91e6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="91bb314c-5ddc-43b9-bccd-dd87c5c96b34" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="b456a512-fc9e-4240-9987-a8815e4374bd" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="82cab756-c9cd-4583-a1fe-1ae967974fca" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="7b24305d-6c1f-4392-804c-a708573864a0" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="671623e6-20bb-45bb-afde-bc73d082ae56" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Active Only**

</td><td class="pm-table-cell-content-wrap" data-local-id="5a9820b0-8699-4d13-ab65-6ac1014e6822" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Toggle

</td><td class="pm-table-cell-content-wrap" data-local-id="957c1de8-d507-42d9-8882-bac47cd155a4" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Show only currently active permits.

</td></tr><tr data-local-id="6b138370-dca1-429c-9df2-aa9ba975f364" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="482caeb1-927d-4eed-8fa7-c1ef1b5f01f7" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Permit Type**

</td><td class="pm-table-cell-content-wrap" data-local-id="7da25288-5d42-4258-83ad-cef74cb9fc3c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Standard, Temp, Cale sources (multi-select)

</td><td class="pm-table-cell-content-wrap" data-local-id="1dc0c471-d151-4496-ab01-19960d9a2644" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Filter by permit type/source.

</td></tr><tr data-local-id="d9a19cf9-e83a-4d42-8717-e4b134ac4539" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="df9fb3ee-5807-4fea-a2d2-a40f2b169a6f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Lots**

</td><td class="pm-table-cell-content-wrap" data-local-id="58d75bf4-eae2-4624-a0e1-2054eb2441bd" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select (all lots)

</td><td class="pm-table-cell-content-wrap" data-local-id="267d55d4-c582-4ae1-990e-6c7bb4837515" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Restrict to specific parking lots.

</td></tr><tr data-local-id="72c0d811-e1fb-4250-90f5-d8bbd13115de" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="a912b8d2-fb80-437a-9252-d64493c6025e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Lot Groups**

</td><td class="pm-table-cell-content-wrap" data-local-id="a550a4d5-051c-4742-9916-91b2cbfa67b6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select

</td><td class="pm-table-cell-content-wrap" data-local-id="ff3c21e7-db8c-4638-944b-c2bb5d0d2178" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Restrict to one or more lot groups.

</td></tr><tr data-local-id="3c311fe7-765f-4ccf-9531-627cc706f976" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="bb19b06c-f9b0-4381-a28c-643a7bcf511e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Lot Zones**

</td><td class="pm-table-cell-content-wrap" data-local-id="f99e5832-005f-4ea3-a8b3-852cab95f2f7" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select

</td><td class="pm-table-cell-content-wrap" data-local-id="02d26e56-4676-4656-ae27-2045acf9b83a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Restrict to specific lot zones.

</td></tr></tbody></table>

</div></div></div></div></div></div>---

### LPR Stats

**Identifier:** <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">lpr-stats</span>  
**Compatible widgets:** Graph, Filterable Graph, List, Map

#### Display Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc-4"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-a4ebe3df-8585-4959-9e1a-761cb0775d0b" data-ssr-placeholder-replace="table-a4ebe3df-8585-4959-9e1a-761cb0775d0b" data-table-local-id="a4ebe3df-8585-4959-9e1a-761cb0775d0b" data-table-width="760"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr data-local-id="cb72f1a7-7bcd-4eec-a91f-98c027b228f3" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="664dde51-c6b9-429a-994f-fab04def2d0d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="8ee21d52-4286-4c64-bcf2-4ce5866ab90a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="73669384-3842-4c1d-8adf-5de2e69f56fa" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="838e0e78-3bbc-4fbe-88e9-f72835a801d2" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="ed5702e0-2d07-4270-964e-10e9ac953106" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Time Period** *(Graph/List)*

</td><td class="pm-table-cell-content-wrap" data-local-id="c4155adb-be62-42c7-ba73-65df92ee7c90" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">All Time / Last 7 Days / Last 30 Days / Last 3 Months / Last 6 Months / YTD / Last Year

</td><td class="pm-table-cell-content-wrap" data-local-id="350cb5b1-6483-40d1-849d-7b3fb738ec9a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr><tr data-local-id="3cd81422-c73f-43bb-9555-73344fb9a1c4" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="7cca64f6-5c6c-44cc-8cee-af1f79bb3023" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Time Period** *(Map only —* <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">since\_geo</span>*)*

</td><td class="pm-table-cell-content-wrap" data-local-id="f473c5be-657c-4d69-acc4-e5d78b7951f3" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Last 4 Hours / Last 8 Hours / Last Day / Last 7 Days

</td><td class="pm-table-cell-content-wrap" data-local-id="c3d939fc-6968-43eb-bc40-a801fad88c34" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Short-term windows optimized for real-time map views.

</td></tr><tr data-local-id="01d7f83b-0f8f-46f0-a96b-98bade412c37" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="823b67c6-6e4c-499f-a944-60c64627a21e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Group by Time**

</td><td class="pm-table-cell-content-wrap" data-local-id="b8f4609f-5eeb-443b-b90a-35fc57e12cb6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">None / Day / Week / Month / Year

</td><td class="pm-table-cell-content-wrap" data-local-id="e768496b-1d9d-47db-9d24-be29c2ee0205" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Time-bucket for X-axis.

</td></tr><tr data-local-id="9cf8b7ff-a4ca-47cf-975e-6c025d1387cc" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="d26fb1ac-fdc1-4ef1-ba06-26ef23a1d02d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Group by Entity**

</td><td class="pm-table-cell-content-wrap" data-local-id="634392a3-7fa0-4680-b9c9-32c56c1a90fb" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">None / Camera / Permit Type / Device Type / Entry-Exit Type

</td><td class="pm-table-cell-content-wrap" data-local-id="1505f451-3582-401c-8241-4b7378f90ee5" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr><tr data-local-id="7f0ccaef-4ad5-470c-916f-77c4fb90346d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="1752a9ab-61b3-4e51-8512-c1a78d46e192" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Limit**

</td><td class="pm-table-cell-content-wrap" data-local-id="2a6c3bf7-4a33-44fd-9f4a-5764fa22b08f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Auto / Manual

</td><td class="pm-table-cell-content-wrap" data-local-id="27ee22d5-c91d-49ef-a494-2fc7ad55ef44" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr><tr data-local-id="31ead3be-a646-4242-b830-b6c76df8c860" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="95deab6f-7a8f-483a-8ddf-f2b81cf4b615" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Entity Filter**

</td><td class="pm-table-cell-content-wrap" data-local-id="c5a7b1c1-6f1d-424f-8df1-190e6f28bf4d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Multi-select (up to 10)

</td><td class="pm-table-cell-content-wrap" data-local-id="313fdf1e-866a-4c42-af12-25de13a60095" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr><tr data-local-id="3729d6b2-e53a-4c49-b7a8-e08683e3b756" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="cb40a923-e145-4705-bd32-5df8573b552e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Filter Dimension** *(Filterable Graph only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="a3a194b5-ecd7-40d6-8cdb-6657afdcfbaf" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Camera / Permit Type / Device Type / Entry-Exit Type

</td><td class="pm-table-cell-content-wrap" data-local-id="a59e09e4-35a6-4392-a3a2-a8e7f7989450" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Sets the inline filter dropdown on the widget face.

</td></tr><tr data-local-id="e08e6757-ecd6-475c-8da2-e8ba383a8620" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="f6b0dbed-41e2-4abf-99fc-464a6476eada" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Columns** *(List only)*

</td><td class="pm-table-cell-content-wrap" data-local-id="f75a99fb-eb6c-4f49-be8f-62dbfc0a0d04" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Plate, Camera, Permit Type, Recorded, Device Type, Entry/Exit Type

</td><td class="pm-table-cell-content-wrap" data-local-id="1be0ab85-33f7-4c5b-be4e-d8bc2a8177cf" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Visible when Group by Entity is not set.

</td></tr><tr data-local-id="88df2011-80d7-4d69-807e-8592b98cde91" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="5f9de360-a19f-4b97-8632-56c55eb667ea" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Sort Order**

</td><td class="pm-table-cell-content-wrap" data-local-id="234ef3f4-6ac7-4892-b0f6-45ea4b5b6016" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Ascending / Descending

</td><td class="pm-table-cell-content-wrap" data-local-id="2139caf3-ef18-4f3e-9707-231f19c1d765" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell"></td></tr></tbody></table>

</div></div></div></div></div></div>#### Filter Settings

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-options-desc-5"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-cbc8dc03-bca3-4e95-b0a4-2a0421caadb5" data-ssr-placeholder-replace="table-cbc8dc03-bca3-4e95-b0a4-2a0421caadb5" data-table-local-id="cbc8dc03-bca3-4e95-b0a4-2a0421caadb5" data-table-width="760"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr data-local-id="c7d8fb10-f790-4ed3-90e1-acd1d92df464" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="0d025891-ca88-43cd-97d2-a29b48fe1ba0" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="5ec89390-b7eb-451b-8e76-7b095368f003" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Options

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="b2bc3c05-cc38-4e8b-9c2d-6e40b7a35a45" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="d1940939-418d-47fd-ba7e-3535922e271f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="659bcfa7-41c7-4d27-b886-552d48eebd77" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Permit Type**

</td><td class="pm-table-cell-content-wrap" data-local-id="db27091f-c9a5-44df-bf9b-487784ea195e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">All / Temp / Standard / None (multi-value)

</td><td class="pm-table-cell-content-wrap" data-local-id="3368ed6c-7489-46ac-a964-ad5f34eb4603" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Filter reads by permit validation result.

</td></tr><tr data-local-id="aaecd548-9bd0-4704-9011-96990b23fe0c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="3384c7af-ec7b-434a-ac52-5decc0434367" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Camera Type**

</td><td class="pm-table-cell-content-wrap" data-local-id="83b80366-edbc-4035-ad7a-04a2a1ce679c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Entry / Exit / Monitor / Patrol (multi-select)

</td><td class="pm-table-cell-content-wrap" data-local-id="0728623f-468a-426e-931f-64e12be9c0a6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Filter by camera classification.

</td></tr></tbody></table>

</div></div></div></div></div></div>#### Map-only Settings (Geo Display)

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-setting-description-"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-6bfb5854-ad05-4ba6-847a-bc63d0552ab1" data-ssr-placeholder-replace="table-6bfb5854-ad05-4ba6-847a-bc63d0552ab1" data-table-local-id="6bfb5854-ad05-4ba6-847a-bc63d0552ab1" data-table-width="760"><colgroup><col></col><col></col></colgroup><tbody><tr data-local-id="7ccfdf94-ba10-403d-905d-8aec12c083d1" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="c1b63b81-8160-492e-a452-50088a247363" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Setting

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="64879938-83d3-4a00-ad88-7e5baf5d7487" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader">Description

</th></tr><tr data-local-id="10a5052d-39af-4608-ac90-03b17f09592a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="445e0b7e-614b-4cc9-bffc-61a2376fe6e6" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Cluster Pins**

</td><td class="pm-table-cell-content-wrap" data-local-id="86e34ae5-794c-4104-86f4-55afc9447388" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Enable/disable pin clustering.

</td></tr><tr data-local-id="d568ad95-fd2f-4a16-b813-dfa52b56b32d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="01d197d3-5602-40d0-9fcb-8da763b8be1a" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Cluster Min Size**

</td><td class="pm-table-cell-content-wrap" data-local-id="27d1fb47-2d69-467c-857a-4bd4e6430c66" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Minimum number of pins before they cluster.

</td></tr><tr data-local-id="c5274147-c73d-47fc-abe2-850457c676d1" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="bcde94ca-58e3-4a85-a769-3d8839091250" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Cluster Max Zoom**

</td><td class="pm-table-cell-content-wrap" data-local-id="2fc51053-d5b8-4117-94cf-8c5c4f0f2f6d" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Zoom level at which clusters dissolve into individual pins.

</td></tr><tr data-local-id="2035425b-e31c-4632-b187-3a22ae7483ff" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="24b91e0c-d7d9-4335-859a-279f88c63395" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Color by Age**

</td><td class="pm-table-cell-content-wrap" data-local-id="1e276372-2cf8-44e9-8001-41005d54956c" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Colour-code pins by record age.

</td></tr><tr data-local-id="7763436a-16b7-4860-b75f-1fc8076050dd" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="11ab2f19-d033-4c5e-ac4a-d96fdc4c9a8f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Draw Path**

</td><td class="pm-table-cell-content-wrap" data-local-id="fc4f0c1c-ae5e-48cc-b873-76b3fda3f637" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Connect pins in chronological order with a line.

</td></tr><tr data-local-id="5cce493e-2f7c-4c44-b836-a5cd67174ca8" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow"><td class="pm-table-cell-content-wrap" data-local-id="63c3dcb1-1f6d-4132-8750-714bad96f48b" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">**Bounding Box**

</td><td class="pm-table-cell-content-wrap" data-local-id="21b02f1d-472a-4995-ae55-079e002292af" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell">Lat/Long min/max to limit the visible area.

</td></tr></tbody></table>

</div></div></div></div></div></div>---

## Widget Settings Modal

Every widget has a **⚙️ Settings** button (visible in both view and edit modes). The modal contains:

1. **Widget Name** — optional custom title shown in the widget header. Defaults to the data source name if left blank.
2. **Data Source** — dropdown to choose which data source powers this widget. Only sources compatible with the current widget type are shown.
3. **Widget-type settings** — e.g. Chart Type and Colorful Bars (Graph widgets).
4. **Display Settings tab** — grouping, columns, sort, measure, entity filter settings.
5. **Filters tab** — record-level filters (time period, payment status, lot restrictions, etc.).

Click **Save** to apply. The widget immediately re-fetches data with the new configuration.

---

## Permissions Reference

<div class="tableView-content-wrap" data-prosemirror-content-type="node" data-prosemirror-initial-todom-render="true" data-prosemirror-node-block="true" data-prosemirror-node-name="table" id="bkmrk-permission-effect-da"><div data-testid="table-alignment-container"><div class="pm-table-resizer-container"><div class="resizer-item display-handle"><div class="pm-table-container" data-layout="default" data-number-column="false" data-testid="table-container"><div class="pm-table-wrapper"><table data-autosize="false" data-layout="default" data-number-column="false" data-ssr-placeholder="table-bace80b3-4fe0-4317-ade0-e23204d7ba71" data-ssr-placeholder-replace="table-bace80b3-4fe0-4317-ade0-e23204d7ba71" data-table-local-id="bace80b3-4fe0-4317-ade0-e23204d7ba71" data-table-width="760" style="width: 82.1429%; height: 230.641px;"><colgroup><col style="width: 36.8116%;"></col><col style="width: 63.1884%;"></col></colgroup><tbody><tr data-local-id="beea7fd8-54f0-4a37-976c-a6d946b11f04" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 34.1094px;"><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="0d2291c5-505c-45ae-baa4-4528a8f5f426" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader" style="height: 34.1094px;">Permission

</th><th class="pm-table-header-content-wrap" data-cell-background="#6b7280" data-local-id="f3172294-ab78-41bd-9e30-39874e45a30f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableHeader" style="height: 34.1094px;">Effect

</th></tr><tr data-local-id="fcfb143f-6aee-4d63-b4fd-b873a2ed0842" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 35.7344px;"><td class="pm-table-cell-content-wrap" data-local-id="ad009ce6-83a2-4790-80d6-2e643a652d78" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;"><span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_browse</span>

</td><td class="pm-table-cell-content-wrap" data-local-id="efcc30bd-79c9-45e2-882f-62e11276d973" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;">Can view dashboards marked *Visible*.

</td></tr><tr data-local-id="b0d0a933-be89-4085-a7d7-1d8876d31c03" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 35.7344px;"><td class="pm-table-cell-content-wrap" data-local-id="926a4695-5edd-43a2-b1e5-48269cf04326" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;"><span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_edit\_any</span>

</td><td class="pm-table-cell-content-wrap" data-local-id="4945ac06-f3d7-4ac9-b9e7-172fd1ac446f" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;">Can edit any dashboard regardless of ownership.

</td></tr><tr data-local-id="38afac24-7ee8-431f-afa9-2f1805b48b49" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 35.7344px;"><td class="pm-table-cell-content-wrap" data-local-id="7da15acf-2129-458d-84b4-f473fe407eab" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;"><span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">dashboard\_set\_org\_default</span>

</td><td class="pm-table-cell-content-wrap" data-local-id="edd0527d-6ee6-4824-9757-9a026987e8e4" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 35.7344px;">Can promote a dashboard to org-wide default.

</td></tr><tr data-local-id="bf9a9d6c-9536-4b6a-81a5-bffaff877b5e" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 34.1094px;"><td class="pm-table-cell-content-wrap" data-local-id="e9cd4b96-5244-40e3-ad52-00302227e012" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 34.1094px;">*(Owner)*

</td><td class="pm-table-cell-content-wrap" data-local-id="cbd562cc-bc5c-4d4d-8ea3-0ea50605f2ce" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 34.1094px;">Full edit rights on own dashboards.

</td></tr><tr data-local-id="e33f4dbd-ce25-42ae-9603-401bea520d13" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableRow" style="height: 55.2188px;"><td class="pm-table-cell-content-wrap" data-local-id="e02b8de4-0b5e-4a5e-9720-bce57dc01bc9" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 55.2188px;">*(Collaborator)*

</td><td class="pm-table-cell-content-wrap" data-local-id="46f9d5c0-c54e-4e1b-9630-0eb862134cf2" data-prosemirror-content-type="node" data-prosemirror-node-block="true" data-prosemirror-node-name="tableCell" style="height: 55.2188px;">View and edit rights on dashboards shared with them.

</td></tr></tbody></table>

</div></div></div></div></div></div>---

## <span style="color: rgb(22, 145, 121);">Tips &amp; Best Practices</span>

- <span style="color: rgb(22, 145, 121);">**Use the Filterable Graph** for LPR Camera data — set *Filter Dimension* to <span class="code" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code" spellcheck="false">Camera</span> to get a per-camera dropdown directly on the widget without opening settings.</span>
- <span style="color: rgb(22, 145, 121);">**Star your most-used dashboard** so it loads automatically when you navigate to the dashboard page.</span>
- <span style="color: rgb(22, 145, 121);">**Group by Entity + Stacked Bar** is the most readable combination for comparing multiple cameras, lots, or writers side by side.</span>
- <span style="color: rgb(22, 145, 121);">**Year to Date + Group by Month** gives a clean year-progress chart that resets automatically each January.</span>
- <span style="color: rgb(22, 145, 121);">**Geo widgets work best** with *Last 4–8 Hours* time range and *Cluster Pins* enabled for busy patrol routes.</span>
- <span style="color: rgb(22, 145, 121);">**The List widget** is ideal alongside a Graph widget on the same dashboard — use the same data source and filter settings to give both a chart view and a raw-record drill-down on the same screen.</span>

# Edit the Admin Landing Page Messages

<p class="callout info">The Admin Dashboard is the initial landing page presented to administrators upon logging into OPSCOM. This article guides administrators on how to modify and customize this landing page message, allowing organizations to display important and up-to-date information directly to their system administrators and staff.</p>

### Setup &amp; Configuration

<p class="callout warning">Customizing this message requires access to Contents &amp; Designs on the System Configuration menu.  You must have the **Managing System Messages** permission on your profile to access this.</p>

1. Hover over **System Configuration, Admin Management,** and click **Manage Roles.**
2. Click Permissions on the role you want to grant this to.
3. On the **System Content** tab, enable the **Manage System Messages** checkbox.
4. Click **Save Permissions**.

---

### Using this Feature

The **Manage System Messaging** tool allows you to access and modify the content of the Admin Dashboard.

1. Hover over **System Configuration, Content &amp; Designs,** and click **Pages and Content Blocks.**
2. Click the **Messages** tab.
3. <span style="text-indent: -0.25in;">Click Edit next to the </span>**Admin Dashboard**<span style="text-indent: -0.25in;"> item</span><span style="text-indent: -0.25in;">.</span>
4. The WYSIWYG editor will show by default. To edit in HTML, select **Source Code** from the **Tools** menu.
5. After making your edits, click the **Save Messaging** button. A pop-up confirmation will notify you that your changes have been saved.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Relevant Information**: Customize the OPSCOM **Admin Dashboard** to display important and up-to-date information relevant to administrators and staff, such as recent system updates, upcoming deadlines, schedules or internal announcements.</span>
- <span style="color: rgb(22, 145, 121);">**Concise Messaging**: Keep messages clear and concise. The dashboard is a quick reference, so avoid overly long or complex text.</span>
- <span style="color: rgb(22, 145, 121);">**Visual Elements**: Leverage the WYSIWYG editor to incorporate basic formatting, images, or links to make your messages more engaging and informative.</span>
- <span style="color: rgb(22, 145, 121);">**Regular Updates**: Periodically review and update your Admin Dashboard message to ensure the information remains current and valuable to your staff.</span>

# OPSCOM FAQs, Tips & Tricks

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Quick Search Tool Functionality

<p class="callout info">The **Quick Search** tool allows you to quickly find information in OPSCOM by searching specific fields. To perform a search, you must enter at least 3 characters.</p>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-12/scaled-1680-/u9Mimage.png)](https://opscom.wiki/uploads/images/gallery/2024-12/u9Mimage.png)

##### **Quick Steps:  

1. Enter a minimum of **3** **characters** in the **Quick Search** field in the main menu.
2. Review the search results.

 Types of searchable items are:

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>License plate

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>VIN number

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Username

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Last name

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Email address

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Student number

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Employee number

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Ticket number

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>License plate of the vehicle involved

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Incident number

<span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Payment Confirmation code

#####  

<div class="flex max-w-full flex-col flex-grow" id="bkmrk-open-the-quick-searc"><div class="min-h-8 text-message flex w-full flex-col items-end gap-2 whitespace-normal break-words text-start [.text-message+&]:mt-5" data-message-author-role="assistant" data-message-id="98456c59-f7b2-49f3-9eea-49da91e5910f" data-message-model-slug="gpt-4o" dir="auto"><div class="flex w-full flex-col gap-1 empty:hidden first:pt-[3px]"><div class="markdown prose w-full break-words dark:prose-invert dark"></div></div></div></div>

# Disable Browser Auto-Fill and Auto-Complete

<p class="callout info">When using OperationsCommander to complete a User Profile, the browser's auto-complete feature can cause problems by automatically filling in fields with incorrect or unwanted information. This can lead to errors if unnoticed data is saved by mistake. To avoid this issue, you should turn off the auto-complete feature in your browser.</p>

<p class="callout warning">Some browser plug-ins, such as password managers, may also act as auto-complete utilities and cause similar issues. If disabling auto-complete doesn’t resolve the problem, review your installed plug-ins and disable them as needed.</p>

##### Configuration

1. Identify your browser below.
2. Follow the instructions to disable auto-fill for that browser.
3. If issues persist, check and disable browser plug-ins like password managers.
4. Save your changes and test the system to confirm the issue is resolved.

**Internet Explorer**

1. Click the **Tools** menu icon.
2. Select **Internet Options**, then go to the **Content** tab.
3. Under **Auto Complete**, click **Settings**.
4. Uncheck **Forms** and **User Names and Passwords on Forms**.

**Microsoft Edge**

1. Open **Edge** and click the **More** icon (three dots) at the top right.
2. Go to **Settings** and scroll to **Advanced Settings**.
3. Find **Save Form Entries** and toggle it **off**.

**Chrome**

1. Open **Chrome**.
2. Click **More** &gt; **Settings** at the top right.
3. Scroll to the bottom and click **Show advanced settings**.
4. Under **Passwords and forms**, uncheck **Enable Autofill to fill out web forms in a single click**.

**Firefox**

1. Open **Firefox**.
2. In the address bar, type **about:config** and press Enter.
3. Click **I'll be careful, I promise**.
4. Search for **dom.forms.requestAutocomplete** and double-click to set its value to **False**.

**Safari**

1. Open **Safari** and go to **Preferences**.
2. Click **AutoFill**.
3. Deselect all types of information you don’t want Safari to auto-fill.
4. To edit or delete saved information, click **Edit** next to the relevant category.

# Rebranding the OPSCOM User Portal with Custom Colors

<p class="callout info">This article explains how OperationsCommander administrators can customize the primary and secondary colors of the User Side interface. This feature allows you to align the User Side's appearance with your organization's branding.</p>

##### Setup &amp; Configuration

1. Hover over **System Settings**, **Content &amp; Designs**, and click **Templates &amp; Design**.
2. Click **Toggle Templates**.
3. Under the **Styles** section, click **Edit**.
4. Add the following code snippet to the very top of the editor, directly under the `<style>` tag:
    
    <div _ngcontent-ng-c834397712="" class="code-block ng-tns-c834397712-23 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_2995729495a226f5","c_0428351127a19133",null,"rc_0bab176a6b9e61dd",null,null,"en",null,1,null,null,1,0]]"><div _ngcontent-ng-c834397712="" class="code-block-decoration header-formatted gds-title-s ng-tns-c834397712-23 ng-star-inserted"><span class="ng-tns-c834397712-23">CSS  
    </span></div></div>```
    :root{
    --ion-color-primary: purple;
    --ion-color-secondary: orange;
    }
    ```
    
    <div _ngcontent-ng-c834397712="" class="code-block ng-tns-c834397712-23 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_2995729495a226f5","c_0428351127a19133",null,"rc_0bab176a6b9e61dd",null,null,"en",null,1,null,null,1,0]]"><div _ngcontent-ng-c834397712="" class="formatted-code-block-internal-container ng-tns-c834397712-23"><div _ngcontent-ng-c834397712="" class="animated-opacity ng-tns-c834397712-23"></div></div></div>
5. Replace `purple` and `orange` with your desired standard color names (e.g., `blue`, `green`, `red`).

---

## <span style="color: rgb(22, 145, 121);">Best Practices and Considerations</span>

- <span style="color: rgb(22, 145, 121);">For more precise branding control, you can use hexadecimal (hex) color codes instead of standard color names!</span>
- <span style="color: rgb(22, 145, 121);">Use a browser extension (such as ColorZilla) or an online tool to find the hex code for your organization's specific color (e.g., `#6F42C1`).</span>
- <span style="color: rgb(22, 145, 121);">In the code snippet, replace the standard color name with your hex code. </span>Example:

```
:root{
--ion-color-primary: #6F42C1;
--ion-color-secondary: #FFA500;
}
```

# Why Are My Violation/Warning Notification Emails Not Going Out?

If your new violation and warning notification emails are not going out, please check the following:

1. Confirm that the user is the primary driver and has a valid email address in the system. Emails are sent automatically to the primary driver with an email. Users without an email are flagged for letter reports.
2. Confirm email templates for violation notices are configured properly under System Configuration &gt; Content &amp; Designs &gt; Email Templates.
3. Verify that the "New Violation Notices" system task is enabled and running (scheduled or manual) in Tools &gt; View System Task Logs.
4. If sending warnings, ensure "Send Notices For Warnings" is enabled under System Configuration &gt; System Settings &gt; Violations.
5. Check notice-related settings:
    
    
    - Violation days until due in Tomahawk Options &gt; System Settings.
    - Collections &gt; Include All Unpaid Violations setting.
6. Inspect the letter report (Violations &gt; Letter report) for users without email addresses or unsent notices.
7. Keep in mind that only new violations (issued the same day) trigger initial emails. Older violations may not automatically send a notification email.

Reviewing and correcting these settings and running the relevant system task should help resolve issues with violation notification emails not being sent.

# Unsubscribe Option for Email Notifications-Opt-Out

<p class="callout info">This article describes the feature that allows users to unsubscribe from non-essential email communications. This feature aims to improve user experience, ensure compliance with data privacy regulations, and reduce the volume of manual unsubscribe requests.</p>

### Setup &amp; Configuration

#### Admin Side

To enable and configure the unsubscribe option, an administrator needs to follow these steps:

- A new setting will control if users are able to access email preferences. This setting will be deployed as **off** by default.
- Email categories are pre-defined and cannot be changed. The available categories are:
    
    
    - **Important** (Essential)
    - **Promotional Emails** (Non-essential)
    - **Newsletter** (Non-essential)
    - **Product Updates** (Non-essential)
- Admins can assign any category to the email templates on their system.
- Category selection options will be added to the following email setup pages:
    
    
    - The **compose email** page.
    - The **email template** page for automat<span class="citation-417 citation-end-417">ed system messages.<sup class="superscript" data-turn-source-index="1"></sup></span>
        
        <div _ngcontent-ng-c1513125114="" class="source-inline-chip-container ng-star-inserted"></div>

<div _ngcontent-ng-c1513125114="" class="source-inline-chip-container ng-star-inserted" id="bkmrk-"></div><p class="callout warning">**System-related emails** (e.g., receipts, password resets, new account creation) are exempt from the unsubscribe functionality and cannot be disabled by administrators.</p>

#### User Side: Managing Email Preferences

When the feature is enabled, users can manage their email preferences through an **Email Preferences** page within their account settings.

Users can access the **Email Preferences** page in two ways:

- By navigating to their account settings.
- By clicking the **Unsubscribe** link in the body or footer of any non-essential email.

On the **Email Preferences** page, users will find the following:

- **Checkboxes for each email category**: Users can select or deselect categories to manage their subscriptions.
- **Popover icon (?)**: Clicking this icon next to a checkbox will display the category description.
- **Select/Deselect All**: An option to manage all checkboxes at once.
- **Essential Categories**: A list of essential email categories that cannot be unsubscribed from will be shown at the bottom of the page.

After making changes, the user must click the **Save Changes** button. A confirmation message will be displayed.

<p class="callout success">You can view the user-facing wiki article [here](https://opscom.wiki/books/OPSCOM-user-portal/page/user-side-managing-email-preferences).</p>

### Assigning Email Categories

When composing an email or editing an email template, administrators can assign an email category.

- If a **non-essential** category is selected, a message will clearly display to the admin that the user can opt out of receiving it.
- If an email is marked with a category that a user has unsubscribed from, the email will not be sent to that user.
- Emails marked with a category flagged as **essential** are always sent.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Develop a business rule** for what is considered an "essential" vs. a "non-essential" email.</span>
    
    
    - <span style="color: rgb(22, 145, 121);">**Essential emails** are communications that all users should be made aware of, such as major announcements, road closures, or advisories for lot closures due to heavy snow.</span>
    - <span style="color: rgb(22, 145, 121);">**Non-essential emails** are those that a user can decide they don’t need, such as event notices for an upcoming open house or a sale at the school store.</span>
- <span style="color: rgb(22, 145, 121);">If the unsubscribe functionality is turned off after users have already unsubscribed, **their subscription settings will be ignored**, and they will receive all emails again.</span>

# OPSCOM Reports

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Reports Overview

<table class="relative-table wrapped confluenceTable" id="bkmrk-report-title-when-do" style="width: 100%; height: 3393.47px;"><colgroup><col style="width: 15.2381%;"></col><col style="width: 84.6429%;"></col></colgroup><tbody><tr style="height: 34.1094px;"><th class="confluenceTh" style="height: 34.1094px;">Report Title</th><th class="confluenceTh" style="height: 34.1094px;">When do we use this?</th></tr><tr style="height: 34.1094px;"><td class="wysiwyg-macro-body highlight-green confluenceTd" colspan="2" data-highlight-colour="green" style="height: 34.1094px;">**Parking Reports** <span class="confluence-anchor-link conf-macro output-inline" data-hasbody="false" data-macro-id="3b89ccc7-7add-49a4-9957-95b3d8699524" data-macro-name="anchor" id="bkmrk-"><span class="confluence-anchor-link" id="bkmrk--1"></span></span>

</td></tr><tr style="height: 97.4219px;"><td style="height: 97.4219px;">[Detailed Permit Sales Report by Lot](https://opscom.wiki/books/system-reports/page/detailed-permit-sales-report-by-lot)</td><td style="height: 97.4219px;">Gives administrators a granular view of permit transactions by parking area, helping track sales volume and export individual records for analysis.</td></tr><tr style="height: 97.4219px;"><td class="wysiwyg-macro-body confluenceTd" style="height: 97.4219px;">[Permit Sales by Lot By Month](https://opscom.wiki/books/system-reports/page/permit-sales-by-lot-by-month)</td><td class="confluenceTd" style="height: 97.4219px;">Displays the lots, payment types, amount of sales processed, and the total number of permits sold that month.</td></tr><tr style="height: 69.2812px;"><td class="wysiwyg-macro-body confluenceTd" style="height: 69.2812px;">[Permit Sales Report](https://opscom.wiki/books/system-reports/page/permit-sales-report)</td><td class="confluenceTd" style="height: 69.2812px;">The Permit Sales Report provides a breakdown of sales for a selected allocation type and time period.</td></tr><tr style="height: 69.2812px;"><td class="wysiwyg-macro-body confluenceTd" style="height: 69.2812px;">[Active Permit Report](https://opscom.wiki/books/system-reports/page/active-permit-report)</td><td class="confluenceTd" style="height: 69.2812px;">The Active Permits Report provides a breakdown of who owns permits for a selected allocation type and time period.</td></tr><tr style="height: 69.2812px;"><td style="height: 69.2812px;">[Company Permit Report](https://opscom.wiki/books/system-reports/page/company-permit-report)</td><td style="height: 69.2812px;">Allows the searching of permits booked by users within a specific company.</td></tr><tr style="height: 69.2812px;"><td class="wysiwyg-macro-body confluenceTd" style="height: 69.2812px;">[Temp Permit Sales Report](https://opscom.wiki/books/system-reports/page/temp-permit-sales-report)</td><td class="confluenceTd" style="height: 69.2812px;">The Temp Permit Sales Report provides a breakdown of who has purchased temp permits within a selected time period.</td></tr><tr style="height: 55.2188px;"><td class="wysiwyg-macro-body confluenceTd" style="height: 55.2188px;">Athletic Permit Sales</td><td class="confluenceTd" style="height: 55.2188px;">Provides purchase details based on user types that include 'Athletics' or has the athletic user type included in their lot. </td></tr><tr style="height: 55.2188px;"><td style="height: 55.2188px;">Active Parker Listing</td><td style="height: 55.2188px;">Displays a list of users who purchased a permit within the selected time period.</td></tr><tr style="height: 69.2812px;"><td class="wysiwyg-macro-body confluenceTd" style="height: 69.2812px;">[Lot Value Report](https://opscom.wiki/books/system-reports/page/lot-value-report)</td><td class="confluenceTd" style="height: 69.2812px;">The Lot Value report will summarize your Lot utilization and total value of the permits sold in each lot.</td></tr><tr style="height: 97.4219px;"><td class="wysiwyg-macro-body confluenceTd" style="height: 97.4219px;">[Active Deposit Report](https://opscom.wiki/books/system-reports/page/active-deposit-report)</td><td class="confluenceTd" style="height: 97.4219px;">Lists active deposits by lot.</td></tr><tr style="height: 76.3281px;"><td style="height: 76.3281px;">Users With Multiple Permits</td><td style="height: 76.3281px;">Shows a list of users on the site that currently have multiple active permits.</td></tr><tr style="height: 55.2188px;"><td style="height: 55.2188px;">User Vehicle Report</td><td style="height: 55.2188px;">Shows a list of vehicles on the site, with associated user details, and any permits they have.</td></tr><tr style="height: 97.4375px;"><td class="wysiwyg-macro-body confluenceTd" style="height: 97.4375px;">Midnight List</td><td class="confluenceTd" style="height: 97.4375px;">This is a list of permits that will be cleared at midnight. The permits will automatically be released from users that do not have promises for payment  
(e.g. the permit was reserved but the user did not specify how they were going to pay). These permits will be available for purchase again the next day.</td></tr><tr style="height: 34.1094px;"><td class="confluenceTd" colspan="2" style="height: 34.1094px;">  
</td></tr><tr style="height: 34.1094px;"><td class="highlight-green confluenceTd" colspan="2" data-highlight-colour="green" style="height: 34.1094px;">**Violation Reports** <span class="confluence-anchor-link conf-macro output-inline" data-hasbody="false" data-macro-id="e79189a8-167d-4fa2-b345-c1642fe058a4" data-macro-name="anchor" id="bkmrk--2"><span class="confluence-anchor-link" id="bkmrk--3"></span></span>

</td></tr><tr style="height: 97.4375px;"><td class="confluenceTd" style="height: 97.4375px;">[Violations by Location/Officer Report](https://opscom.wiki/books/system-reports/page/violations-by-locationofficer-report)</td><td class="confluenceTd" style="height: 97.4375px;">Allows administrators to search for Violations issued by an officer and see a summary of how many violations were :  
issued of each type, How many were appealed, how many were upheld, reduced or canceled, how many spoils and warnings, how many paid or unpaid</td></tr><tr style="height: 125.562px;"><td class="confluenceTd" style="height: 125.562px;">[Paid Violations Summary by Type Report](https://opscom.wiki/books/system-reports/page/paid-violations-summary-by-type-report)</td><td class="confluenceTd" style="height: 125.562px;">Allows administrators to search for Violations issued by Date and Type. The report will display the number of violations issued by type and the Total amounts for each type including Warnings.</td></tr><tr style="height: 97.4375px;"><td class="confluenceTd" style="height: 97.4375px;">[Violations by Officer Report](https://opscom.wiki/books/system-reports/page/violations-by-officer-report)</td><td class="confluenceTd" style="height: 97.4375px;">Allows administrators to search for Violations issued by the officer. You can filter on Date, Ticket Writer, Spoil Type, and Ticket Type. The report will display the number of violations each officer has issued, the plates they were issued to, the date of the violation and the fine amounts.</td></tr><tr style="height: 97.4375px;"><td class="confluenceTd" style="height: 97.4375px;">[Summary Report by Officer](https://opscom.wiki/books/system-reports/page/summary-report-by-officer)</td><td class="confluenceTd" style="height: 97.4375px;">Allows administrators to search for Violations issued by the officer and see a summary of how many violations were: issued of each type, How many were appealed, how many were upheld, reduced or canceled, how many spoils and warnings, how many paid or unpaid</td></tr><tr style="height: 76.3281px;"><td class="confluenceTd" style="height: 76.3281px;">[List Overdue Report](https://opscom.wiki/books/system-reports/page/list-overdue-report)</td><td class="confluenceTd" style="height: 76.3281px;">Allows administrators to report on violations that have not been paid before the due date. Once the violation is paid it would drop off of this report. You can filter on User Type, Ticket Type, and Date.</td></tr><tr style="height: 97.4219px;"><td class="confluenceTd" style="height: 97.4219px;">[Violations by Pay Type by Month Report](https://opscom.wiki/books/system-reports/page/violations-by-pay-type-by-month-report)</td><td class="confluenceTd" style="height: 97.4219px;">Allows administrators to search for Violations issued by Month and Payment Type.</td></tr><tr><td>[Towed Vehicles Report](https://opscom.wiki/books/system-reports/page/towed-vehicles-report)</td><td>Allows administrators to search for violations specifically flagged for towing. You can filter by Date range, Offense Location, and specific ticket statuses including Warnings, Spoil Types, and Appeal States. The report displays the ticket number, issue timestamp, towing charges, and vehicle identifiers like plate number and province, ensuring a clear audit trail for all vehicle removals.</td></tr><tr style="height: 34.1094px;"><td class="confluenceTd" colspan="2" style="height: 34.1094px;">  
</td></tr><tr style="height: 34.1094px;"><td class="highlight-green confluenceTd" colspan="2" data-highlight-colour="green" style="height: 34.1094px;">**Incident Reports** <span class="confluence-anchor-link conf-macro output-inline" data-hasbody="false" data-macro-id="a271548a-dd47-427b-bfc7-7f21a455bea9" data-macro-name="anchor" id="bkmrk--4"><span class="confluence-anchor-link" id="bkmrk--5"></span></span>

</td></tr><tr style="height: 118.547px;"><td class="confluenceTd" style="height: 118.547px;">Recent Incidents Summary Report  
(Last 30 Days)</td><td class="confluenceTd" style="height: 118.547px;">Provides administrators with a table of all incidents that have been recorded in the previous 30 days.</td></tr><tr style="height: 76.3281px;"><td class="confluenceTd" style="height: 76.3281px;">Search Repeat Offenders Report</td><td class="confluenceTd" style="height: 76.3281px;">The Search Repeat Offenders report allows administrators to search for users with Multiple Violations issued. You can filter on Date, Ticket Type, Number of Violations and User Types.</td></tr><tr style="height: 55.2188px;"><td class="confluenceTd" style="height: 55.2188px;">Weekly Stat Report</td><td class="confluenceTd" style="height: 55.2188px;">The Weekly Stat Report is a listing of the number of Incidents listed by category and sub category filtered by date.</td></tr><tr style="height: 55.2188px;"><td class="confluenceTd" style="height: 55.2188px;">Calls For Service</td><td class="confluenceTd" style="height: 55.2188px;">  
</td></tr><tr style="height: 97.4375px;"><td class="confluenceTd" style="height: 97.4375px;">Incidents Summary Report</td><td class="confluenceTd" style="height: 97.4375px;">The Incidents Summary Report allows administrators to get a summary of all incidents that have been recorded within a specified time frame.  
From here, administrators can also get the details of a particular incident and make updates.</td></tr><tr style="height: 118.547px;"><td class="confluenceTd" style="height: 118.547px;">Incidents Summary Report  
by Category</td><td class="confluenceTd" style="height: 118.547px;">The Incidents Summary Report by Category allows administrators to get a summary of all incidents that have been recorded based on specified incident categories for a specified time frame.  
From here, administrators can also get the details of a particular incident and make updates.</td></tr><tr style="height: 118.547px;"><td class="confluenceTd" style="height: 118.547px;">Incident Summary Report  
by Sub-Location</td><td class="confluenceTd" style="height: 118.547px;">The Incidents Summary Report by Location allows administrators to get a summary of all incidents that have been recorded based on a specified location for a specified time frame.  
From here, administrators can also get the details of a particular incident and make updates.</td></tr><tr style="height: 97.4375px;"><td class="confluenceTd" style="height: 97.4375px;">Incidents GIS Report  
(Carleton Only)</td><td class="confluenceTd" style="height: 97.4375px;">  
</td></tr><tr style="height: 55.2188px;"><td class="confluenceTd" style="height: 55.2188px;">Unpaid In-house Report</td><td class="confluenceTd" style="height: 55.2188px;">  
</td></tr><tr style="height: 34.1094px;"><td class="confluenceTd" colspan="2" style="height: 34.1094px;">  
</td></tr><tr style="height: 34.1094px;"><td class="highlight-green confluenceTd" colspan="2" data-highlight-colour="green" style="height: 34.1094px;">**Payments Reports** <span class="confluence-anchor-link conf-macro output-inline" data-hasbody="false" data-macro-id="53e36c81-f142-4b02-9c86-6d2a34b7ee0c" data-macro-name="anchor" id="bkmrk--6"><span class="confluence-anchor-link" id="bkmrk--7"></span></span>

</td></tr><tr style="height: 55.2188px;"><td class="confluenceTd" style="height: 55.2188px;">Daily Payments</td><td class="confluenceTd" style="height: 55.2188px;">The Daily Payments report shows all of the submitted or processed payments in a certain time frame. It can be reduced to only show certain payment types during that time frame.</td></tr><tr style="height: 55.2188px;"><td class="confluenceTd" style="height: 55.2188px;">Unprocessed Payments</td><td class="confluenceTd" style="height: 55.2188px;">The Unprocessed Payment report will show all promises to pay that have been submitted but not yet marked as payments you have received. This report can be exported to Excel.</td></tr><tr style="height: 97.4219px;"><td class="confluenceTd" style="height: 97.4219px;">[Processed Payroll Deduction](https://opscom.wiki/books/system-reports/page/payroll-deduction-report)</td><td class="confluenceTd" style="height: 97.4219px;">The Processed Payroll Deduction Report allows the admin user to report on payments processed as payroll deductions through the system grouped by day for a user defined time frame.</td></tr><tr style="height: 266.312px;"><td class="confluenceTd" style="height: 266.312px;">More...: Payment Reports</td><td class="confluenceTd" style="height: 266.312px;">By clicking on "More..." the admin user will be taken to a page that offers several additional preset reports such as:

List Cheque Refunds  
List unprocessed Cash, Cheque, and Money Order payments  
List unprocessed Credit Card payments  
List unprocessed Payroll Deduction payments  
List unprocessed Internal payments  
List ALL unprocessed payments  
List ALL unprocessed adjustments  
List ALL Processed Payroll Deductions  
List Daily Processed Payments (by date range)  
List Daily Submitted Payments (by date range)

</td></tr><tr style="height: 76.3281px;"><td class="confluenceTd" style="height: 76.3281px;">Tax Exemption Report</td><td class="confluenceTd" style="height: 76.3281px;">This report will output an excel file listing all individuals that have a tax exemption number providing first name. last name and their respective tax exemption code.</td></tr><tr style="height: 97.4375px;"><td class="confluenceTd" style="height: 97.4375px;">Failed Payments</td><td class="confluenceTd" style="height: 97.4375px;">This report will show any automatic credit card payments that have failed at a certain point in time. If the payment is redone and successful after appearing in this report once it will still show up as a failed payment from during the original time frame unless it is cleared.

</td></tr><tr style="height: 76.3281px;"><td class="confluenceTd" style="height: 76.3281px;">Billing Account Setup Report</td><td class="confluenceTd" style="height: 76.3281px;">This report shows a list of users who do not have their subscription settings set, meaning they will not be able to pay for automatic payments, such as rollovers. It also lists any company that is not setup with a billing account.</td></tr><tr style="height: 34.1094px;"><td class="confluenceTd" colspan="2" style="height: 34.1094px;">  
</td></tr></tbody></table>

# User Management

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Registering a New User

<p class="callout info">User Registration allows OPSCOM administrators to manually create new user accounts, granting access to the User Portal. This process enables individuals to utilize features such as purchasing parking permits, renting lockers, and managing violations, ensuring a comprehensive record for each system user.</p>

### Setup &amp; Configuration

<p class="callout warning">There are a number of permissions you can enable that will allow you to have the full compliment of User Management controls. Everyone, does not need this level of access. It makes sense to restrict this to the Primary Admins. The permissions come standard to the Primary Admin role when OPSCOM is first installed.</p>

Admins who are setting up Users as part of their daily role, will need the **View Users** and the **Edit Users** permission found on the **User Management** tab.

1. Hover over **System Configuration,** then **Admin Management,** and click **Manage Roles.**
2. Click Permissions on the role you want to grant this to.
3. On the **User Management** tab, enable the **Edit Users** checkbox.
4. Enable the **View Users** checkbox.
5. Click **Save Permissions**.

<div _ngcontent-ng-c1014978951="" class="chat-history-scroll-container" id="bkmrk-"><div _ngcontent-ng-c1014978951="" class="conversation-container message-actions-hover-boundary ng-star-inserted"><div _ngcontent-ng-c1379262811=""><div _ngcontent-ng-c3275733674="" class="response-container ng-tns-c3275733674-100 response-container-with-gpi ng-star-inserted response-container-has-multiple-responses" jslog="173900;track:impression"><div _ngcontent-ng-c3275733674="" class="presented-response-container ng-tns-c3275733674-100"><div _ngcontent-ng-c3275733674="" class="response-container-content ng-tns-c3275733674-100"><div _ngcontent-ng-c1379262811="" class="response-content ng-tns-c3275733674-100"><div _ngcontent-ng-c2159209055="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr">---

</div></div></div></div></div></div></div></div>### Using this Feature

The user registration process involves two main stages: initial basic information entry and then full profile completion.

1. Hover over **User Management**, and click **User Registration**.

##### <span style="text-decoration: underline;">Basic User Information</span>

<div _ngcontent-ng-c1014978951="" class="chat-history-scroll-container" id="bkmrk-fill-out-the-initial"><div _ngcontent-ng-c1014978951="" class="conversation-container message-actions-hover-boundary ng-star-inserted"><div _ngcontent-ng-c1379262811=""><div _ngcontent-ng-c3275733674="" class="response-container ng-tns-c3275733674-100 response-container-with-gpi ng-star-inserted response-container-has-multiple-responses" jslog="173900;track:impression"><div _ngcontent-ng-c3275733674="" class="presented-response-container ng-tns-c3275733674-100"><div _ngcontent-ng-c3275733674="" class="response-container-content ng-tns-c3275733674-100"><div _ngcontent-ng-c1379262811="" class="response-content ng-tns-c3275733674-100"><div _ngcontent-ng-c2159209055="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr">1. Fill out the initial standard information on the **User Registration Form**: 
    - Select the appropriate [**User Type**](https://opscom.wiki/books/setup-configuration-for-admins/page/user-types) for the new user.
    - Enter a **Username** and the required basic user information (e.g., first name, last name, email).
2. Click **Submit Registration** to proceed to the next stage of profile setup.

</div></div></div></div></div></div></div></div>##### <span style="text-decoration: underline;">Completing and Activating the User Profile</span>

<div _ngcontent-ng-c1014978951="" class="chat-history-scroll-container" id="bkmrk-on-the-edit-user-pro"><div _ngcontent-ng-c1014978951="" class="conversation-container message-actions-hover-boundary ng-star-inserted"><div _ngcontent-ng-c1379262811=""><div _ngcontent-ng-c3275733674="" class="response-container ng-tns-c3275733674-100 response-container-with-gpi ng-star-inserted response-container-has-multiple-responses" jslog="173900;track:impression"><div _ngcontent-ng-c3275733674="" class="presented-response-container ng-tns-c3275733674-100"><div _ngcontent-ng-c3275733674="" class="response-container-content ng-tns-c3275733674-100"><div _ngcontent-ng-c1379262811="" class="response-content ng-tns-c3275733674-100"><div _ngcontent-ng-c2159209055="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr">1. On the **Edit User Profile** page, ensure the checkbox for **Allow user login and mark account as active** is enabled. 
    - <p class="callout warning">This setting activates the user's ability to self-manage their account via the **User Portal** and will prompt them to change their password upon their first login.</p>
2. Complete all remaining profile information, ensuring all [**mandatory fields**](https://opscom.wiki/books/setup-configuration-for-admins/page/defining-user-profile-settings) are filled. Refer to the linked wiki articles for each mentioned field below.
    
    
    - [Locker User Type](https://opscom.wiki/books/setup-configuration-for-admins/page/locker-user-types)
    - [Tax Exemption Code](https://opscom.wiki/books/the-opscom-admin-portal/page/using-tax-exemption)
    - [Company Member/Individual](https://opscom.wiki/books/the-opscom-admin-portal/page/user-company-editor)
        - Account number
        - Receives Invoice checkbox
    - [Department Name](https://opscom.wiki/books/setup-configuration-for-admins/page/manage-user-departments)
3. Click **Submit Profile Information**. The **Confirm Registration Information** screen will appear. Carefully verify that all information displayed is correct. 
    - If any edits are needed, click **Back** to return to the previous page.
    - When ready to proceed, click **Information Correct**.
    
    <p class="callout warning">Fields marked with a red exclamation mark (!)\* after a failed submission are mandatory fields that must be completed. Administrators with proper permissions can adjust which fields are [mandatory](https://opscom.wiki/books/setup-configuration-for-admins/page/defining-user-profile-settings). </p>
    
    ### Registration Completion
    
    <div _ngcontent-ng-c1014978951="" class="chat-history-scroll-container"><div _ngcontent-ng-c1014978951="" class="conversation-container message-actions-hover-boundary ng-star-inserted"><div _ngcontent-ng-c1379262811=""><div _ngcontent-ng-c3275733674="" class="response-container ng-tns-c3275733674-100 response-container-with-gpi ng-star-inserted response-container-has-multiple-responses" jslog="173900;track:impression"><div _ngcontent-ng-c3275733674="" class="presented-response-container ng-tns-c3275733674-100"><div _ngcontent-ng-c3275733674="" class="response-container-content ng-tns-c3275733674-100"><div _ngcontent-ng-c1379262811="" class="response-content ng-tns-c3275733674-100"><div _ngcontent-ng-c2159209055="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr">
    - You will be directed back to the **Edit User Profile** screen, where a pop-up will confirm that the user profile was successfully updated.
    - The registration process is now complete. [Refer to this wiki article](https://opscom.wiki/books/the-opscom-admin-portal/page/user-profile-overview) to see what you can do now that you have a User Profile entered.
    
    ---
    
    </div></div></div></div></div></div></div></div>### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>
    
    <div _ngcontent-ng-c1014978951="" class="chat-history-scroll-container" id="bkmrk-mandatory-field-mana"><div _ngcontent-ng-c1014978951="" class="conversation-container message-actions-hover-boundary ng-star-inserted" id="bkmrk-mandatory-field-mana-1"><div _ngcontent-ng-c1379262811=""><div _ngcontent-ng-c3275733674="" class="response-container ng-tns-c3275733674-100 response-container-with-gpi ng-star-inserted response-container-has-multiple-responses" jslog="173900;track:impression"><div _ngcontent-ng-c3275733674="" class="presented-response-container ng-tns-c3275733674-100"><div _ngcontent-ng-c3275733674="" class="response-container-content ng-tns-c3275733674-100"><div _ngcontent-ng-c1379262811="" class="response-content ng-tns-c3275733674-100"><div _ngcontent-ng-c2159209055="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk-mandatory-field-mana-2">
    - <span style="color: rgb(22, 145, 121);">**Mandatory Field Management**: Understand that administrators with appropriate permissions can adjust which fields are mandatory for user profiles via **System Settings &gt; User Profile**. Review these settings to ensure all necessary data is collected during registration.</span>
    - <span style="color: rgb(22, 145, 121);">**Password Prompt**: Inform new users that they will be prompted to change their password upon their first login to the User Portal.</span>
    - <span style="color: rgb(22, 145, 121);">**User Type Selection**: Accurately select the **User Type** during registration, as this impacts the user's access to lots, payment types, and profile field visibility.</span>
    - <span style="color: rgb(22, 145, 121);">**Post-Registration Actions**: After registration, the system allows immediate actions like adding a vehicle or purchasing a permit. Guide the user or perform these actions as per your organizational workflow.</span>
    - <span style="color: rgb(22, 145, 121);">**Email Verification (If Configured)**: If your system is configured to require email verification for new accounts (a setting outside of this specific registration process), ensure the user knows to check their email for the verification link before they can fully log in, even if you manually registered them.</span>
    
    </div></div></div></div></div></div></div></div>

</div></div></div></div></div></div></div></div>

# User Search

<p class="callout info">**User Search** provides administrators with a powerful tool to quickly locate and access specific user accounts within the system. This feature enables efficient viewing and editing of user information, supporting various administrative tasks such as profile updates, violation management, and permit assignment.</p>

### Using this Feature

The **User Search** screen allows you to input various criteria to find specific users and refine your search results.

1. Hover over **User Management,** and click **User Search**.

##### <span style="text-decoration: underline;">Entering Search Criteria</span>

1. Click the Toggle More Options button to see all available fields on the **User Search** screen.
2. Refine your search results by selecting one of the following radio button options: 
    - **Any Users**: Displays both enabled and disabled user accounts.
    - **Enabled Only**: Displays only active user accounts.
    - **Disabled Only**: Displays only disabled user accounts.
3. Enter your parameters and click the **Search** button.
4. The search results will appear in a table below the criteria box.

<p class="callout warning">There is a limit to how many records will return. If you see the message "The search has returned more records than allowed and has been truncated. Please refine your search." You will need to narrow down your criteria.</p>

##### <span style="text-decoration: underline;">Available Actions from Search Results</span>

From the search results table, you can typically perform various actions by clicking on the user's name or associated icons, such as:

- Click on any **column header** to resort the results alphabetically.
- Click the **Username** button to access the [**User Profile Landing Page**](https://opscom.wiki/books/the-opscom-admin-portal/page/user-profile-overview).
- Click the **Envelope** icon to start an [email](https://opscom.wiki/books/customization-and-integration/page/sending-email-with-OPSCOM) to that user.
- Click the **Clock** icon to shortcut to the [user history](https://opscom.wiki/books/the-opscom-admin-portal/page/user-history-tab).
- Although no export button is available, it is possible to copy the search results directly into Excel or Google Sheets.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Combine Criteria**: For more precise results, especially in systems with many users, combine multiple search criteria (e.g., first name and last name, or username and User Type).</span>
- <span style="color: rgb(22, 145, 121);">**Utilize "Toggle More Options"**: Don't hesitate to use the expanded search options when you need to find users based on less common data points.</span>
- <span style="color: rgb(22, 145, 121);">**Disabled Accounts**: Remember to select "Any Users" or "Disabled Only" if you are looking for accounts that may have been deactivated.</span>
- <span style="color: rgb(22, 145, 121);">**Data Integrity**: Accurate and up-to-date user information in the system will yield more reliable search results.</span>
- <span style="color: rgb(22, 145, 121);">**Quick Access**: Use the User Search as your primary tool for quickly navigating to a user's comprehensive profile for any administrative task.</span>

# User Profile Overview

<p class="callout info">The **User Profile Landing Page** in OPSCOM serves as an administrator's central dashboard for a user's comprehensive information and current activity. This page offers a quick reference view, enabling efficient access and management of user details, associated vehicles, violations, permits, and other crucial historical data.</p>

### Using this Feature

1. To navigate quickly to a user's profile, you can use the [**Quick Search**](https://opscom.wiki/books/the-opscom-admin-portal/page/quick-search-tool-functionality) function or hover over [**User Management**](https://opscom.wiki/books/the-opscom-admin-portal/page/user-search), and click **User Search**.
2. Locate and select a user, and the **User Profile Overview** page will be displayed. This page provides various sections and actions for managing user data and viewing their history.

##### <span style="text-decoration: underline;">Editing a User's Basic Profile</span>

1. Click the **Edit** button on the **Basic Profile Information** section.
2. The full user profile editing form will display, allowing you to update various account details. 
    - The **Edit User Profile** form is structured into three main categories: **Personal Information**, **Student Information**, and **Staff/Faculty Information**. Each category contains various fields that can be individually set to **Hidden**, **Visible**, or **Required** ([as defined in your System Settings for User Profiles](https://opscom.wiki/books/setup-configuration-for-admins/page/defining-user-profile-settings)).

##### <span style="text-decoration: underline;">Logging in as a User</span>

This feature allows administrators to view the system from an end-user's perspective.

1. Click the **Login as user** button**.**
2. A new browser window will open, automatically logging you into the OPSCOM end-user portal as the selected user, with all their associated functionalities.

<p class="callout warning">You may encounter an error if the Auto Login setting is not configured correctly in System Settings. If this occurs, please contact [OPSCOM Support](mailto:support@ops-com.comcom) for assistance.</p>

##### <span style="text-decoration: underline;">Viewing a User's Waitlist Position</span>

If the user is on any waitlists, you will see the lots and their ranks listed in this section.

##### <span style="text-decoration: underline;">Adding or Editing Vehicles</span>

1. In the **Vehicles** section, click **Edit**.
2. You will be directed to the [**Vehicle Information** screen](https://opscom.wiki/books/the-opscom-admin-portal/page/user-vehicles-tab), where you can: 
    - **Add new vehicles** to the user's profile.
    - **Edit or remove** existing associated vehicles.
    - **Apply a DNTT (Do Not Ticket Tag)** to a specific vehicle.

##### <span style="text-decoration: underline;">Viewing Additional Information</span>

The User Profile Landing Page provides immediate access to a wealth of additional user-specific data:

1. The dashboard sections offer direct access to information regarding **Alarms**, **Deposits**, **Violations**, **User Notes**, and **Permit details**.
2. Any active alerts or warnings associated with the user's profile will be prominently displayed at the **top of the page**.
3. Active Deposits on the user account will be displayed if any exist.
4. Private user notes will be displayed and you can also add additional notes here.
5. **For Violations**: 
    - View detailed violation information by clicking the **ticket number** within the **Violations** section.
    - If available, view photos related to a violation by clicking the **camera icon** next to the ticket number.
6. **For Permits**: 
    - Access detailed permit information by clicking the **permit number** in the **Active Permits** section.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Centralized Management**: Utilize the User Profile Landing Page as your primary hub for managing all aspects of a user's interaction with the OPSCOM system.</span>
- <span style="color: rgb(22, 145, 121);">**Efficient Troubleshooting**: When a user reports an issue, navigating to their profile landing page allows for a quick overview of their status, active permits, and recent violations, which can greatly aid in troubleshooting.</span>
- <span style="color: rgb(22, 145, 121);">**Testing User Experience**: The "Login as user" feature is invaluable for testing new configurations, verifying user access, or replicating user-reported issues directly from their perspective.</span>
- <span style="color: rgb(22, 145, 121);">**Comprehensive History**: Leverage the integrated views of alarms, violations, and permit details to understand a user's complete history within the system, informing decisions related to appeals, permit renewals, or enforcement actions.</span>

# Payment Management (Subscriptions)

<p class="callout info"><span data-colorid="laxbbnsz3w">Subscriptions are used to allow you to tag a default method of payment for any permits that you roll over from month to month. You can use payroll deductions, EFT, or credit cards as payment methods for subscriptions. Subscriptions only affect permits that are being rolled over from a previous allocation period. Users can manage multiple payment methods on their account through the user portal but only one method may be set as primary. Admins can also add payment method details to a user profile.</span></p>

<p class="callout warning"><span data-colorid="laxbbnsz3w">In order for subscriptions to function, the user must provide information pertaining to the payment method they wish to use for their subscription service.</span></p>

There are three main payment types that are used for subscription services:

<div class="columnLayout single" data-layout="single" id="bkmrk-electronic-funds-tra"><div class="cell normal" data-type="normal"><div class="innerCell">- Electronic Funds Transfer (Must be entered in the system by an Administrator)
- Credit Card (Can be entered both by the client through their online profile as well as by an Administrator)
- Payroll Deduction (Handled by the Administrator through the OPSCOM System)

</div></div></div>##### **Quick Steps:**

1. Search and select the **User Profile**.
2. Using the **Profile** dropdown, click **Manage Payment Methods**.
3. To add a payment method click **Add New Payment Method** under **Payment Subscription Options.**
4. To use a payment type for recurring payments or to be auto-charged for Permit Rollovers, click the drop down and chose the payment type from the dropdown under **Permit Rollover Subscription** and then click **Save.**
5. You will see a popup indicating that your permit rollover subscription has been updated.

##### **Step by Step Instructions:**

1. **Search for the User**:
    
    
    - Use the **Quick** **Search** or **User Search** functions to locate the user whose credit card you want to manage.
    - Select the **User** to access their **Profile**.
2. **Access Manage Payment Methods**:
    
    
    - Use the **Profile** menu dropdown to choose **Manage Payment Methods**.
3. **Add a Payment Method**:
    
    
    - Under **Payment Subscription Method** on the right side of the screen, click **Add New Payment Method**.
    - When you have added your credit card information, click **Add Payment Method** button to register in the system.
    - If choosing **EFT** **(Electronic Funds Transfer)** as your new payment method, you will need to also fill out a Label (typically the bank name and type of account, i.e.: Savings) and the user's banking information before clicking **Add Bank Information** button to register in the system.

<p class="callout warning">**Note:** EFT can only be used for subscriptions and cannot be used to pay for any other items. </p>

1. **Add Permit Rollover Subscription**:
    
    
    - Choose the **Payment Method** from the dropdown list under **Permit Rollover Subscription** on left side of screen.
    - Click **Save**.
    - You will see a popup indicating that the subscription payment method has been saved/updated.

<p class="callout warning">To do this, Admins must have the **Allow Credit Card Processing** setting turned on in **System Settings &gt; Permits.**</p>

<p class="callout warning">To use this card to pay for recurring permits, the user must have purchased their previous permit through the same payment type so that the system would have a record of the payment type used.</p>

# Archiving or Disabling a User

<p class="callout info">**Archiving or Disabling a User Account** in OPSCOM allows administrators to deactivate user access while preserving their historical data. This process is crucial for managing user access permissions, maintaining data integrity for past transactions and activities, and ensuring compliance when a user's role changes or they leave the organization.</p>

<div _ngcontent-ng-c1014978951="" class="chat-history-scroll-container" id="bkmrk-"><div _ngcontent-ng-c1014978951="" class="conversation-container message-actions-hover-boundary ng-star-inserted"><div _ngcontent-ng-c1379262811=""><div _ngcontent-ng-c3275733674="" class="response-container ng-tns-c3275733674-110 response-container-with-gpi ng-star-inserted response-container-has-multiple-responses" jslog="173900;track:impression"><div _ngcontent-ng-c3275733674="" class="presented-response-container ng-tns-c3275733674-110"><div _ngcontent-ng-c3275733674="" class="response-container-content ng-tns-c3275733674-110">  
</div></div></div></div></div></div>### Using this Feature

The process of archiving or disabling a user account begins by accessing their individual profile through the [**User Profile Landing Page**](https://opscom.wiki/books/the-opscom-admin-portal/page/user-profile-overview).

<div _ngcontent-ng-c1014978951="" class="chat-history-scroll-container" id="bkmrk-locate-the-user-you-"><div _ngcontent-ng-c1014978951="" class="conversation-container message-actions-hover-boundary ng-star-inserted"><div _ngcontent-ng-c1379262811=""><div _ngcontent-ng-c3275733674="" class="response-container ng-tns-c3275733674-110 response-container-with-gpi ng-star-inserted response-container-has-multiple-responses" jslog="173900;track:impression"><div _ngcontent-ng-c3275733674="" class="presented-response-container ng-tns-c3275733674-110"><div _ngcontent-ng-c3275733674="" class="response-container-content ng-tns-c3275733674-110"><div _ngcontent-ng-c1379262811="" class="response-content ng-tns-c3275733674-110"><div _ngcontent-ng-c2159209055="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr">1. Locate the user you wish to edit/update by [searching](https://opscom.wiki/books/the-opscom-admin-portal/page/user-search).
2. Click on the **Username** from the search results, and their **User Profile Landing Page** will display.
3. Confirm that the name of the user displayed at the top right-hand corner of the page matches the user whose account you intend to modify.

</div></div></div></div></div></div></div></div>You can choose to either temporarily disable a user's login access or perform a more formal archive, often linking to an **Archive User Type**.

##### <span style="text-decoration: underline;">Disabling a User Account (Preventing Login)</span>

This method revokes a user's ability to log in to their OPSCOM account while keeping their profile and data fully intact for administrative reference.

<div _ngcontent-ng-c1014978951="" class="chat-history-scroll-container" id="bkmrk-click-the-edit-butto"><div _ngcontent-ng-c1014978951="" class="conversation-container message-actions-hover-boundary ng-star-inserted"><div _ngcontent-ng-c1379262811=""><div _ngcontent-ng-c3275733674="" class="response-container ng-tns-c3275733674-110 response-container-with-gpi ng-star-inserted response-container-has-multiple-responses" jslog="173900;track:impression"><div _ngcontent-ng-c3275733674="" class="presented-response-container ng-tns-c3275733674-110"><div _ngcontent-ng-c3275733674="" class="response-container-content ng-tns-c3275733674-110"><div _ngcontent-ng-c1379262811="" class="response-content ng-tns-c3275733674-110"><div _ngcontent-ng-c2159209055="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr">1. Click the **Edit** button on the **Basic Profile Information** bar, or click the **Profile** dropdown menu and select **Edit Profile Information**.
2. The **Edit User Profile** screen will be displayed.
3. Locate and **disable** the **Allow user to login and mark account as active** checkbox.
4. Click the **Submit Registration Information for Processing** button at the bottom of the page.
5. On the **Confirm Registration Information** screen, click the **Information Correct** button to submit the change. The user's account will now be disabled.

</div></div></div></div></div></div></div></div>##### <span style="text-decoration: underline;">Archiving a User Account (Categorized Disablement)</span>

Archiving provides a structured way to disable a user account by assigning it to a specific "Archive Type," which can be useful for reporting or internal tracking.

<div _ngcontent-ng-c1014978951="" class="chat-history-scroll-container" id="bkmrk-follow-the-steps-1--"><div _ngcontent-ng-c1014978951="" class="conversation-container message-actions-hover-boundary ng-star-inserted"><div _ngcontent-ng-c1379262811=""><div _ngcontent-ng-c3275733674="" class="response-container ng-tns-c3275733674-110 response-container-with-gpi ng-star-inserted response-container-has-multiple-responses" jslog="173900;track:impression"><div _ngcontent-ng-c3275733674="" class="presented-response-container ng-tns-c3275733674-110"><div _ngcontent-ng-c3275733674="" class="response-container-content ng-tns-c3275733674-110"><div _ngcontent-ng-c1379262811="" class="response-content ng-tns-c3275733674-110"><div _ngcontent-ng-c2159209055="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr">1. Follow the steps 1-3 above.
2. On the **Archive Type** dropdown list, choose an appropriate **Archive User Type** from this dropdown list (e.g., "Former Student," "Terminated Staff," "Account Closed"). You must have created [user types](https://opscom.wiki/books/setup-configuration-for-admins/page/user-types) for this purpose if you want to see them in the drop down list.
3. Click the **Archive User** button.
4. Click **OK** on the confirmation pop-up to finalize the archiving process.

---

</div></div></div></div></div></div></div></div>### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

<div _ngcontent-ng-c1014978951="" class="chat-history-scroll-container" id="bkmrk-data-integrity%3A-disa"><div _ngcontent-ng-c1014978951="" class="conversation-container message-actions-hover-boundary ng-star-inserted" id="bkmrk-data-integrity%3A-disa-1"><div _ngcontent-ng-c1379262811=""><div _ngcontent-ng-c3275733674="" class="response-container ng-tns-c3275733674-110 response-container-with-gpi ng-star-inserted response-container-has-multiple-responses" jslog="173900;track:impression"><div _ngcontent-ng-c3275733674="" class="presented-response-container ng-tns-c3275733674-110"><div _ngcontent-ng-c3275733674="" class="response-container-content ng-tns-c3275733674-110"><div _ngcontent-ng-c1379262811="" class="response-content ng-tns-c3275733674-110"><div _ngcontent-ng-c2159209055="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk-data-integrity%3A-disa-2">- <span style="color: rgb(22, 145, 121);">**Data Integrity**: Disabling or archiving an account is the best practice instead of attempting to delete a user. User accounts often have associated historical data (permits, violations, payments, login history), and direct deletion would compromise data integrity and historical reporting.</span>
- <span style="color: rgb(22, 145, 121);">**Permissions**: Remember that a disabled or archived user account retains its assigned roles and permissions for reporting purposes, even though the user can no longer act on them.</span>
- <span style="color: rgb(22, 145, 121);">**Reversibility**: Disabling an account is typically reversible. You can reactivate an account by re-checking the **Allow user to login and mark account as active** checkbox in their profile.</span>
- <span style="color: rgb(22, 145, 121);">**Archive Types**: Utilize different "Archive User Types" to categorize why an account was disabled (e.g., account closed, left organization, temporary suspension). This can be valuable for internal auditing and future reference.</span>
- <span style="color: rgb(22, 145, 121);">**Communication**: Ensure clear internal communication within your organization regarding the process for disabling/archiving user accounts and the reasons behind it.</span>
- <span style="color: rgb(22, 145, 121);">**Security**: Disabling accounts promptly when a user's access is no longer required is a critical security measure to prevent unauthorized access.</span>

</div></div></div></div></div></div></div></div>

# Using Tax Exemption

<p class="callout info">OPSCOM supports **Tax Exemption Codes** for users, allowing the system to automatically waive applicable taxes during their purchases of items like permits, violations, and lockers. This feature ensures accurate billing for tax-exempt individuals or organizations and simplifies compliance with specific tax regulations.</p>

### Using this Feature

1. Locate the user you wish to edit/update by [searching](https://opscom.wiki/books/the-opscom-admin-portal/page/user-search).
2. Click on the **Username** from the search results, and their [**User Profile Landing Page**](https://opscom.wiki/books/the-opscom-admin-portal/page/user-profile-overview) will display.
3. Confirm that the name of the user displayed at the top right-hand corner of the page matches the user whose account you intend to modify.
4. Click the **Edit** button on the **Basic Profile Information** bar, or click the **Profile** dropdown menu and select **Edit Profile Information**.

##### <span style="text-decoration: underline;">Adding or Updating a Tax Exemption Code</span>

1. On the **Edit User Profile** screen, locate the **Tax Exemption Code** field.
2. Enter or update the alphanumeric tax exemption code in this field.
3. Click **Submit Profile Information**.
4. On the subsequent confirmation screen, click **Information Correct** to save the changes to the user's profile.

##### <span style="text-decoration: underline;">Verifying the Tax Exemption Code</span>

The **Tax Exemption Code** is displayed in the **Profile Overview** window on the user's profile landing page for easy reference, allowing administrators to quickly verify its presence.

##### <span style="text-decoration: underline;">Tax-Free Transactions</span>

When a user with a valid tax exemption code on their profile proceeds to purchase items (such as a permit), applicable taxes will **not** appear as a line item on the payment or confirmation page. The system automatically waives these taxes.

##### <span style="text-decoration: underline;">Generating the Tax Exemption Report</span>

Administrators can generate a report to view all users with active tax exemption codes.

1. Generate the **Tax Exemption Report** from the **Payments** menu.
2. This report includes three key fields: **First Name**, **Last Name**, and **Tax Exemption Code**.
3. You can print or export the report records for further use, such as auditing or external reporting.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Accuracy is Crucial**: Ensure that tax exemption codes are accurately entered and validated against official documentation to maintain compliance and prevent incorrect billing.</span>
- <span style="color: rgb(22, 145, 121);">**Internal Verification**: Establish clear internal procedures for verifying a user's eligibility for tax exemption before entering a code on their profile.</span>
- <span style="color: rgb(22, 145, 121);">**Compliance**: Understand your organization's tax compliance requirements and how this feature integrates with your overall financial processes.</span>
- <span style="color: rgb(22, 145, 121);">**Reporting and Auditing**: Regularly run and review the **Tax Exemption Report** for auditing purposes, ensuring that all tax-exempt transactions are correctly accounted for and supported.</span>
- <span style="color: rgb(22, 145, 121);">**User Communication**: Clearly communicate tax exemption policies to eligible users.</span>

# Retrieving Uploaded Files

<p class="callout info"><span style="color: rgb(0, 0, 0);">This article provides instructions for OPSCOM administrators on how to manage files uploaded by users. It covers the process of locating, viewing, and deleting user-submitted files from within the administrative portal.</span></p>

### <span style="color: rgb(0, 0, 0);">Using this Feature</span>

<span style="color: rgb(0, 0, 0);">File management is a standard feature which requires the appropriate administrator permissions:</span>

- **<span style="color: rgb(0, 0, 0);">View User Uploads: </span>**<span style="color: rgb(0, 0, 0);">Lets the administrator view the files that have been uploaded by a user.</span>
- **<span style="color: rgb(0, 0, 0);">Delete User Uploads: </span>**<span style="color: rgb(0, 0, 0);">Lets the administrator delete the files uploaded by users.</span>

<span style="color: rgb(0, 0, 0);">Additionally, it is important to understand the roles for uploading and managing files:</span>

- <span style="color: rgb(0, 0, 0);">**Admin Side:** Administrators can only view and delete files from the admin portal. They cannot upload files on behalf of a user from this interface.</span>
- <span style="color: rgb(0, 0, 0);">**User Side:** Only users can upload files to their own profiles.</span>

<span style="color: rgb(0, 0, 0);">[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/BZYimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/BZYimage.png)</span>

<span style="color: rgb(0, 0, 0);">All file management tasks for a specific user begin from their profile page in the admin portal.</span>

##### <span style="text-decoration: underline; color: rgb(0, 0, 0);">Viewing Uploaded Files</span>

1. <span style="color: rgb(0, 0, 0);">Navigate to the target user's profile.</span>
2. <span style="color: rgb(0, 0, 0);">Scroll down to the Uploaded Files section on the user's dashboard.</span>

- <span style="color: rgb(0, 0, 0);">This section displays a preview of the five most recently uploaded files.</span>
- <span style="color: rgb(0, 0, 0);">To view a specific file, click on the hyperlinked file name.</span>
- <span style="color: rgb(0, 0, 0);">To view all uploaded files for the user, click the Manage button. This will take you to the user's main Uploaded Files page.</span>

##### <span style="text-decoration: underline;"><span style="color: rgb(0, 0, 0); text-decoration: underline;">Deleting an Uploaded File</span></span>

1. <span style="color: rgb(0, 0, 0);">From the user's profile, click the View All button in the Uploaded Files section to access the full list of files.</span>
2. <span style="color: rgb(0, 0, 0);">On the Uploaded Files page, locate the file you wish to remove.</span>
3. <span style="color: rgb(0, 0, 0);">Click the Delete button associated with that file.</span>

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Uploading Files for a User:** Administrators cannot directly upload files to a user's profile. To upload a file on behalf of a user, you must use the Login as User feature and follow the user-side workflow. Instructions can be found in the Uploading Files from the User-side article.</span>
- **Viewing/Deleting User Files:** To view or delete user-uploaded files, ensure you have the appropriate permissions to perform these actions.

<p class="callout warning"><span style="color: rgb(0, 0, 0);">**File Deletion is Permanent:** Once a file is deleted, it ***cannot*** be recovered. Always verify you are deleting the correct file before confirming the action.</span></p>

# Registering a Locker for a User

<p class="callout info">The **Lockers** tab on the **User Landing Page** allows administrators to rent lockers to users. Users can also self-manage their locker purchases by logging into the User Portal.  
**Before** a locker can be registered for a user, the locker inventory must be configured in OPSCOM. This includes setting up **Buildings**, locker room locations (e.g., **Men's Locker Room**), individual locker numbers, and any associated fees.</p>

### Locker Registration Process

1. Go to **User Management**, then **Search Users** for the user you wish to register a locker for. Click their **Username** to navigate to their **Profile**.
2. In the user's profile, click the **Lockers** button to open the locker registration interface for that user.
3. On the **Locker Registration** page, select the appropriate building from the list under the **Available Buildings** heading.
4. **Choose a Location:** The screen will refresh to the **Locker Registration - Locker Selection** page. Click the drop-down menu to choose the specific locker location (e.g., **Men's Locker Room**).
5. **Reserve a Locker:** A list of available lockers will be displayed. Select the desired locker number from the list.
6. Click the **Reserve This Locker** button to proceed.
7. **Confirm the Reservation:** The **Confirm Locker Reservation** screen will appear, summarizing the details. Carefully verify the information and click the **Confirm Information** button.
8. **Process Payment:** You will be directed to the **Payments Due** screen. To finalize the registration, click the **Proceed to Payment** button and complete the transaction as required.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Payment Finalizes Reservation**: In most configurations, a locker reservation is not considered final until payment has been successfully processed. If you navigate away from the **Payments Due** screen without completing the transaction, the locker may be released back into the available inventory.</span>

<p class="callout warning">**Verify the Username**: Before selecting a locker, always double-check that the correct user's name is displayed in the top-right corner of the **Locker Registration** screen. This ensures you are assigning the locker to the correct profile.</p>

# User - Vehicles Tab

<p class="callout info">The **Vehicles tab** on the **Edit User Profile screen** allows administrators to add, edit and remove vehicles associated to user. This is also where administrators would add/remove **DNTT** (Do Not Ticket or Tow) information to a vehicle. </p>

### Managing User Vehicles

This article provides instructions for OPSCOM administrators on how to manage vehicles associated with a user's profile. It covers the complete lifecycle of vehicle management, including adding, editing, activating or deactivating, and removing vehicles, as well as managing Do Not Ticket or Tow (DNTT) statuses.

### Using this Feature

All vehicle management tasks are performed from within a specific user's profile.

##### <span style="text-decoration: underline;">Navigating to the Vehicle Information Page</span>

1. Go to **User Management** and click **User Search**.
2. Use the search fields (e.g., **name**, **username**, **email**, or **account number**) to find the desired user.
3. From the search results, click the user's **Username** to open their **Profile Page**.
4. Click the **Vehicles** tab to access the **Vehicle Information page**, which lists all vehicles associated with that user.

##### <span style="text-decoration: underline;">Adding a New Vehicle</span>

1. On the **Vehicle Information page**, click the **Add New Vehicle** button.
2. On the **Add New Vehicle Information** screen, fill in all required vehicle details.
3. Click the **Add New Vehicle** button at the bottom of the form to save.

##### <span style="text-decoration: underline;">Editing a Vehicle</span>

1. In the vehicle list, click the hyperlinked license **Plate** of the vehicle you wish to edit.
2. In the **Vehicle Information** window that appears, modify the necessary details.
3. Click the **Update Vehicle** button to save your changes.

##### <span style="text-decoration: underline;">Activating or Deactivating a Vehicle</span>

1. In the vehicle list, locate the **Status** column for the desired vehicle.
2. The current status will be shown as a link (either **Active** or **Inactive**). Click this link to toggle the vehicle's status.

##### <span style="text-decoration: underline;">Removing a Vehicle from a User Profile</span>

1. In the vehicle list on the user's profile, click the **X** icon in the row of the vehicle you want to remove.
2. Confirm the action in the subsequent prompt to finalize the removal.

<p class="callout info">See the article [Unlink a Vehicle from User Profile](https://opscom.wiki/books/the-opscom-admin-portal/page/unlink-a-vehicle-from-user-profile) for the requirements to remove a vehicle from a user's profile.</p>

##### <span style="text-decoration: underline;">Managing Do Not Ticket or Tow (DNTT) Status</span>

1. In the vehicle list, click the **Record DNTT Link**.
2. This interface allows you to add, edit, or remove a **Do Not Ticket or Tow (DNTT)** notation. This status can prevent violation issuance under specific, pre-defined conditions (e.g., in a certain lot or during a specific time).

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

<div class="warning-box" id="bkmrk-if-you-add-a-new-veh">- <span style="color: rgb(22, 145, 121);">If you add a new vehicle but the details do not save correctly, it is likely because that license plate already exists in the system (associated with another user or archived). The vehicle must be properly associated with the current user before all details can be edited.</span>
- Removing a vehicle only disassociates it from the current user's profile; it does **not** delete the vehicle record from the system. If the vehicle is associated with only one user, it will be archived. If it is associated with multiple users, it will remain active on the other user profiles.

</div><p class="callout warning">**Clear Balances Before Removal**: Before removing a vehicle that is only associated with one user, ensure any outstanding balances or violations tied to that vehicle are cleared.</p>

# Edit Primary Driver

<p class="callout info">This article explains the process for OPSCOM administrators to set or change the **Primary Driver** for a vehicle. The **Primary Driver** designation is used to identify the main user responsible for a vehicle, ensuring they receive all official communications like violation notices. This guide is essential when a vehicle is associated with multiple user profiles.</p>

### Using this Feature

The option to change the **Primary Driver** is only available when a single vehicle is associated with two or more user profiles. If a vehicle is only linked to one user, that user is automatically designated as the **Primary Driver**, and the selection field will not be visible.

<p class="callout info">The **Primary Driver** designation is managed from the vehicle editing screen within any associated user's profile.</p>


##### <span style="text-decoration: underline;">How to Change the Primary Driver</span>

1. Go to **User Management** and click **User Search**. Find any user associated with the vehicle and click on their **Username** to open their **Profile Page**.
2. Click the **Vehicles** tab.
3. In the list of vehicles, locate the desired vehicle and click the hyperlinked license **Plate**. This will open the **Edit Vehicle** screen.
4. Locate the **Primary Driver** drop-down menu. The list will contain all users associated with the vehicle.
5. Click the menu and select the name of the user you want to designate as the new **Primary Driver**.
6. Click the **Update Vehicle** button to apply the change. The system will now recognize the selected user as the vehicle's primary point of contact.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**The Role of the Primary Driver**: A nightly system process automatically attempts to assign a **Primary Driver** to any new vehicle. Furthermore, if a violation appeal is submitted for a vehicle that lacks a designated **Primary Driver**, the system will automatically assign the role to the user who submitted the appeal. This ensures there is always a designated contact for communications.</span>
- <span style="color: rgb(22, 145, 121);">**Correcting Legacy Records**: If you encounter an older vehicle record with multiple users designated as **Primary Driver**, simply follow the steps above to select the correct one. When you save the change, the system will automatically remove the incorrect legacy designations from the other associated users.</span>

# Unlink a Vehicle from User Profile

<p class="callout info">This article provides instructions for OPSCOM users on how to remove the association between a vehicle and a user profile. This process is necessary when a user no longer owns a vehicle, or to correct a vehicle that was mistakenly linked to the wrong user account.</p>

### Rules to Remember

- In order for a user to remove a vehicle from their profile, these must all be true:
    
    
    - The setting to allow users to remove a vehicle must be enabled
    - The vehicle must not have any directly associated active standard or temp permits
    - The vehicle must not be associated to any incidents
    - The vehicle must not have any alerts on it
    - The vehicle must not have any valid violations
    - If the vehicle has a violation that was marked as a warning, the setting to allow this type of removal must be enabled first
- There is no minimum amount of time a vehicle is required to be dormant before it can be removed.
- These restrictions **do not** apply to admins removing vehicles from a user profile.

<p class="callout warning">**Important:** The **Allow users to delete vehicles** setting must be enabled under **System Configuration &gt; System Settings &gt; Vehicles** in order for users to delete vehicles from their profile.</p>

### Using This Feature

1. Login to your account on the user portal for your organization
2. Click on the Vehicles tab
3. Find the vehicle's plate you wish to remove, and click on the Remove button, with the trash can icon.
4. Click the **Vehicles** tab.

<p class="callout info">**Note**: If you have been involved in incidents or the vehicle has outstanding fines and fees associated with it, you will **not** be able to remove it.</p>

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Understanding Vehicle Removal**: Removing a vehicle only disassociates it from the current user's profile; it does **not** delete the vehicle record from the system itself. If the vehicle is associated with only one user, its record will be archived. If it is associated with multiple users, it will simply be removed from the current profile while remaining active on the other associated user profiles.</span>
- <span style="color: rgb(22, 145, 121);">**Clear Outstanding Balances First**: Before removing a vehicle that is only associated with a single user, it is critical to ensure all outstanding violations or fees tied to that vehicle have been resolved.</span>

# Understanding & Controlling Active Vehicles

## Question

What is an active vehicle and how does it relate to the permits a user buys?

In our scenario, we require our end users to buy a permit for every active vehicle on their account. So if you have two active vehicles you must have two permits. What happens on rollovers though? If they only have one permit roll over but they still have two active vehicles? Does the system deactivate one vehicle?

## Answer

Think of an Active Vehicle as any license plate you’ve told our system is ready to use a parking permit.

- It's a "Ready" Status: This status just means the vehicle is registered and eligible. It doesn't mean it's currently assigned to a valid permit.
- The Limit: The [maximum number of vehicles you can have "Active" is set by your User Type](https://opscom.wiki/books/setup-configuration-for-admins/page/limiting-active-vehicles).

The answer in your scenario is No, the system does not automatically deactivate the extra vehicle.

- The system treats your vehicle's status as "STICKY". It assumes you might want to use that same vehicle again.
- So, if you had two Active Vehicles and only bought one permit for the new year, the system leaves you with two Active Vehicles and one Active Permit.
- This creates that mismatch you asked about! Your staff must use the **[Active Vehicle Report](https://opscom.wiki/books/the-opscom-admin-portal/page/active-vehicle-report).** This report finds every customer who has more active vehicles than permits. You can use it to deactivate the extra vehicle and make sure your vehicle count matches your permit count.

###  Remember...

<table data-path-to-node="6" id="bkmrk-%C2%A0-active-vehicle-cou"><thead><tr><td> </td><td><span style="background-color: rgb(248, 202, 198);">**Active Vehicle Count**</span></td><td><span style="background-color: rgb(248, 202, 198);">**Active Permit Count**</span></td></tr></thead><tbody><tr><td data-path-to-node="6,1,0,0">**What It Is**</td><td data-path-to-node="6,1,1,0">How many license plates you have marked as 'Ready'.</td><td data-path-to-node="6,1,2,0">How many valid permits you bought for the new year.</td></tr><tr><td data-path-to-node="6,2,0,0">**Rollover Status**</td><td data-path-to-node="6,2,1,0">**STICKY!** This count carries over from year to year.</td><td data-path-to-node="6,2,2,0">**RESET!** Only new permits count.</td></tr></tbody></table>

---

- **Too Many Cars, Too Few Permits?** If you have 2 active vehicles but only 1 permit, you may need to need to reach out to your users to get them to clean it up.

# User - Parking Tab

<p class="callout info">This article provides instructions for OPSCOM administrators on how to purchase both standard and temporary parking permits on behalf of a user. All actions are performed from the **Parking** tab within the user's profile, which serves as the central hub for managing a user's parking permissions.</p>

<div class="info-box" id="bkmrk-"></div>### Setup &amp; Configuration

Before permits can be sold, all parking lots, permit types (e.g., yearly, monthly, temporary), and associated costs must be configured in the system. For more details on this process, please refer to the [*Pricing &amp; Lot Admin*](https://opscom.wiki/books/the-opscom-admin-portal/page/pricing-and-lot-admin) page.

The process begins by navigating to the specific user's profile.

### Navigating to the Parking Tab

1. Go to **User Management** tab and click **User Search**.
2. Use the search fields (e.g., **name**, **username**, **email**, or **account number**) to find the desired user.
3. From the search results, click the user's **Username** to open their **Profile Page**.
4. Click the **Parking** tab to navigate to the **Manage Lots** screen for that user.

### Purchasing a Standard Permit

1. On the **Manage Lots** screen, locate the desired parking lot.
2. Click the **Standard Permit** button associated with that lot.
3. On the **Confirm Parking Permit Registration** screen, review the details, including location, permit type, and cost. You may have the option to edit the **permit number** and **permit cost** here.
4. Click the **Purchase this Permit** button and proceed with the payment process to finalize the registration.

### Purchasing a Temporary Permit

1. On the **Manage Lots** screen, click the **Temporary Parking Permit** button.
2. On the **Temp. Parking Permit Registration** screen, configure the permit details:
    
    
    - Click the **Select a lot** drop-down menu and choose the appropriate lot.
    - Enter the **start and end dates** for the permit.
    - Choose the **temporary permit type** (e.g., all day or hourly).
    - Select the **vehicle** the permit will be assigned to.
    - Confirm the **Permit Number**.
    - Enable the **DNTT (Do Not Ticket or Tow)** checkbox if this temporary permit should prevent violation issuance.
3. Click the **Confirm this Permit** button.
4. On the **Confirm Parking Permit Registration** screen, review all the details one final time.
5. Click the **Purchase this Permit** button and proceed with the payment process.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

<div class="info-box" id="bkmrk-using-the-waitlist%3A-"><span style="color: rgb(22, 145, 121);">**Using the Waitlist**: If you attempt to purchase a standard permit for a lot that has no available inventory, the system will not allow a purchase. Instead, you can click the **Waitlist** link to add the user to the queue for that lot. A prompt will appear to confirm the action.</span></div><div class="tip-box" id="bkmrk-when-to-use-dntt%3A-th"><span style="color: rgb(22, 145, 121);">**When to Use DNTT**: The **DNTT** checkbox on temporary permits is a powerful tool. It is typically used for special circumstances, such as for guest speakers or visitors, where you want to ensure their vehicle is not ticketed for the duration of their temporary permit.</span></div><div class="tip-box" id="bkmrk--2"></div>

# User - Payments Tab

<p class="callout info">The **Payments tab** allows administrators to process user payments for one or all payment types due (lockers, parking permits, temporary permits, access card, violations). This page also shows any financial adjustments that have been made to a user account.</p>

### Purpose and Overview

This article outlines the process for OPSCOM administrators to make a payment on behalf of a user. This functionality is essential for handling phone-in payments, in-person transactions, or assisting users who are unable to complete the payment process themselves. These instructions are intended for administrative staff with payment processing permissions.

### Using this Feature

No special configuration is required to use this feature, provided that your organization's payment gateway and item pricing have already been configured. For more details on these initial setups, please refer to the [*Payment Gateway Configuration*](https://opscom.wiki/link/255#bkmrk-hosted-payment-provi) and [*Pricing &amp; Lot Admin*](https://opscom.wiki/books/the-opscom-admin-portal/page/pricing-and-lot-admin) articles.

Follow these steps to process a payment for a user account.

1. Go to **User Management** and click **User Search**
2. Use the search fields to find the user by their **Name**, **Username**, **Email**, or **Account Number**. Click the user's **Username** in the search results to open their **Profile Page**.
3. Click the **Payments** tab. A list of outstanding items such as violations or permits will be displayed.
4. **Enable the checkbox** next to each item you wish to include in the payment.
    
    
    - **View Item Details**: Click on any item name highlighted in blue to view more detailed information. If you make any changes in the detail view, you must click the **Update** button to save them.
    - **Remove an Item**: To permanently remove an item from the user's account, click the corresponding **Remove** button.

<p class="callout warning">**Warning:** The **Remove** action is permanent and cannot be undone. Use this with caution, as the item will be completely removed from the user's account, not just the current transaction.</p>

5. After selecting all items, click the **Proceed to Payment** button.
6. On the **Payments Due** screen, review the transaction summary. Select the payment method from the **Payment Type** drop-down menu and click **Submit Payment Information**.
7. A final confirmation screen will appear. Verify that all payment details are correct and click **Confirm Payment Information**.
8. You will be directed to the **Transaction Details** screen. Before finalizing the payment, you have two primary options:
    
    
    - **Adjust**: Click to modify the payment total. This is useful for applying a discount or adding a surcharge.
    - **Cancel Transaction**: Click to completely cancel the payment process. The items will remain on the user's account as outstanding.
9. To complete the transaction, click the **Process Manually** button. For credit card transactions with an integrated payment gateway, this process may occur automatically.
10. Once the payment is accepted, a transaction confirmation number will be displayed. From this screen, you can perform post-payment actions such as making an adjustment or issuing a refund.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Double-Check Before Confirming**: Always verify the selected items and payment amount with the user before clicking **Confirm Payment Information**, as reversing a transaction is a more involved process.</span>
- <span style="color: rgb(22, 145, 121);">**Understand Manual vs. Automatic Processing**: Be aware of how your system is configured. If a payment gateway is active, credit card transactions are typically processed in real-time. Manual processing is used for cash, cheque, or other offline payment methods.</span>
- <span style="color: rgb(22, 145, 121);">**Use the Cancel Button to Abort**: If there is any uncertainty or error discovered before final processing, use the **Cancel Transaction** button to safely exit the workflow without financial impact.</span>

# User - History Tab

This article explains how OPSCOM administrators can access and manage a user's complete transaction and activity history. The **History** tab provides a detailed log of all financial transactions, permit activity, and system-recorded events associated with a user's account, allowing for audits, adjustments, and user support. This guide is intended for all administrators who manage user accounts.

---

### Setup &amp; Configuration

This is a core feature within the **User Profile Page** and does not require any special setup or configuration.

---

### Using this Feature

The **History** tab is the central location for viewing and interacting with a user's historical data.

#### Accessing the User History Tab

1. From the main menu, hover over **User Management** and click **User Search**.
2. Search for the desired user using their **name**, **username**, **email**, or **account number**.
3. Click on the user's **username** in the search results to open their **Profile Page**.
4. Hover over the **History** tab.
5. Click on **Recent History** to view the user's activity log.

<p class="callout info">The **Recent History** view displays the most recent 100 records for the selected user. This list includes records for items such as **Locker**, **Parking**, **Enforcement Adjustment**, **Address**, and **Mail Records**.</p>

#### Available Actions &amp; Buttons

The **History** tab provides several options for managing user data and transactions.

- **Adjust:** Click the **Adjust** link next to a processed transaction to modify it. After making changes, click the **Add Adjustment** button to save.
- **Item Number:** Click the link in the **Item Number** column (which may be a permit number, violation ticket number, or appeals record number) to view or edit the details of that specific item. Remember to click **Update/Save Changes** after making any edits on the item's detail page.
- **send email:** Click the **send email** button located next to the 'Current Renter' label to compose and send an email directly to the user associated with that record.
- **Make Payment** or **Processed:** Click this button next to a transaction to view its detailed payment processing information.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Document all adjustments:** When using the **Adjust** feature, always provide a clear and detailed reason for the modification. This is crucial for maintaining a transparent and accurate audit trail.</span>
- <span style="color: rgb(22, 145, 121);">**Review item details before acting:** Before emailing a user or making an adjustment related to a specific item, click the **Item Number** to review its full details. This ensures you have all the necessary context to take appropriate action.</span>

# Review Emails Sent to Users

<p class="callout info">This article outlines the process for viewing the history of automated and mass communications sent to users through OPSCOM. This feature allows administrators to verify that important messages, such as violation notices and receipts, have been successfully dispatched. This guide is intended for OPSCOM administrators.</p>

### Using this Feature

This feature is enabled by default and does not require any specific configuration. It automatically logs communications generated by system tasks and user actions. **Sent Mail History** provides a comprehensive log of all system-generated email communications sent to a specific user.

##### <span style="text-decoration: underline;">To access a user's email history:</span>

1. Go to the profile of the user you wish to review.
2. Go to the **History** tab, then **History**, and click on **Sent Mail**.

##### <span style="text-decoration: underline;">Key Information Displayed</span>

On the **Sent Mail** page, you will see a list of all communications sent to the user, including:

- **View Email Content**: To view the body of a specific message, click the link in the **Subject** column. A pop-up window will appear, displaying the exact content of the email that was sent to the user.
- The **Subject** of the email.
- The **Date** the email was sent.

The following types of internal and automatic messages are logged in the **Sent Mail** history:

- **New &amp; Overdue Violation Notices**: Emails sent via the **Send New Violation Notices** and **Overdue Violation Notices** system tasks are logged here. The link displays the notice letter as it was generated and sent.
- **Receipts**: When a user completes a payment, an email receipt is dispatched. The history log displays the actual email content, which may have a different layout than the standard receipt view within OPSCOM.
- **Invoices**: Emails containing invoices that were generated and sent to a user are logged and viewable from this page.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">When a user reports not receiving an email, **always check the Sent Mail history first** to confirm that the system successfully dispatched the message.</span>
- <span style="color: rgb(22, 145, 121);">Use this tool to **verify communications before resending notices or contacting users**, which helps prevent duplicate messages and potential confusion.</span>
- <span style="color: rgb(22, 145, 121);">**Note that this history only tracks emails sent directly through OPSCOM's automated systems.** It does not log manual correspondence sent from personal email clients (e.g., Outlook, Gmail).</span>

<div class="notranslate" id="bkmrk--3" style="all: initial;"></div><div class="notranslate" id="bkmrk--4" style="all: initial;"></div><div class="notranslate" id="bkmrk--5" style="all: initial;"></div>

# User - Incident History

<p class="callout info">The **User Incident History** page provides a comprehensive list of all disturbance incidents associated with a specific user. This feature allows administrators to quickly review a person's incident history on the premises to understand patterns or retrieve details about past events. This guide is intended for OPSCOM administrators. Incidents can be distributed to various departments, internal or external parties, or even police.</p>

If you are interested in the **Incident Distribution** feature, please refer to [this article](https://opscom.wiki/books/the-opscom-admin-portal/page/incident-distribution-feature).

### Using this Feature

This page displays data that is logged through the *Dispatch* and *Incident Reporting* modules. For incidents to appear here, they must be correctly created and associated with the user during the incident logging process. No special configuration is required for the User Incident History page itself. To access a user's incident history, first navigate to the profile of the user you wish to review, then select the **Incident History** page to view the list of incidents

#### Key Information Displayed

Go to any user's profile, and Select the **Incident History** page to view the list of incidents.

The page lists all disturbance incidents the selected user has been involved in. Each entry in the list typically includes:

- Incident ID Number
- Date and Time of the incident
- A brief description or type of incident

#### Available Actions &amp; Buttons

- **Details**: Each incident in the list has a **Details** button. Clicking this navigates you to the full report for that specific incident, providing all logged information.
- **Add Note Button**: Click the **Add Note** button to add a general note to the user's main profile. This is useful for summarizing patterns or adding follow-up information related to their overall history. (These are only visible on the administration side)
- **Edit/View Images Button**: Click the **Edit/View Images** button to manage the profile pictures associated with this user.

<p class="callout warning">**Warning:** The accuracy of this page depends entirely on correct data entry. **Ensure that all new incidents are accurately logged** and associated with the correct users to maintain a complete and reliable history. Try to get suspects to identify with a government issues ID if possible.</p>

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Review the User Incident History** before interacting with a user regarding a new complaint or disturbance. This provides the full context of past events and informs your approach.</span>
- <span style="color: rgb(22, 145, 121);">**Use the Add Note feature** on this page to summarize recurring issues or document actions taken based on a user's pattern of behavior (e.g., **Spoke with user on 2025-07-18 about repeated noise complaints.**). Notes specific to a single event should be added within that incident's **Details** page.</span>
- <span style="color: rgb(22, 145, 121);">The information on this page is critical for identifying repeat issues and making informed decisions about property access or other administrative actions.</span>

# User Company Editor

<p class="callout info">This article describes how to create, edit, and manage company profiles within OPSCOM. The **User Companies** feature allows administrators to group individual users under a single corporate account, which helps to streamline permit management, billing, and reporting for business clients. This guide is intended for OPSCOM administrators.</p>

### Using This Feature 

The primary setup step is creating the company profile. Once created, you can associate users with the company and assign specific roles.

##### <span style="text-decoration: underline;">To Create a New Company:</span>

1. Go to **User Management** and click **User Companies**.
2. On the **Company Search** page, click the **Create New Company** button to open the **Company Create** window.
3. Fill in the company's information in the provided fields:
    
    
    - **Account Number**: A unique internal identifier for the company.
    - **Company Name**: The official name of the business.
    - **Address**: The physical address of the company.
    - **Contact Name**: The primary administrative contact for the company.
    - **Invoice Emails**: The email address where system-generated invoices should be sent.
4. Once all data is entered, click the **Add New Company** button. A confirmation message will appear indicating the company has been added.

After a company is created, you can search for it, manage its associated users, and archive it when it is no longer active.

##### <span style="text-decoration: underline;">Searching for a Company and Viewing Users</span>

From the **Company Search** page, you can look up a company by its name or account number. The search results will display the company details and a count of its associated users.

- **Viewing Associated Users**: In the search results list, the number in the **Users** column is a clickable link. Clicking this number will redirect you to the **User Search** page, displaying a filtered list of all users assigned to that company. The list will also indicate which users are designated as the **Manager** or **Billing** contact.

##### <span style="text-decoration: underline;">Adding Users to a Company and Assigning Roles</span>

1. Navigate to the profile of the user you wish to add to a company.
2. In the **Company** field, begin typing the company's name and select it from the drop-down list to link the user.
3. Assign roles using the following checkboxes:
    
    
    - **Company Manager**: Enable this checkbox to allow the user to access and view the profiles of other people within the same company.
    - **Company Billing Account**: Enable this checkbox to designate the user as the primary contact responsible for the company's payment method. This user can pay for permits and violations for all users they manage.
4. Click **Submit** to save the changes.

##### <span style="text-decoration: underline;">Archiving a Company</span>

1. From the **Company Search** page, find the company you wish to archive and click the **Edit** button.
2. On the **Company Edit** screen, click the **Archive** button in the top-right corner.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Keep in mind:** A company **cannot be archived** if it has any users associated with it. You must first navigate to each user's profile and remove them from the company before the system will allow you to archive it.</span>
- <span style="color: rgb(22, 145, 121);">There can only be **one Company Billing Account** contact per company. If you attempt to assign this role to a second user, the system will prevent the change and display a message indicating who the current billing contact is.</span>
- <span style="color: rgb(22, 145, 121);">**Tip:** It is recommended to **establish the complete company profile first** before you begin associating users with it. This ensures all foundational details, like the invoice email and account number, are correctly in place from the start.</span>
- <span style="color: rgb(22, 145, 121);">The **Company Manager** role is a powerful tool for business-to-business clients, as it allows a primary contact to self-manage their employees' profiles. Be sure to clearly communicate this capability to your corporate contacts.</span>

# Bulk User Type Change

<p class="callout info">This article describes the Bulk User Type Change tool, which allows administrators to move all users from one user type to another in a single operation. This feature is essential for efficiently managing large-scale user role updates, such as transitioning students to an alumni status at the end of a school year. This guide is intended for OPSCOM administrators</p>

### Using this Feature

This tool is a standard administrative feature and does not require any specific configuration. However, you must ensure that both the original user type (the one you are changing from) and the destination user type (the one you are changing to) are already created in the system. The tool provides a simple interface for selecting a user type and migrating all of its members to a different type.

For more information on creating and managing roles, please refer to the *User Types Administration* wiki article.

##### <span style="text-decoration: underline;">To Perform a Bulk User Type Change:</span>

1. Go to **User Management** and click **Bulk Type Change**.
2. The **Bulk User Type Change** screen will display a list of all existing user types. Next to each name, a number badge indicates the current count of users assigned to that type.
3. Locate the user type you wish to change *from*.
4. In the drop-down menu next to it, select the new user type you want to move the users *to*.
5. Click the **Save Changes** button.
6. A final confirmation prompt will appear. To proceed, click the **Confirm Changes** button.
7. The system will process the update. Once complete, the page will refresh, and you can verify the change by reviewing the updated user counts for the affected user types.

<p class="callout warning">**Warning:** This action is permanent and **cannot be undone**. It will immediately move **all** users from the original type to the new one. Always double-check your selections before clicking the final **Confirm Changes** button.</p>


### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Changing a user's type directly impacts their permissions and access**, including their eligibility for specific permits, lots, and waitlists. Before performing a bulk change, ensure the destination user type has all the correct permissions and rules configured.</span>
- <span style="color: rgb(22, 145, 121);">**Use this tool for major seasonal or annual transitions**, such as updating student statuses at the end of a semester or moving all members of a deprecated group to a new, active one.</span>
- <span style="color: rgb(22, 145, 121);">For user types with a very large number of users (thousands), the process may take a few moments to complete. **Do not navigate away from the page** after clicking **Confirm Changes**; wait for the process to finish and the page to reload.</span>

# Merge User

<p class="callout info">This article describes how to use the Merge Users tool to combine two separate user profiles into a single, primary account. This function is essential for maintaining a clean database by resolving duplicate profiles that may arise from user error, name changes, or other data discrepancies. This guide is intended for OPSCOM administrators.</p>

### Setup &amp; Configuration

Before a user profile can be selected in the Merge Users tool, you must ensure it meets the following criteria within its profile settings:

- The user account must be **Enabled**.
- The user must have a **User Type** assigned.

If you cannot find a user when searching in the merge tool, first navigate to that user's profile to verify these two settings are correctly configured.

### Using this Feature

The merge process involves selecting a source profile (**FROM User**) to merge into a destination profile (**TO User**). The FROM User will be archived, and its data will be transferred to the TO User.

##### <span style="text-decoration: underline;">The Merge Process</span>

1. Go to **User Management** and click **Merge Users**.
2. The page displays two search sections:
    
    
    - The profile on the **left** is the source account that will be merged and then archived (**FROM User**).
    - The profile on the **right** is the destination account that will remain active (**TO User**).
3. Use the search fields in both sections to locate the two user profiles. You can search by name, email address, student number, or employee number.
4. Select the correct user profile from the search results in each section.
5. Click the **Merge** button to proceed.
6. A confirmation screen will appear, showing which user will be merged into the other. To finalize the action, click **Merge** again.
7. After the process is complete, a confirmation message will appear at the bottom of the page.

<p class="callout info">Data is only transferred from the ***'FROM User'*** if a corresponding record does not already exist on the ***'TO User'***. The merge tool does not overwrite or duplicate existing records on the destination profile.</p>

##### <span style="text-decoration: underline;">What Happens to the Data?</span>

- The **FROM User** (left column) profile is permanently archived and is no longer accessible.
- The **TO User** (right column) profile remains active and inherits the data listed below.
- A record of the merge is logged in the **Completed History** section on the profile of the **TO User**.

The following data is transferred from the FROM User to the TO User:

- Vehicles
- Violations
- Permits
- Lockers
- Items Awaiting Payment

<p class="callout warning">**Warning:** The merge process is **irreversible** and results in the permanent archival of the **FROM User** profile. Always double-check that you have selected the correct source and destination accounts before finalizing the merge.</p>

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Designate the profile with the most accurate core information as the TO User** (the account on the right). While transactional data is transferred, the primary profile details (name, contact information) of the TO User are what the final, merged profile will retain.</span>
- <span style="color: rgb(22, 145, 121);">**Use this tool to resolve common data integrity issues**, such as when a user accidentally creates a second profile, changes their legal name and creates a new account, or when an admin-created profile needs to be consolidated with a user-created one.</span>

# Bulk Email Users

<p class="callout info">This article describes how to use the Email Users tool to send mass email communications. This feature allows administrators to compose and send messages to targeted groups of users based on criteria like user type, permit status, or assigned parking lot. This guide is intended for OPSCOM administrators responsible for user communications.</p>

### Using this Feature

This tool is a standard feature and does not require any specific setup. The effectiveness of the recipient filtering depends on having accurate and up-to-date user data, including correct *User Types*, *Lot Assignments*, and other user profile details. The process is divided into two phases: first defining your recipient list using filters, and then composing and sending the email.

##### <span style="text-decoration: underline;">Defining the Recipient List</span>

1. Go to **User Management** and click **Email Users**.
2. On the **Email Users** page, begin by selecting a primary group from the **User Type Group** drop-down menu.
3. Next, refine your recipient list by selecting one or more filters from the available options:
    
    
    - **Filter by**: Narrow the list by user status (e.g., *Has Active Permit*, *Is on a Waitlist*).
    - **Select by Lot**: Target users assigned to specific parking lots.
    - **Select by Locker Area**: Target users with lockers in specific areas.
4. Once your filters are chosen, click the **Prepare Email** button. This action generates the final recipient list based on your criteria and reveals the email composition tools.

<p class="callout info">**Tip:** To select multiple options within a single filter box (e.g., to email users in three different lots), hold the **Ctrl** key (or **Cmd** on Mac) and click each desired option. To deselect an option, hold the same key and click it again.</p>

##### <span style="text-decoration: underline;">Composing and Sending the Email</span>

After preparing the email, a new section will appear on the page.

1. First, **verify your recipients**. Click the **View Recipient List** button to review the list of users who will receive the email. You can also click **Export Recipient List** to download a CSV file for external review.
2. Compose your message by filling in the **Subject** and **Message** fields.
3. To include a file, click the **Choose File** button and select the desired attachment.
4. When your message is ready, click the **Send Email** button.
5. A confirmation prompt will appear. Click **Yes** to proceed.
6. A confirmation message will then display, stating that the email has been queued for delivery.

<p class="callout warning">**Warning:** Sending a mass email is an **irreversible action**. Always proofread your subject line and message content carefully for accuracy and clarity before clicking **Send Email**.</p>

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Always use the View Recipient List button** to check your final list of recipients before sending. This is a critical step to ensure your communication reaches the correct audience.</span>
- <span style="color: rgb(22, 145, 121);">Be aware that emails are **queued for delivery** and may not be sent instantaneously, especially for very large recipient lists. The system sends them in batches to ensure reliable delivery.</span>
- <span style="color: rgb(22, 145, 121);">Use this tool for important operational announcements, such as lot closures, policy changes, or permit renewal deadlines. Avoid overusing it for non-essential matters to prevent 'email fatigue' among your users.</span>
- You can view emails sent successfully to a user by navigating to their profile and going to **History &gt; History &gt; Sent Mail**, or by accessing the **Complete History Log**. This will display the emails sent to that specific user.

# Generate Mail Merge

<p class="callout info">This article explains how to use the **Generate Mail Merge** tool to export user mailing addresses for Microsoft Word's Mail Merge feature. This guide is intended for OPSCOM administrators managing user communications.</p>

### Using this Feature

This tool is designed to be used in conjunction with Microsoft Word's Mail Merge functionality. No additional configuration is required beyond having access to the appropriate Microsoft software.

<p class="callout warning">**Warning:** In databases with a large volume of records, this tool may not function as expected. If you encounter issues, please contact <span style="color: rgb(186, 55, 42);">[OPSCOM Support](mailto:support@ops-com.comcom)</span> for assistance.</p>

##### <span style="text-decoration: underline;">Generating the CSV File for Export</span>

1. Go to **User Management**, and click **Generate Mail Merge**.
2. This action generates the mailing list based on your total user records.
3. Click **CSV** for the file export.

##### <span style="text-decoration: underline;">Composing and Initiating the Mail Merge</span>

After downloading the file, open Microsoft Word.

<p class="callout info">**Note:** Depending on your version of Microsoft Word, the instructions below may differ.</p>

Please refer to the official [Microsoft Mail Merge](https://support.microsoft.com/en-us/office/use-mail-merge-for-bulk-email-letters-labels-and-envelopes-f488ed5b-b849-4c11-9cff-932c49474705) documentation for more details.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- The tool exports **all user records** from your database. Filtering options are not currently available.
- Always review the exported CSV for accuracy before proceeding.

# Forms Module

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Forms Admin

<p class="callout info">The Forms module allows organizations to create and manage digital forms for special requests and communications with users. This article is for OPSCOM administrators who need to set up, configure, and manage these forms.</p>

### Setup &amp; Configuration

<p class="callout warning">The Forms module has been refactored with new functionality and **new forms are only operational on the OPSCOM app**. Any existing forms created in the old format are not compatible and will need to be **recreated** using the new form builder.</p>

To manage forms, administrators require specific permissions:

1. Go to **System Configuration,** then **Admin Management,** and click **Manage Roles.**
2. Select the relevant administrator role and click **Permissions**.
3. Under the **Users** tab, ensure the **Edit Forms** and **View Forms** checkboxes are enabled.
4. Click **Save**.

### Using this Feature

Administrators can view, edit, or create new forms from the **Forms** page.

##### <span style="text-decoration: underline;">Accessing the Forms Module</span>

Go to **User Management, Forms**, and click **List Forms**. A list of all existing forms will display.

##### <span style="text-decoration: underline;">Available Actions &amp; Buttons</span>

- **+Add Form**: To create a new form, click the **+Add Form** button. This will open the new form builder, allowing you to design and configure your form from scratch.
- **Edit Form**: To modify an existing form, click the **Edit** icon (<span style="text-decoration: underline;">*pencil icon*</span>) next to the form in the list. This will open the form builder where you can make changes.
- **Entries:** To view all users who have filled out this form, and their information.
- **Copy**: To create a copy of a form, click this button. It is added to the bottom of the list.
- **Archive**: To archive a form so it can no longer be used, click this button. Its entries and information will remain saved.
- **Export**: This button downloads the form to your device through the browser's download manager in a **.xls** format (Microsoft Excel Spread Sheet)

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Recreate Old Forms**: Remember that existing legacy form data is **not compatible** with the new format. You must **recreate** any old forms using the new form builder for them to function on the OPSCOM app.</span>
- <span style="color: rgb(22, 145, 121);">**Permissions**: Regularly review and ensure that the appropriate administrator roles have the necessary **Edit Forms** and **View Forms** permissions to manage the forms effectively.</span>
- <span style="color: rgb(22, 145, 121);">**Form Design**: When creating new forms, consider the user experience on the OPSCOM app. Keep forms concise and clearly structured to ensure ease of use for end-users.</span>

# Viewing Form Entries

<p class="callout info">This article describes how to view, search, and manage user submissions for custom forms. This feature provides administrators with the tools to find specific form entries, review submitted data, edit information, and communicate with the submitter.</p>

### Using this Feature

The process involves searching for specific entries and then managing them individually from the entry view page.

This functionality requires that a form has already been created and submitted by users. The search options available on the Form Entries page are dependent on which fields were marked as "searchable" during the form's initial setup. For more information, please see the [*Creating a New Form*](https://opscom.wiki/books/the-opscom-admin-portal/page/forms) article.

##### <span style="text-decoration: underline;">Searching for Form Entries</span>

<div data-extension-key="toc" data-extension-type="com.atlassian.confluence.macro.core" data-layout="default" data-local-id:="d5514cd3-ca03-4d86-8a9c-07b8b58291f5" data-node-type="extension" data-parameters="{"macroParams":{"style":{"value":"none"}},"macroMetadata":{"macroId":{"value":"456b6574-0d45-43b4-a978-bd32f09b1983"},"schemaVersion":{"value":"1"},"title":"Table of Contents"}}" data-pm-slice="0 0 []" id="bkmrk-hover-over-user-mana">- Hover over **User Management**, then hover over **Forms**, and click **List Forms**.
- Find the desired form in the list and click the **entries** button.
- On the **Form Entry Search** page, use the **Start date** and **Up to and including** fields to set a date range.
- Use the **Show in results** multi-select box to choose which searchable columns will be displayed in the results list.
- To filter by specific answers, click the **toggle more options** button. This will reveal text boxes for each searchable field where you can enter a search query.
- Click the search button to generate the list of entries. From the results list, click on an individual entry to view its full details.

</div>##### <span style="text-decoration: underline;">Working with an Individual Entry </span>

The **Entry View** page displays the submitter’s information and all of their answers. From here, you can perform several actions:

<div data-extension-key="toc" data-extension-type="com.atlassian.confluence.macro.core" data-layout="default" data-local-id:="d5514cd3-ca03-4d86-8a9c-07b8b58291f5" data-node-type="extension" data-parameters="{"macroParams":{"style":{"value":"none"}},"macroMetadata":{"macroId":{"value":"456b6574-0d45-43b4-a978-bd32f09b1983"},"schemaVersion":{"value":"1"},"title":"Table of Contents"}}" data-pm-slice="0 0 []" id="bkmrk-viewing-and-editing-">- **Viewing and Editing Data**: An administrator can edit any of the user's submitted answers or add values to any **Admin-Only Fields**. Click the save button at the bottom of the page to apply any changes.
- **Replying to the User**: Click the **prepare email** button at the top of the page. You will be taken to the email composition screen with the user's email address and the form's name pre-filled as the subject line.
- **Deleting an Entry**: Entries can be deleted directly from this page.

</div><p class="callout warning"><span style="color: rgb(0, 0, 0);">Editing a user's form entry changes the data stored in the database.</span></p>

##### <span style="text-decoration: underline;">Visual Cues</span>

- Fields marked as **Admin-Only** are indicated by a blue border. Hovering your mouse over this border will display a helpful tooltip

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Use the 'toggle more options' feature for powerful, targeted searches.** For example, you can find all submissions where a user answered 'Yes' to a specific question by en<span class="citation-28">tering 'Yes' into that field's search box.</span><span class="citation-26 citation-end-26"><sup class="superscript" data-turn-source-index="3"></sup></span></span>
- <span style="color: rgb(22, 145, 121);">**Admin-Only Fields are never visible to the end-user.** Use these fields to add internal notes, status updates, or other administrative data related to the submission.</span>

# Form Field Types

<p class="callout info">This article provides a detailed overview of the various field types available when building a custom form. Its purpose is to help administrators understand the function and configuration options for each field, enabling them to create effective and user-friendly forms.</p>

### Field Types and Options

The field types described below are the building blocks used within the form creation tool. No special system configuration is required to use them. For a complete guide on building a form, please refer to the [*Creating a New Form*](https://opscom.wiki/books/the-opscom-admin-portal/page/forms) article.

##### <span style="text-decoration: underline;">Checkbox Group</span>

Used to allow a user to select **one or more** options from a list.

<div data-extension-key="toc" data-extension-type="com.atlassian.confluence.macro.core" data-layout="default" data-local-id:="1802817d-b881-434f-900c-0a70f7f27185" data-node-type="extension" data-parameters="{"macroParams":{"minLevel":{"value":"1"},"maxLevel":{"value":"6"},"outline":{"value":"false"},"style":{"value":"none"},"type":{"value":"list"},"printable":{"value":"true"}},"macroMetadata":{"macroId":{"value":"c9fad4fa-b0a8-4dad-8398-49193906744d"},"schemaVersion":{"value":"1"},"title":"Table of Contents"}}" data-pm-slice="0 0 []" id="bkmrk-enable-%E2%80%9Cother%E2%80%9D%3A-allo">- **Enable “Other”**: Allows the user to input a custom value not present in the options list.
- **Options**: The list of choices for the user. Options can be pre-selected for the user by enabling the checkbox next to the desired item.

</div>##### <span style="text-decoration: underline;">Date Field</span>

Used to get a date from the user, who will be presented with a calendar date picker.

<div data-extension-key="toc" data-extension-type="com.atlassian.confluence.macro.core" data-layout="default" data-local-id:="1802817d-b881-434f-900c-0a70f7f27185" data-node-type="extension" data-parameters="{"macroParams":{"minLevel":{"value":"1"},"maxLevel":{"value":"6"},"outline":{"value":"false"},"style":{"value":"none"},"type":{"value":"list"},"printable":{"value":"true"}},"macroMetadata":{"macroId":{"value":"c9fad4fa-b0a8-4dad-8398-49193906744d"},"schemaVersion":{"value":"1"},"title":"Table of Contents"}}" data-pm-slice="0 0 []" id="bkmrk-type%3A-the-type-of-da">- **Type**: The type of date field.
- **Min / Max**: The minimum and maximum allowed dates that can be selected.
- **Step**: The date increment steps.

</div>##### <span style="text-decoration: underline;">Header</span>

Used to display a header or subheader on the form. This is a display-only field.

<div data-extension-key="toc" data-extension-type="com.atlassian.confluence.macro.core" data-layout="default" data-local-id:="1802817d-b881-434f-900c-0a70f7f27185" data-node-type="extension" data-parameters="{"macroParams":{"minLevel":{"value":"1"},"maxLevel":{"value":"6"},"outline":{"value":"false"},"style":{"value":"none"},"type":{"value":"list"},"printable":{"value":"true"}},"macroMetadata":{"macroId":{"value":"c9fad4fa-b0a8-4dad-8398-49193906744d"},"schemaVersion":{"value":"1"},"title":"Table of Contents"}}" data-pm-slice="0 0 []" id="bkmrk-label%3A-the-header-te">- **Label**: The header text that will be displayed.
- **Type**: The header size (e.g., H1, H2).

</div>##### <span style="text-decoration: underline;">Number</span>

Used to accept numerical digits only.

<div data-extension-key="toc" data-extension-type="com.atlassian.confluence.macro.core" data-layout="default" data-local-id:="1802817d-b881-434f-900c-0a70f7f27185" data-node-type="extension" data-parameters="{"macroParams":{"minLevel":{"value":"1"},"maxLevel":{"value":"6"},"outline":{"value":"false"},"style":{"value":"none"},"type":{"value":"list"},"printable":{"value":"true"}},"macroMetadata":{"macroId":{"value":"c9fad4fa-b0a8-4dad-8398-49193906744d"},"schemaVersion":{"value":"1"},"title":"Table of Contents"}}" data-pm-slice="0 0 []" id="bkmrk-type%3A-the-type-of-nu">- **Type**: The type of number field.
- **Min / Max**: The minimum and maximum allowed numerical values.
- **Step**: The amount the value increments or decrements when using the arrow controls.

</div>##### <span style="text-decoration: underline;">Paragraph</span>

Used to display a block of text on the form, such as for instructions. This is a display-only field.

<div data-extension-key="toc" data-extension-type="com.atlassian.confluence.macro.core" data-layout="default" data-local-id:="1802817d-b881-434f-900c-0a70f7f27185" data-node-type="extension" data-parameters="{"macroParams":{"minLevel":{"value":"1"},"maxLevel":{"value":"6"},"outline":{"value":"false"},"style":{"value":"none"},"type":{"value":"list"},"printable":{"value":"true"}},"macroMetadata":{"macroId":{"value":"c9fad4fa-b0a8-4dad-8398-49193906744d"},"schemaVersion":{"value":"1"},"title":"Table of Contents"}}" data-pm-slice="0 0 []" id="bkmrk-content%3A-the-paragra">- **Content**: The paragraph text to be displayed.

</div>##### <span style="text-decoration: underline;">Radio Group</span>

Used to allow a user to select **only one** option from a list.

<div data-extension-key="toc" data-extension-type="com.atlassian.confluence.macro.core" data-layout="default" data-local-id:="1802817d-b881-434f-900c-0a70f7f27185" data-node-type="extension" data-parameters="{"macroParams":{"minLevel":{"value":"1"},"maxLevel":{"value":"6"},"outline":{"value":"false"},"style":{"value":"none"},"type":{"value":"list"},"printable":{"value":"true"}},"macroMetadata":{"macroId":{"value":"c9fad4fa-b0a8-4dad-8398-49193906744d"},"schemaVersion":{"value":"1"},"title":"Table of Contents"}}" data-pm-slice="0 0 []" id="bkmrk-options%3A-the-list-of">- **Options**: The list of choices for the user. One option can be pre-selected by enabling the corresponding radio button.

</div>##### <span style="text-decoration: underline;">Select Menu</span>

Presents a drop-down list of options. This is ideal for questions with many choices to save screen space.

<div data-extension-key="toc" data-extension-type="com.atlassian.confluence.macro.core" data-layout="default" data-local-id:="1802817d-b881-434f-900c-0a70f7f27185" data-node-type="extension" data-parameters="{"macroParams":{"minLevel":{"value":"1"},"maxLevel":{"value":"6"},"outline":{"value":"false"},"style":{"value":"none"},"type":{"value":"list"},"printable":{"value":"true"}},"macroMetadata":{"macroId":{"value":"c9fad4fa-b0a8-4dad-8398-49193906744d"},"schemaVersion":{"value":"1"},"title":"Table of Contents"}}" data-pm-slice="0 0 []" id="bkmrk-allow-multiple-selec">- **Allow Multiple Selections**: Enable this to allow the user to select more than one option (making it function like a Checkbox Group).
- **Options**: The list of choices for the user.

</div>##### <span style="text-decoration: underline;">Text Field</span>

Used to allow a user to input a single line of text.

<div data-extension-key="toc" data-extension-type="com.atlassian.confluence.macro.core" data-layout="default" data-local-id:="1802817d-b881-434f-900c-0a70f7f27185" data-node-type="extension" data-parameters="{"macroParams":{"minLevel":{"value":"1"},"maxLevel":{"value":"6"},"outline":{"value":"false"},"style":{"value":"none"},"type":{"value":"list"},"printable":{"value":"true"}},"macroMetadata":{"macroId":{"value":"c9fad4fa-b0a8-4dad-8398-49193906744d"},"schemaVersion":{"value":"1"},"title":"Table of Contents"}}" data-pm-slice="0 0 []" id="bkmrk-type%3A-specifies-the-">- **Type**: Specifies the kind of input required (e.g., **Text Field**, **Password**, **Email**, **Tel**).
- **Max Length**: The maximum number of characters allowed.

</div>##### <span style="text-decoration: underline;">Text Area</span>

Similar to a Text Field, but provides a larger, multi-line area for text input.

- **Max Length**: The maximum number of characters allowed.
- **Rows**: The initial height of the text area in rows/lines.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Choose the right selection tool for the job.** Use a **Radio Group** for single-choice questions with few options. Use a **Checkbox Group** for multiple-choice questions. Use a **Select Menu**<span class="citation-52"> when you have many options to present in order to save screen space.</span></span>
- <div class="confluence-information-macro confluence-information-macro-tip"><div class="confluence-information-macro-body"><span style="color: rgb(22, 145, 121);"><span class="citation-52 citation-end-52"><sup class="superscript" data-turn-source-index="1"></sup></span> </span><div _ngcontent-ng-c2892847681="" class="source-inline-chip-container ng-star-inserted"><span style="color: rgb(22, 145, 121);"></span></div><span style="color: rgb(22, 145, 121);"></span></div><span style="color: rgb(22, 145, 121);"><span class="citation-51 citation-end-51"><sup class="superscript" data-turn-source-index="2"></sup></span> </span><div _ngcontent-ng-c2892847681="" class="source-inline-chip-container ng-star-inserted"><span style="color: rgb(22, 145, 121);"></span></div><span style="color: rgb(22, 145, 121);"></span></div><span style="color: rgb(22, 145, 121);"><span class="citation-50 citation-end-50"><sup class="superscript" data-turn-source-index="3"></sup></span>When using a **Text Field**, select the appropriate **Type** (e.g., **Email**, **Tel**). This helps ensure data integrity by validating the input and provides a better user experience by showing a specialized keyboard on mobile devices.</span>
- <span style="color: rgb(22, 145, 121);">**Use Header and Paragraph fields to structure your form**.</span>

# Forms

<p class="callout info">This article describes how to use the Forms module to create, manage, and deploy custom forms for users. This feature allows administrators to collect specific information for processes like applications, appeals, or feedback. </p>

### Setup &amp; Configuration

The primary setup step is creating and configuring a new form using the three-tab interface.

This is a refactored module. **Existing form data from older versions of the system is not compatible**, and old forms will need to be recreated using this tool. To view the different options available for form building, please refer to the *[Form Field Types](https://opscom.wiki/books/the-opscom-admin-portal/page/form-field-types)* article.

##### <span style="text-decoration: underline;">Creating a New Form</span>

1. Go to **User Management**, then hover over **Forms**, and click **List Forms**.
2. On the **Forms List** page, click the **Add Form** button.
3. On the **Form Basics** tab:
    
    
    - Enter a **Title** and **Description** for your form.
    - Enable the **Visible** checkbox to make it accessible to users.
    - Set a **Show At** and **Hide At** date and time to schedule the form's availability.
4. On the **Post Form Actions** tab:
    
    
    - Configure what happens after a user submits the form. You can choose to send a notification email to an administrator by selecting **Mail to specific email**, and you can define the **Completion Text** message that is displayed to the user.
5. On the **Questions** tab:
    
    
    - Drag and drop the desired field types from the right-hand panel into the questions area on the left.
    - Click the **edit** icon on each field to configure its options, such as its **Label**, **Help Text**, and whether it is **Required**. For a detailed breakdown of each field type, please refer to the *Form Field Types* article.

### Using this Feature

Once forms are created, you can manage them and their submissions from the **Forms List** page.

##### <span style="text-decoration: underline;">Managing Forms in the List</span>

From the **Forms List** page, you can perform several actions on existing forms:

- **Edit Form**: Click the pen icon to modify an existing form's settings and questions.
- **View Entries**: Click the **entries** button to view all user submissions for that form. For more details, see the *Managing User Form Entries* article.
- **Copy**: Creates a duplicate of the form structure without its entries.
- **Archive**: Removes the form and all its entries from view.
- **Export**: Downloads the form and all its entry data to an Excel file.

##### <span style="text-decoration: underline;">Understanding Question Options</span>

When editing a question field, the following options are available:

- **Required**: Makes the question mandatory for the user to answer before submitting.
- **Searchable**: Allows the answers for this field to be searched on the Form Entries page.
- **Admin Only**: Hides the question from users. It is only visible to adm<span class="citation-85 citation-end-85">inistrators when viewing or editing an entry.<sup class="superscript" data-turn-source-index="1"></sup></span>
    
    <div _ngcontent-ng-c2892847681="" class="source-inline-chip-container ng-star-inserted"></div>

---

### <span class="citation-84 citation-end-84" style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations<sup class="superscript" data-turn-source-index="2"></sup></span>

- <span style="color: rgb(22, 145, 121);">**Avoid editing a form after it has collected user entries.** Changes to the form structure can cause existing entry data to display incorrectly. If you need to make changes, **use the Copy function** to create a new version of the form.</span>
- <span style="color: rgb(22, 145, 121);">The **Copy** feature is the safest way to update a live form. Create a copy, make your changes to the new version, and then archive the old form once you are ready for users to switch.</span>
- <span style="color: rgb(22, 145, 121);">When creating your form you are able to set the start and end times that the form will be available to be seen by your users. **If you want the form to always be available**, make sure to set the **Show At** as the current date and leave the **Hide At** date as blank.</span>

# Vehicle Management

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Search by Plate

<p class="callout info">This article describes the **Search by Plate** feature, a powerful tool for locating vehicles within the system. It allows administrators to quickly identify a vehicle's owner, review its permit and violation history, and perform related actions, all from a single interface. This guide is intended for OPSCOM administrators and enforcement personnel.</p>

### Using this Feature

This feature is a standard part of the vehicle management module and does not require any special configuration. Its results are drawn from existing user, vehicle, permit, and violation data in the system.

##### <span style="text-decoration: underline;">Performing a Vehicle Search</span>

1. Go to **User Management**, then Vehicles**, and click **Search by Plate**.
2. Enter your criteria into one or more of the following search fields:
    
    
    - **Plate**: The full or partial license plate number.
    - **Make**: The manufacturer of the vehicle (e.g., Honda, Ford).
    - **Type**: The body style of the vehicle (e.g., Sedan, SUV).
    - **Colour**: The primary color of the vehicle.
3. Use the following options to refine your search:
    
    
    - Enable the **Fuzzy Search** checkbox if you are using a partial plate number.
    - Enable the **Electric Vehicle** checkbox to filter results for electric vehicles only.
    - Select a **Date Range** to filter for LPR events or pay station permits within a specific timeframe. Leave this blank to search the vehicle's entire history.
4. Click the **Search** button to execute the search.

##### <span style="text-decoration: underline;">Interpreting Search Results and Available Actions</span>

The search results will appear in a list below the search form. Each row provides information and quick-access icons for a specific vehicle.

- **History Icon**: Click to view the vehicle's complete history, including LPR scans and past permit associations.
- **User Profile Icon**: Click to navigate directly to the owner's user profile page.
- **Vehicle Details Icon**: Click to view detailed information about the vehicle itself, such as make, model, and year.
- **Username**: The linked username of the vehicle's registered owner. Clicking it also navigates to the user's profile.
- **Email Icon**: Click to open a new email composition window addressed to the vehicle owner.
- **Violations Count**: A number indicating how many violations are associated with this vehicle. Click the number to view the list of violations.
- **Incidents Count**: A number indicating how many incidents are associated with this vehicle. Click the number to view the list of incidents.
- **Add Violation Icon**: Click to immediately open the violation issuance screen for this vehicle.
- **Pay Station Status**: Displays information about temporary permits purchased from a pay station for this license plate.

<p class="callout warning">**Warning:** Be cautious when using the **Add Violation** button. Ensure you have identified the correct vehicle and user from the results list before issuing a new ticket to prevent errors.</p>

<p class="callout info"> A single license plate may appear in multiple rows if it is registered to different users (e.g., a family) or has a separate pay station history not linked to a registered user. Review all results carefully to ensure you are acting on the correct record.</p>


---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Use Fuzzy Search for partial plates.** If you are unsure of the full plate number or its exact sequence, enabling this option will perform a broader search and significantly improve your chances of finding the vehicle.</span>
- <span style="color: rgb(22, 145, 121);">**Use the Date Range filter primarily when investigating recent LPR sightings** or temporary pay station activity. For a complete history of a vehicle's permits and violations, leave the date range fields blank.</span>

# Merge Vehicles

<p class="callout info">The **Merge Vehicles** feature in OPSCOM allows administrators to combine two existing vehicle records into a single, unified record. This tool is invaluable for correcting duplicate entries, associating vehicles with their correct user profiles, and consolidating all historical data (including violations) to the primary vehicle record, ensuring data accuracy and comprehensive vehicle history.</p>

### Using this Feature

The **Merge Vehicles** interface facilitates the process of consolidating vehicle records.

<p class="callout warning">This will associate the vehicle to the User and bring along all the violation history to the User.</p>

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-06/scaled-1680-/image.png)](https://opscom.wiki/uploads/images/gallery/2025-06/image.png)

1. Hover over **User Management,** then **Vehicles,** and click **Merge Vehicles**. This will open the **Merge Vehicles** interface.
2. Enter the vehicle plate or VIN of one or both vehicles you intend to merge.
3. Click **Search**.
4. From the results on the **left side**, select the **secondary vehicle(s)**. These are the records whose information and history (e.g., violations) you want to consolidate into another vehicle.
5. From the results on the **right side**, select the **primary vehicle**. This is the single vehicle record that will remain after the merge, inheriting all information and history from the secondary vehicle(s).
6. Click **Merge**.
7. Confirm the merge action in the prompt.
8. Wait for the confirmation screen to appear, indicating successful completion.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Irreversible Action**: Merging vehicles is a **permanent action**. Once two vehicles are merged, the secondary vehicle record(s) are effectively absorbed into the primary, and the action cannot be undone. Always verify your selections before proceeding.</span>
- <span style="color: rgb(22, 145, 121);">**Data Consolidation**: When vehicles are merged, all associated history, including outstanding violations, is transferred to the primary vehicle. This is particularly useful when a vehicle with a history of violations is later added to a user's account, ensuring all its history is linked to that user.</span>
- <span style="color: rgb(22, 145, 121);">**Identify Primary Vehicle**: Clearly determine which vehicle record should be the "primary" one that remains in the system. This is usually the record with the most accurate, complete, or longest-standing information.</span>
- <span style="color: rgb(22, 145, 121);">**Review Before Merge**: Before initiating a merge, carefully review the details of both the secondary and primary vehicles to ensure they are indeed duplicates or that the merge is intended. Look at details like make, model, color, and ownership history.</span>
- <span style="color: rgb(22, 145, 121);">**Impact on User Profiles**: If the vehicle being merged has outstanding violations and is then associated with a user, this process will correctly link all the violation history to that user's profile.</span>
- <span style="color: rgb(22, 145, 121);">**Search by Plate or VIN**: The flexibility to search by either plate or VIN helps in accurately identifying the correct vehicles for merging.</span>

# DNTT - Do Not Ticket or Tow

<p class="callout info">This article describes the Do Not Ticket or Tow (DNTT) feature, which allows administrators to apply a temporary condition on a vehicle to prevent ticketing or towing. This is used to grant parking exceptions for specific time frames, such as for VIPs, special events, or temporary service vehicles. This guide is intended for OPSCOM administrators.</p>

### Using this Feature

The DNTT feature is enabled by default. However, to access the **Vehicle DNTT Report**, an administrator's user role must have the **Manage Vehicle** permission enabled. No other special configuration is required. The DNTT workflow includes applying the flag from a user's profile, managing it, and reviewing its usage through reports and handheld devices.

##### <span style="text-decoration: underline;">Applying a DNTT Flag to a Vehicle</span>

1. Go to **User Management**, then **User Search**.
2. Once on the user's profile page, click the **Vehicles** tab.
3. Locate the specific vehicle in the list and click the **Add DNTT** button.
4. In the pop-up window, configure the DNTT details:
    
    
    - **From Date / To Date**: Set the exact start and end date/time for the parking exception.
    - **Location** (Optional): Specify a particular lot or area where the exception is valid. If left blank, the DNTT applies to all locations.
    - **Note** (Required): Enter a clear and concise reason for the DNTT. This note will be visible to enforcement officers.
5. Click **Save Changes**.

##### <span style="text-decoration: underline;">Editing or Deleting an Active DNTT</span>

1. Return to the **Vehicles** tab on the user's profile.
2. Click the **Edit DNTT** button for the vehicle with the active flag.
3. From here, you can either click **Modify** to update the details or **Delete** to remove the DNTT exception entirely.

##### <span style="text-decoration: underline;">Viewing DNTT Status on Handheld Units</span>

Enforcement officers can easily see active DNTT flags in the field.

1. On the OPSCOM App, tap **Search Vehicles**.
2. Enter the license plate to perform a search.
3. In the vehicle results list, any vehicle with an active DNTT will be clearly indicated. **Tap** the vehicle record to view the details, including the expiry time and the administrator's note.

##### <span style="text-decoration: underline;">Using the Vehicle DNTT Report</span>

This report provides a searchable history of all DNTT flags issued.

1. Go to **User Management**, then **Vehicles**, and click **Vehicle DNTT Report**.
2. Enter a **Date Range** to find DNTTs that were active during that period.
3. Optionally, you can filter by **Number of Instances** to find vehicles with a history of multiple DNTT records.
4. Click **Search**. The report will display the **Username**, **Plate**, and the number of **Instances**, all of which are clickable for more details.

<p class="callout warning">**Keep in mind:** The **Note field is required** and is the most critical piece of information for enforcement officers. Always write a clear, concise note explaining why the DNTT was issued (e.g., "Guest of Dean for event in building A until 4 PM").</p>

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Set the DNTT time frame to be as specific as possible.** Avoid creating open-ended or excessively long exceptions. This practice maintains the integrity of your parking enforcement program.</span>
- <span style="color: rgb(22, 145, 121);">**Use the optional Location field** to add clarity if a parking exception is only valid in a specific lot or area. This helps prevent confusion for both the vehicle owner and the enforcement officer.</span>
- <span style="color: rgb(22, 145, 121);">**Regularly use the Vehicle DNTT Report to audit** active and past exceptions. This helps ensure the feature is being used correctly and provides a clear history of all granted exceptions.</span>

# Active Vehicle Report

<p class="callout info">This article describes the Active Vehicles Report, a tool designed to identify users who have more active vehicles registered on their profile than they have valid permits. Its primary purpose is to help administrators detect potential permit abuse, outdated vehicle lists, or other data discrepancies that could affect parking enforcement and lot management. This guide is intended for OPSCOM administrators.</p>

### Using This Feature

This report is a standard administrative feature and does not require any specific configuration. It automatically analyzes existing user, vehicle, and provides a focused list of users whose vehicle counts may require review.

##### <span style="text-decoration: underline;">Accessing and Understanding the Report</span>

Go to **User Management,** then **Vehicles,** and click **Active Vehicles Report**

The report runs automatically when the page loads. It is specifically designed to display a list of all users who have **at least 1 more active vehicles than they do valid permits**. This is to identify potential permit misuse.

##### <span style="text-decoration: underline;">Key Information Displayed</span>

For each user meeting the criteria, the report will typically display:

- **Username**: The name of the user.
- **Email**: The user's listed email address.
- **Active Vehicles**: A count of active vehicles currently listed on their profile.
- **Valid Permits**: A count of valid permits they currently hold.
- **Allowed Extra Vehicles**: The amount of extra vehicles specifically allowed by that user, which is determined by user type settings (default is 1, meaning 1 additional is allowed).
    
    
    - - The amount of *un-authorized extra vehicles* is: **\# of active permits**, **plus the amount of allowed extra vehicles**. Take this total, and subtract it from the amount of Active Vehicles, and this is the number each user is exceeding their limit by.

<p class="callout warning">**Warning.** **This report is an investigative tool, not a definitive list of violators.** A discrepancy can occur for legitimate reasons, such as a user forgetting to remove an old vehicle after selling it or adding a temporary rental car.</p>

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Develop a standard procedure for addressing users on this report.** A best practice is to contact the user and ask them to review and update the vehicle list on their profile. Instruct them to remove any vehicles they no longer own or use for parking on the premises.</span>
- <span style="color: rgb(22, 145, 121);">**Review this report periodically**, such as at the beginning of each semester or before a major permit sales cycle, to ensure user data is clean and accurate ahead of peak periods.</span>

# Tracking Electrical Vehicles

<p class="callout info">This article describes how to identify and manage Electric Vehicle (EV) flags within OPSCOM. This feature allows both administrators and users to designate vehicles as electric, which is essential for managing access to charging stations, reporting on sustainability metrics, and applying EV-specific parking policies. This guide is intended for OPSCOM administrators.</p>

### Using this Feature

The EV flag feature is enabled by default and does not require any special configuration. The functionality is available on all vehicle information pages for both administrators and end-users. Both administrators and users can manage the EV designation for a vehicle. The system provides clear visual indicators and reporting tools to track these vehicles.

#### <span style="text-decoration: underline;">Administrator Side</span>

##### How to Flag a Vehicle as an EV:

1. Go to **User Management,** and click **User Search,** search for and select a user who's vehicle you wish to manage.
2. Click the **Vehicles** tab.
3. Click the **license plate** link for the vehicle you wish to edit.
4. In the vehicle information pop-up window, enable the **Electric Vehicle** checkbox.
5. Click **Save Changes**.

##### Identifying and Reporting on EVs:

- **In a User Profile**: On the **Vehicles** tab, EVs are identified by a blue thunderbolt icon next to the license plate. Hovering over this icon displays a tooltip confirming it is an electric vehicle.
- **Using the Vehicle Report**: To get a list of all EVs in the system:
    
    
    1. Navigate to **User Management** -&gt; **Vehicles** -&gt; **Search by Plate**.
    2. Enable the **Electric Vehicle** checkbox.
    3. Click **Search**. The results will include an **EV** column to easily identify all flagged vehicles.

#### <span style="text-decoration: underline;">User Side</span>

##### How Users Flag Their Vehicle as an EV:

Users are also able to designate their own vehicles as electric through their online profile.

1. The user logs into their OPSCOM portal and navigates to the page listing their vehicles.
2. They click the **Edit** button for the desired vehicle.
3. In the vehicle details window, they enable the **Electric Vehicle** checkbox and save the changes.

##### Identifying EVs on the User Portal:

Like the admin view, users can identify their EVs by the blue thunderbolt icon displayed next to the vehicle's license plate in their vehicle list.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Tip** **Use the EV flag to manage access to dedicated charging station areas.** You can create specific lots or permit types that are only available to users with a flagged EV on their profile.</span>
- <span style="color: rgb(22, 145, 121);">The **Search by Plate** report is a valuable tool for sustainability reporting. **Regularly run the report with the Electric Vehicle filter enabled** to track the number of EVs in your parking system and measure the adoption of green transportation.</span>
- <span style="color: rgb(22, 145, 121);">**Encourage users to accurately update their vehicle information**, including the EV flag, during permit registration or renewal. This ensures your data is accurate without requiring manual administrative updates for every vehicle.</span>
- <span style="color: rgb(22, 145, 121);">If your organization has EV-specific parking policies (e.g., 'EVs Only' parking stalls), the EV flag provides the data needed to enforce these rules effectively through vehicle lookups.</span>

# OperationsCommander & Locker Management

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# 🚀 The Evolution of OPSCOM: Introducing Project Eevee & Project Butterfly

Since launching ParkAdmin in the early 2000s, your parking needs have become more sophisticated. We’ve been closely observing how our power-users interact with OperationsCommander and we’ve identified some incredible opportunities to streamline your workflows and unlock new levels of flexibility.

While our current system has been a reliable workhorse, we’ve noticed that as you add more lots and complex pricing tiers, the effort required manage it all has increased. We’ve identified three key areas where we are ready to take the platform to the next level:

- **Dynamic Sales Windows:** Moving beyond the 4 allocation types to allow for an unlimited number of overlapping and staggered sales windows.
- **Unified Lot Management:** Transitioning from “Virtual Lots” to a single, hierarchical view that handles multiple price points and user types automatically.
- **Automated Rollovers:** Shifting from manual renewals to an automated “subscription-style” logic that handles the heavy lifting of term-to-term rollovers.

To ensure this new model is rock-solid, the OPSCOM team is launching **Project Eevee** as our proof-of-concept. By using **Lockers** as our initial model—which perfectly mirrors the complexity of parking permits on a manageable scale—we are refining a new “Container” hierarchy:  
**Region → Campus → Building → Floor → Unit.**

This new structure allows you to define a price once and have it apply intelligently across your entire lot based on who is buying and when.

Once Project Eevee is proven and optimized, its DNA will form the basis for **Project Butterfly**. This will be a total reimagining of our Permitting system—bringing these same efficiencies, automations, and hierarchical controls to your entire parking inventory.

![:speech_balloon:](https://community.ops-com.com/images/emoji/twitter/speech_balloon.png?v=15 ":speech_balloon:") Help Us Shape the Evolution  
We aren’t just building this for you; we want to build it *with* you. As we develop the new **Grid Editor** and enhanced **User Portal**, your insight is our most valuable asset.

**[We’d love to hear your thoughts in the comments at the Community!](https://community.ops-com.com/t/the-evolution-of-opscom-introducing-project-eevee-project-butterfly/62)** This is the beginning of a massive leap forward for the OPSCOM community, and we are excited to have you on this journey with us.

# Locker Search

<p class="callout info">This article describes how to use the Locker Search tool to find, view, and manage lockers. This feature allows administrators to filter for specific lockers, review renter information, manage public visibility, and access detailed rental histories. This guide is intended for OPSCOM administrators responsible for locker inventory and rentals.</p>

### Using this Feature

The Locker Search page allows you to filter your locker inventory and perform both individual and bulk actions on the results.

##### <span style="text-decoration: underline;">Performing a Locker Search</span>

1. Go to **Locker Management** and click **Search**.
2. On the **Locker Search** page, enter your criteria into one or more fields (e.g., **Locker Area**, **Locker Status**, **Renter Name**, **Locker Number**).
3. Click the **Retrieve** button to run the search.

The search results will appear in a list below the search form. Each row represents a single locker.

##### <span style="text-decoration: underline;">Available Actions and Buttons</span>

The following actions can be performed on the search results page.

**Page-Level Actions**: These actions apply to the entire list of lockers returned by your search.

- **Generate Mailing List**: Click this to download an Excel report containing the mailing details for all users currently renting a locker within the search results.
- **Mark All Available**: Click to check the **User Visible** box for all lockers in the current results list, making them available for public rental.
- **Mark All Not Available**: Click to uncheck the **User Visible** box for all lockers in the current results list, hiding them from public view.
- **Update Records**: After using the **Mark All** buttons or manually changing individual **User Visible** checkboxes, click this button to save all changes.

**Row-Level Actions**: These actions apply to a single locker in the list.

- **Locker # Link**: Click the number in the **Locker #** column to open the **Current Locker Information** pop-up. Here you can edit the locker's **Condition**, add internal **Comments**, and view current renter details. Click **Update** within the pop-up to save any changes.
- **History Icon (H)**: Click the gold **H** icon to view a detailed history of the specific locker, including all past renters and associated transactions.
- **User Visible Checkbox**: Manually check or uncheck this box for an individual locker to change its public visibility. Remember to click **Update Records** to save.

<p class="callout info">The **Locker History** is a valuable audit tool. Use it to resolve disputes about previous rentals or to track the maintenance history of a specific locker over its lifecycle.</p>

<p class="callout warning">**Warning:** **Always click Update Records after making changes** to the **User Visible** column. Whether you use the bulk "Mark All" buttons or change individual checkboxes, your changes will not be saved until you click the **Update Records** button.</p>

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Use the Mark All Available / Not Available buttons with care.** These actions apply to all lockers returned in your search results. Ensure your search criteria are specific enough to avoid accidentally changing the status of unintended lockers.</span>
- <span style="color: rgb(22, 145, 121);">**Use the Generate Mailing List feature** at the end of a rental term to easily export contact information for sending out renewal reminders or locker clean-out notices.</span>

# Locker Switch

<p class="callout info">This article describes the Locker Switch tool, which allows administrators to reassign a user to a different locker or swap locker assignments between two users. Its primary purpose is to provide a clear workflow for managing locker changes due to user requests, maintenance needs, or other administrative requirements. This guide is intended for OPSCOM administrators.</p>

### Using This Feature

This tool is a standard feature within the locker management module and does not require any specific configuration. The tool relies on existing locker and user rental information being present in the system.

The Locker Switch tool allows for two distinct actions: moving a single user to a new locker (**Switch**) or exchanging lockers between two users (**Swap**).

- Hover over **Locker Management** and click **Locker Switch**.
- In the **Old Locker** section, select the **Locker Area** and **Locker Number** for the locker being changed. Verify that the correct user's name is displayed.
- In the **New Locker** section, select the **Locker Area** and **Locker Number** for the destination locker.
- Choose one of the two action buttons based on your goal: 
    - **Switch Old to New**: Click this to move the user from the old locker to the new locker. This is typically used when moving a user to a vacant locker.
    - **Swap Old with New**: Click this to exchange locker assignments between the user of the old locker and the user of the new locker.
- On the **Locker Switch Confirmation** page, add any relevant notes in the **Reason for Action** text box if necessary.
- Click the **Switch User Lockers** button to finalize the change. A final **Locker Information Updated** page will be displayed to confirm the action was successful.

---

### <span class="citation-715 citation-end-715" style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations<sup class="superscript" data-turn-source-index="1"></sup></span>

- <span style="color: rgb(22, 145, 121);">**Carefully choose between the Switch and Swap functions.** Selecting **Swap** when the new locker is vacant may result in an error, while selecting **Switch** when the new locker is occupied by another user will unassign that user from their locker.</span>
- <span style="color: rgb(22, 145, 121);">**Always verify the user's name** after selecting the **Old Locker Number**. This ensures you are modifying the correct user's assignment before proceeding.</span>
- <span style="color: rgb(22, 145, 121);">**Add a brief comment** if necessary to help determine why changes to the locker were made for future reference.</span>

# Awaiting Payment (Lockers)

<p class="callout info">This article describes the **Lockers Awaiting Payment report**, a tool used to manage and communicate with users who have pending locker payments. Its primary purpose is to provide administrators with a centralized view of unpaid locker reservations and offer tools for sending payment reminders. This guide is intended for OPSCOM administrators.</p>

### Using this Feature

The report allows administrators to filter for users with unpaid locker reservations and provides several tools for communication and management.

##### <span style="text-decoration: underline;">Generating the Report</span>

1. Go to **Locker Management** and click **Awaiting Payment**.
2. On the **Lockers Awaiting Payment** page, use the drop-down menus to filter by **Locker Area** and select a **Sort Type** (e.g., by building area, by user).
3. Click the **Search** button to generate the list.

##### <span style="text-decoration: underline;">Available Actions and Buttons </span>

The report provides several actions for managing the listed users and their lockers:

- **Email Listed Users**: Click this button to send a single, bulk email to all users displayed in the search results.
- **Envelope Icon**: Click the envelope icon in a user's row to send an email to that individual user only.
- **Username**: Click a user's name to navigate directly to their user profile page.
- **Locker Number**: Click the locker number to open a pop-up window with the locker's details. You can update fields like **Condition** and add **Comments**. Click **Update Locker** to save changes.
- **Building Area**: If applicable, click the link in the **Building Area** column to view or edit details about that location. Click **Update this Area** to save any changes.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Use the Email Listed Users button to send out periodic payment reminders.** This can help reduce the number of abandoned reservations and ensure timely payment.</span>

# Midnight List - Lockers

<p class="callout info">The **Midnight List** is a list of lockers due to be cleared out of the system at midnight. Follow the instructions in this [wiki article to Clear Locker Items Awaiting Payment](https://opscom.wiki/books/the-opscom-admin-portal/page/clearing-items-awaiting-payment-midnight-list)</p>

# Non Returning Users Report

<p class="callout info">This article describes the **Non-Returning Users Report**, a tool that helps identify students who rented lockers in a previous semester but did not rent one in the current semester. This report allows administrators to investigate whether these students are still using their lockers without payment or are no longer attending the school. </p>

### Using this Feature

This report is a standard feature within the locker management module and does not require any special configuration. The data is pulled directly from existing locker rental records.

##### <span style="text-decoration: underline;">To generate the Non-Returning Users Report:</span>

1. Go to **Lockers Management** and click **Non-Returning Users Report**.
2. Under **Old Semesters**, click the **Yearly** drop-down menu and select the appropriate **Old Sales Window**.
3. Under **Current Semesters**, click the **Yearly** drop-down menu and select the appropriate **Current Sales Window**.
4. Click **Search** to view the report. The results will appear in a table.
5. To download the information, click **Export** to save the data as a spreadsheet file.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">This report is particularly useful at the end of a semester to identify potential unauthorized locker usage.</span>
- <span style="color: rgb(22, 145, 121);">The exported data can be used to cross-reference with student enrollment records to determine if non-returning students are still attending the institution.</span>

# Locker Sales Windows

<p class="callout info">This article describes how to use the Locker Sales Window tool to create and manage the timeframes during which users can purchase lockers. This feature allows administrators to control the availability of locker sales for different rental periods, such as by semester or year. This guide is intended for OPSCOM administrators.</p>

### Setup &amp; Configuration

The core setup for this feature involves creating the sales windows that define your rental periods.

- Hover over **Locker Management** and click **Sales Window**.
- On the **Manage Locker Sales Window** page, click the **Add Sale Window** button.
- Fill in the required information in the pop-up window that appears.
- Click **Save Changes**. The new sales window will be created with an "Inactive" status by default.

### Using this Feature

Once sales windows are created, you can manage their visibility and status.

- **Activating and Deactivating Sales Windows** To activate or deactivate a sales window, click the **Active** button next to it. An active window allows users to purchase associated lockers. You can have up to four active sales windows at one time, one for each category: **Yearly (Y)**, **Monthly (M)**, **Semester (S)**, and **Other (O)**.
- **Editing a Sales Window** Click the **Edit** button to modify the details of a sales window.

If the **Edit** button is faded and unavailable, it means the sales window already has locker sales associated with it and cannot be modified by an administrator. Please contact OPSCOM support for assistance in this case.

**Archiving and Restoring Sales Windows** To move a completed window out of the main view, click the **Archive** button. The window will be moved to the **Past Locker Sales Window** section. To bring an archived window back to the active list, click the **Restore** button next to it in the archive section<span class="citation-727 citation-end-727">.<sup class="superscript" data-turn-source-index="1"></sup></span>

<div _ngcontent-ng-c1914962545="" class="source-inline-chip-container ng-star-inserted" id="bkmrk-"></div>
---

### <span class="citation-726 citation-end-726" style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations<sup class="superscript" data-turn-source-index="2"></sup></span>

- <span style="color: rgb(22, 145, 121);">**Deactivating a sales window that has active locker rentals will cause all users to lose their lockers within that window.** The lockers can be restored by reactivating the window, but this action should be performed with caution.</span>
- <span style="color: rgb(22, 145, 121);">**Plan your sales windows in advance** of each rental period (e.g., before the start of a new semester). Create the windows ahead of time and activate them only when you are ready for sales to begin.</span><div _ngcontent-ng-c1914962545="" class="source-inline-chip-container ng-star-inserted"></div><div _ngcontent-ng-c1914962545="" class="source-inline-chip-container ng-star-inserted"></div>

# Allocate Lockers

<p class="callout info">This article describes the process of setting up and managing your locker inventory using the Locker Allocation tool. This feature allows administrators to create a hierarchical structure of buildings and areas, add individual lockers in bulk, and manage their status and visibility. This guide is intended for OPSCOM administrators responsible for locker management.</p>

### Setup &amp; Configuration

Setting up your locker inventory is a hierarchical process that involves creating buildings, then areas within those buildings, and finally adding lockers to those areas.

##### <span style="text-decoration: underline;">Accessing the Locker Allocation Page</span>

- Hover over **Lockers Management** and select **Allocate**.

##### <span style="text-decoration: underline;">Create a Building</span>

1. On the **Manage Locker Numbers** page, click **Add Building**.
2. Enter the **Building Name** and **Location** information.
3. Click **Save Changes**.

##### <span style="text-decoration: underline;">Create a Building Area</span>  


1. Once the building is added, click **Add Area** within that building's section.
2. Enter the **Area Name** and **Description**.
3. Select the **Locker User Types** that can rent lockers in this area.
4. Choose a **Sales Window** type (**Yearly**, **Monthly**, **Semester**, or **Other**).
5. Click **Save Changes**.

##### <span style="text-decoration: underline;">Add Lockers to an Area</span>

1. Click the **+** symbol next to the area where you want to add lockers.
2. Use one or both of the following methods to enter locker numbers:
    
    
    - **Specific Lockers**: Enter individual locker numbers, with each number on a new line.
    - **Locker Range**: Enter a **Start** and **End** number for a sequential range. You can also add an optional **Prefix** or **Postfix**.
3. Ensure the **Visible** checkbox is enabled if you want the lockers to be immediately available for users to see.
4. Click **Add Lockers**.

### Using this Feature

Once your locker inventory is created, you can view, archive, and restore lockers as needed.

##### <span style="text-decoration: underline;">Viewing Lockers in an Area</span>

- To view the list of all lockers within a specific area, click the **Magnifying Glass Icon** next to the area name on the **Manage Locker Numbers** page.

##### <span style="text-decoration: underline;">Archiving Lockers</span>

- To remove lockers from the active inventory, click the **Trash Bin Icon** next to the relevant area.
- You will be presented with two options:
    
    
    - **Archive All Lockers**: Archives every locker in the area.
    - **Archive Selected Lockers**: Allows you to choose specific lockers from a list to archive.

##### <span style="text-decoration: underline;">Restoring Archived Lockers</span>

- To restore archived lockers, click the **+** symbol for the area.
- Enter the numbers of the lockers you wish to restore.
- Select **Restored** from the locker status drop-down menu and confirm the action.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Consideration</span>

- <span style="color: rgb(22, 145, 121);">**You can use both the Specific Locker and Locker Range methods simultaneously** to add non-sequential and sequential loc<span class="citation-739">kers in a single operation. This is efficient for complex locker layouts.</span></span>
- <span style="color: rgb(22, 145, 121);">**Archiving lockers removes them from the active inventory.** While they can be restored, this action should be used carefully, especially if lockers have current or past rental history associated with them.</span>

# Locker Troubleshooting

Basic test for checking if the locker availability is set correctly when using Locker UserTypes.

# Permit Management - ParkAdmin

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Permit Search

<p class="callout info">This article describes the Permit Search tool, a central hub for finding, managing, and reporting on all parking permits. Its primary purpose is to provide administrators with detailed search capabilities and a suite of actions for managing permit visibility, user assignments, and communications. This guide is intended for OPSCOM administrators.</p>

### Using this Feature

This tool is a standard administrative feature and does not require any specific configuration. It utilizes the existing permit and user data within the system. The Permit Search page allows you to find specific groups of permits and then perform a variety of bulk and individual management actions.

##### <span style="text-decoration: underline;">Performing a Permit Search</span>

1. Go to **Permit Management** and click **Permit Search**.
2. Enter your desired criteria in the search fields.
3. Optionally, enable the **Archived Permit Data** or **Include Only Active Permits** checkboxes to refine your search.
4. Click the **Toggle More Options** button to reveal additional search filters that can be pinned to your default view.
5. Click the **Retrieve** button to generate the results.

##### <span style="text-decoration: underline;">Understanding the Permit Counts Legend </span>

At the top of the search results, a legend provides a quick overview of the permits found:

- **Total**: Total number of permits found by your search criteria.
- **Requested**: A user is associated with the permit, but no payment has been initiated.
- **Rented/Reserved**: A payment is associated with the permit, but it may not be fully processed yet.
- **Visible To User**: The permit is available for purchase and has no user associated with it.
- **Visible to Admins**: The permit is hidden from users and has no user associated with it.
- **Unavailable**: The permit's state is not set to Good, Valid, or Usable.

##### <span style="text-decoration: underline;">Performing Bulk Actions and Reports</span>

- From the drop-down menu at the top of the results, select a report or action to apply to all permits in the list.
- Click the **Perform Selected Action** button to proceed.
- Available actions include: **Generate Mailing List**, **Generate User Usage Report**, **Send Email to Permit Users**, **Generate Status Report**, and **Generate Permits for Printing**.

##### <span style="text-decoration: underline;">Managing Individual Permits in the Results List</span>

- **Permit Number**: Click the link in this column to open the **Parking Permit Information** screen, where you can manage the **Permit State** and view associated user and payment details.
- **Clock Icon (History)**: Click this icon to view the permit's complete transaction and user rental history.
- **Reserved/Rented**: Click the user's name in this column to view their details, with links to their profile or to send an email.
- **Toggle Availability**: Use the checkbox in this column to control if a permit is visible to users for purchase. Use the **Mark all Available** or **Mark all Not Available** buttons for bulk changes, then click **Update Records** to save.
- **Release**: Click this link to disassociate the permit from its current user, making it available for resale.
- **Switch**: Click this link to change the permit number assoc<span class="citation-769 citation-end-769">iated with the current user.<sup class="superscript" data-turn-source-index="1"></sup></span>
    
    <div _ngcontent-ng-c1914962545="" class="source-inline-chip-container ng-star-inserted"></div>

---

### <span style="color: rgb(22, 145, 121);"></span><span style="color: rgb(22, 145, 121);"><span class="citation-768 citation-end-768">Best Practices &amp; Considerations<sup class="superscript" data-turn-source-index="2"></sup></span></span>

<div _ngcontent-ng-c1914962545="" class="source-inline-chip-container ng-star-inserted" id="bkmrk--1"><span style="color: rgb(22, 145, 121);"></span></div>- <span style="color: rgb(22, 145, 121);">**Releasing a permit does not automatically refund the user.** This action only disassociates the permit from the user. If a refund is required, you must also perform a separate *financial adjustment*.</span>
- <span style="color: rgb(22, 145, 121);">**Understand the difference between permit statuses:** **Requested** means a user has selected an item but has not yet chosen a payment method. **Reserved** means there is an associated unprocessed payment (promise to pay, e.g., cheque). **Rented** means the payment is processed.</span>
- <span style="color: rgb(22, 145, 121);">**Use the Toggle More Options button to pin frequently used search filters** to your default view. This saves time and customizes the search page to your workflow.</span>

# New Page



# Permit Switch

<p class="callout info">This article describes the administrative tool for performing permit switches and moves. This feature provides two distinct functions: swapping permit assignments between two permits, and moving a permit from one user to another. This tool is essential for managing changes in user parking assignments or handling permit transfers. This guide is intended for OPSCOM administrators.</p>

### Using this Feature

The tool offers two primary functions which are detailed below. This feature is a standard administrative tool and does not require any specific configuration to use. Its functionality relies on existing user and permit data.

##### <span style="text-decoration: underline;">Swapping Permits </span>

This process is used to exchange permit assignments. This can be between two users, or for moving one user to a different, vacant permit.

- Select the lot and permit number for the first permit in the **Current Permit** fields.
- Select the lot and permit number for the second permit in the **New Permit Lot** fields. Permits already assigned to other users will be highlighted and display the owner's name.
- Click the **Switch two permits** button.
- On the confirmation screen, review the price difference and select either the **Full Price** or **Prorated Price** radio button.
- Enter a mandatory **Reason for Action**.
- Click the **Switch User Permit** button to finalize the swap.

##### <span style="text-decoration: underline;">Moving a Permit from One User to Another</span>

This process transfers ownership of a specific permit from one user to another.

- In the first user search field, find and **Select** the user who currently holds the permit. A list of their assigned permits will be displayed.
- Select the permit you wish to move. A second user search field will appear.
- In the second search field, find the user who will be receiving the permit.
- Click the **Move Permit** button.
- Click **Ok** in the confirmation dialog to finalize the t<span class="citation-93 citation-end-93">ransfer.<sup class="superscript" data-turn-source-index="1"></sup></span>
    
    <div _ngcontent-ng-c1390479486="" class="source-inline-chip-container ng-star-inserted"></div>

### <span style="color: rgb(22, 145, 121);"><span class="citation-92 citation-end-92">Best Practices &amp; Considerations<sup class="superscript" data-turn-source-index="2"></sup></span></span>

<div _ngcontent-ng-c1390479486="" class="source-inline-chip-container ng-star-inserted" id="bkmrk-"><span style="color: rgb(22, 145, 121);"></span></div>- <span style="color: rgb(22, 145, 121);">**Moving a permit from one user to another does not transfer any associated invoices.** The original user remains responsible for any outstanding payments on their account.</span>
- <span style="color: rgb(22, 145, 121);">When swapping permits with different values, **the system automatically calculates the price difference**, both at full and prorated rates. This difference will be applied as a charge or credit to the user's account upon confirmation.</span>
- <span style="color: rgb(22, 145, 121);">**Always enter a clear and concise Reason for Action when performing a switch.** This creates an important audit trail that can be reviewed in the permit's history, explaining why the administrative change was made.</span>

# Awaiting Payment - Permits

<p class="callout info">This article describes the Permits Awaiting Payment report, a tool used to manage and communicate with users who have pending permit payments. Its primary purpose is to provide administrators with a centralized view of unpaid permit reservations and offer tools for sending payment reminders and processing payments. This guide is intended for OPSCOM administrators.</p>

### Using this Feature

The report allows administrators to filter for users with outstanding permit payments and provides several tools for communication and management. This report is a standard feature of the permit management module and does not require any specific configuration. It automatically displays data based on user permit reservations and their payment status.

##### <span style="text-decoration: underline;">Generating the Report</span>

1. Hover over **Permit Management** and click **Awaiting Payment**.
2. The **Permits Awaiting Payment** screen will load, displaying all users with pending payments.
3. Optionally, select a specific lot from the drop-down menu at the top of the page to filter the list.

##### <span style="text-decoration: underline;">Available Actions and Buttons</span>

- **Email Listed**: Click this button to send a single, bulk email to all users displayed in the list. A pop-up will allow you to compose a message and add attachments.
- **Export and Print**: Use the **Excel**, **CSV**, **PDF**, **Copy**, and **Print** buttons to export or print the current report data.
- **Envelope Icon**: Click this icon in a user's row to send an email to that individual user.
- **Profile Icon**: Click this icon to navigate directly to the user's profile page.
- **Permit Number**: Click the link in this column to view or edit the permit's details and process any associated payments.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Use the Email Listed button to send bulk payment reminders** to all users on the report. This is an efficient way to prompt users to complete their purchases.</span>
- <span style="color: rgb(22, 145, 121);">This report specifically targets users who have a 'promise to pay' on file (such as a pending cheque or payroll deduction) but whose payment has not yet been processed. It is a key tool for managing non-credit card transactions.</span>
- <span style="color: rgb(22, 145, 121);">You are encouraged to run this report **weekly** and send an **email reminder** for users to remit payment.</span>

# Using the Basic Waitlist Report

<p class="callout info">The **Basic Waitlist Report** provides OPSCOM administrators with a centralized view of all users currently on waitlists, organized by parking lot. This report is a crucial tool for managing demand, enabling easy access to user profiles, facilitating communication, and streamlining the process of offering permits to waitlisted individuals.</p>

### Setup &amp; Configuration

Before users can join a waitlist or their data appears in this report, waitlist functionality must be properly configured within your OPSCOM system.

##### <span style="text-decoration: underline;">Admin Side</span>

- **Enabling Waitlists for Lots**: Instructions for enabling waitlists for specific lots can be found on the [**Pricing &amp; Lot Admin**](https://opscom.wiki/books/the-opscom-admin-portal/page/pricing-and-lot-admin) page, under the **Standard Permits** section. Waitlists can be set up for individual lots or configured as grouped waitlists that cover multiple locations.
- **"Only Allow Waitlist after lot is Full" Setting**: This setting determines whether users will see the option to join a waitlist even before all permits for a designated lot are sold out, or only once the lot reaches full capacity.

##### <span style="text-decoration: underline;">User Portal</span>

You can configure the option to allow users to see their rank on the waitlist or not. To do this, follow the steps below:

1. Hover over **System Configuration** and click **System Settings**.
2. On the **Permits** tab, find and enable the **Show Waitlist Rank** checkbox.
3. Refer to [this page to see the User Experience](https://opscom.wiki/books/OPSCOM-user-portal/page/viewing-your-waitlist-position).

### Using the Basic Waitlist Report

1. Hover over **Permits,** then **Waitlists,** and click **Waitlist Report**.
2. On the **Waitlist Report** screen, Administrators can view/edit details about a user waiting to purchase a permit in a specific lot.
3. This screen allows the admin to quickly see:
    
    
    - The user's Rank on the waitlist
    - The date they were added to the waitlist
    - The user's name
    - Their user type
    - Their city
    - Phone Number
    - Comments
    - The lot they are waiting for a permit in

<p class="callout warning">If the record is highlighted in <span style="color: rgb(53, 152, 219);">**blue**</span>, the user does not currently have a permit assigned to them.   
If the record is highlighted in <span style="color: rgb(241, 196, 15);">**yellow**</span>, the user does currently have a permit assigned but has not yet purchased it. </p>

### Available Actions &amp; Buttons

- The **User Profile icon** allows administrators to view and edit the user's profile. This is also the primary link administrators would use if they wanted to **sell a permit** to the user who is on the waitlist (click the **User Profile** icon and then the **Parking Tab** within their profile).
- The **Add button** allows administrators to add comments specific to the waitlist record. If a comment already exists, an **edit link** will appear, allowing administrators to update the comments on file.
- The **Toggle Selections** button allows administrators to select all records displayed in the report simultaneously. You can also make individual record selections by enabling the checkbox to the left of each record.
- The **Export to Excel** button exports the entire table as an Excel spreadsheet for further analysis or record-keeping.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Develop Business Rules**: Organizations should establish clear business rules for when to remove a user from the waitlist, such as after a user has been emailed an offer, or after a permit has been successfully purchased and processed.</span>
- <span style="color: rgb(22, 145, 121);">**Proactive Management**: Regularly review the Waitlist Report to identify users who are next in line and to manage available permits efficiently.</span>
- <span style="color: rgb(22, 145, 121);">**Communication**: Use the report to facilitate communication with waitlisted users, either individually or in bulk (using the export function for email lists, for example).</span>
- <span style="color: rgb(22, 145, 121);">**User Experience**: If `Show Waitlist Rank` is enabled, ensure users understand what their rank means and how it might change.</span>

# Managed Waitlist

<p class="callout info">The OPSCOM Managed Waitlist system automates the process of assigning available permits to waitlisted users. When a permit becomes available, the system reserves it, notifies designated administrators, and allows them to assign it to a user, who then has a specific timeframe to complete the purchase before the permit is released back to the waitlist.</p>

### Setup &amp; Configuration

1. Hover over **System Configuration** and click **System Settings**.
2. Click the **Permits** tab.
3. Find and enable the **Enable Managed Waitlist** checkbox.
4. Enter admin emails into the **Waitlist Email Managers** field. Multiple email addresses can be separated by commas. These email addresses will be notified when a permit becomes available for waitlisted users.
5. Enter the amount of time that is being given to users to purchase permits in the **Waitlist Reservation Duration** box. This value is measured in days.

<p class="callout warning">Enabling the Managed Waitlist setting makes the core waitlist system active, but you must still enable waitlists on individual lots for them to be used.</p>

##### <span style="text-decoration: underline;">Enabling Waitlists on Individual Lots</span>

- **Enabling Waitlists for Lots**: Instructions for enabling waitlists for specific lots can be found on the [**Pricing &amp; Lot Admin**](https://opscom.wiki/books/the-opscom-admin-portal/page/pricing-and-lot-admin) page, under the **Standard Permits** section. Waitlists can be set up for individual lots or configured as grouped waitlists that cover multiple locations.
- **"Only Allow Waitlist after lot is Full" Setting**: This setting determines whether users will see the option to join a waitlist even before all permits for a designated lot are sold out, or only once the lot reaches full capacity.

##### <span style="text-decoration: underline;">User Side Setup and Experience</span>

You can configure the option to allow users to see their rank on the waitlist or not. To do this, follow the steps below:

1. Hover over **System Configuration** and click **System Settings**.
2. On the **Permits** tab, find and enable the **Show Waitlist Rank** checkbox.
3. Refer to [this page to see the User Experience](https://opscom.wiki/books/OPSCOM-user-portal/page/viewing-your-waitlist-position).

The Managed Waitlist emails sent to users now include both the purchase deadline **date and time** to prevent users from losing their spot.

##### <span style="text-decoration: underline;">Waitlist Email Templates</span>

There is a standard email template you can configure for communicating with your users. To learn more about working with email templates, [refer to this wiki article](https://opscom.wiki/books/setup-configuration-for-admins/page/email-templates).

### Working with the Managed Waitlist

##### <span style="text-decoration: underline;">Assigning a User a Permit from the Waitlist</span>

When a permit becomes available in a lot with a waitlist the admin will be notified via the email address that was setup for **Waitlist Email Managers**. The permit will be reserved for assignment to users on the waitlist.

To assign the permit to a specific person on the waitlist, follow the instructions below.

1. Go to **Parking Management,** then **Waitlists,** and click **Waitlist**.
2. On the **Waitlist** screen, select **Assign** to associate the selected user to the permit you wish them to have.

##### <span style="text-decoration: underline;">Releasing or Extending an Assigned Permit</span>

If the amount of time you set in the **Waitlist Reservation Duration** passes and the user hasn't purchased a permit, the admin will be sent an email. The admin has the option to **Release** the permit, so that it can be assigned again or to **Extend** the users time to pay for the permit. To do this:

1. Return to the **Waitlist** page, and select the Permit icon beside the username.
2. From the **Parking Permit Information** page, select **Release Permit** or click **Extend** to add 10 more days.

### Additional Waitlist Management Actions

- The **Remove Selected From Waitlist** button allows administrators to remove individual or multiple records from the waitlist.
- The **Email All Listed Users** button allows administrators to send a single email message to all users currently displayed in the table.
- The **Email Selected Users** button allows administrators to send an email only to those users they have individually selected.
- The **Export to Excel** button exports the entire waitlist table as an Excel spreadsheet for further analysis or external use.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Clear Communication**: Customize the **Waitlist Selected** email template to clearly inform users about the permit offer, the purchase deadline, and next steps.</span>
- <span style="color: rgb(22, 145, 121);">**Defined Process**: Establish internal procedures for managing permit offers, extensions, and removals from the waitlist to ensure consistency and fairness.</span>
- <span style="color: rgb(22, 145, 121);">**Monitor Email Managers**: Ensure the email addresses in **Waitlist Email Managers** are actively monitored by the appropriate staff to facilitate prompt assignment and follow-up.</span>
- <span style="color: rgb(22, 145, 121);">**Waitlist Reservation Duration**: Set a realistic and fair reservation duration, balancing user convenience with the need to quickly reassign permits if offers are not taken up.</span>
- <span style="color: rgb(22, 145, 121);">**Leverage Reporting**: Use the **Waitlist Report** and export features to analyze demand, identify trends, and refine your permit allocation strategies.</span>

# Setting Permit State for a Lost or Stolen Permit

<p class="callout info">This article describes the process for managing a lost or stolen permit. This involves switching the user to a new permit and then setting the state of the original permit to **Lost** or **Stolen** to remove it from circulation.</p>

### Understanding the Lost or Stolen State

Setting a permit's state to **Lost** or **Stolen** will immediately remove it from active circulation. The permit will no longer be available for:

- Purchase or assignment from the Admin Portal
- Purchase from the User Portal
- Selection within the Permit Switching tool

### Using this Feature

<div _ngcontent-ng-c1390479486="" class="source-inline-chip-container ng-star-inserted" id="bkmrk-"></div>You **must** switch the user to a new permit *before* setting the old permit's state to **Lost** or **Stolen**. Failing to do so will make the old permit unavailable for the switch process. No specific system configuration is required for this process. It utilizes the standard **Quick Search** and permit management tools.

This process is divided into **two distinct parts**: first switching the user to a ne<span class="citation-133 citation-end-133">w permit, and then deactivating the old one.</span>

<div class="confluence-information-macro confluence-information-macro-warning" id="bkmrk--1"><div _ngcontent-ng-c1390479486="" class="source-inline-chip-container ng-star-inserted"></div></div>##### <span style="text-decoration: underline;">Section 1: Switching the User to a New Permit</span>

- Use the **Quick Search** bar to find the permit number that has been reported lost (e.g. PW21).
- From the search results, click the **Switch** button.
- On the permit switch screen, the user's current permit will appear on the left. On the right, use the drop-down menu to select a new, available permit for the user (e.g., PW19).
- Click the **Switch Permits** button to complete the change. A pop-up notice will confirm the switch is complete.

##### <span style="text-decoration: underline;">Setting the Old Permit State to Lost</span>

- Use the **Quick Search** bar again to find the original permit number (PW21).
- From the search results, click the permit number link to open the permit details page.
- Click the **Permit States** drop-down menu and select **Lost** or **Stolen**.
- The system will confirm the update. The old permit is now officially out of circulation and will no longer appear in available permit lists.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">During busy sales periods, **consider temporarily hiding the new permit** you plan to switch the user into. This prevents another user from purchasing it during the brief moment it is being processed.</span>
- <span style="color: rgb(22, 145, 121);">The **Lost** or **Stolen** state is reversible. If a permit is found, you can navigate back to its details page and change its state back to an active one.</span>


<div class="rich-media-item mediaSingleView-content-wrap image-center cc-1d53ezb" data-layout="center" data-node-type="mediaSingle" data-renderer-start-pos="2910" data-width="760" data-width-type="pixel" id="bkmrk--3"></div>

# Altering the Price of Unpaid Standard Permits

<p class="callout info">This article describes the process for editing the cost of an unpaid standard permit for a specific user. This feature allows administrators with the proper permissions to make one-time price adjustments for a single transaction without affecting the permit's default price for other users. </p>

### Setup &amp; Configuration

For an administrator to use this feature, their user role must have the **Edit Unpaid Permit Cost** permission enabled.

- Go to **System Configuration**, then **Admin Management**, and click **Manage Roles**.
- Select the administrator role you wish to modify.
- Go to the permissions list for that role.
- Locate and enable the **Edit Unpaid Permit Cost** checkbox.
- Save the changes to the role.

### Using this Feature

Once the permission is enabled, the price of an unpaid permit can be changed from two different locations in the Admin Portal.

##### <span style="text-decoration: underline;">Editing During Permit Reservation</span>

- While booking a permit for a user, click the **edit cost** button that appears next to the permit price.
- In the fields that appear, enter the new price and a comment explaining the reason for the change.
- Proceed with booking the permit as normal. The adjusted price will be reflected in the user's cart.

##### <span style="text-decoration: underline;">Editing from the Permit Information Page</span>

- For a permit that is already in a user's cart but remains unpaid, navigate to the cart and click the permit name link to open the **Permit Info Page**.
- Click the **edit cost** button.
- Enter the new price and a comment.
- Click the **Update Permit** button to save the change.

**Viewing Price Change History** All changes made to a permit's price are logged for auditing purposes. You can view these changes in the user's profile under the **Recent History** and **Standard Permit History** sections. Any comments entered during the price change will also be visible in the notes on the **Permit In<span class="citation-160">fo Page</span>**<span class="citation-160 citation-end-160">.<sup class="superscript" data-turn-source-index="1"></sup></span>

<div _ngcontent-ng-c1390479486="" class="source-inline-chip-container ng-star-inserted" id="bkmrk-"></div>
---

### <span class="citation-159 citation-end-159" style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations<sup class="superscript" data-turn-source-index="2"></sup></span>

- <span style="color: rgb(22, 145, 121);">**This feature only affects unpaid permits.** Once a payment has been processed, the price cannot be changed using this tool. Any adjustments for paid permits must be handled through a separate *financial adjustment*.</span>
- <span style="color: rgb(22, 145, 121);">**Always enter a clear and specific comment** when changing a permit price. This provides an essential audit trail for other administrators and for resolving any future billing questions.</span>

# Selling Permits Using Tablet Kiosks with OPSCOM

<p class="callout info">This article provides instructions on how to configure a tablet to act as a dedicated self-service kiosk for selling temporary guest permits. By locking the tablet to a specific guest permit booking page, organizations can offer a streamlined way for visitors to purchase parking without staff assistance or the need for a personal user account.</p>

### Setup and Configuration

Setting up a kiosk involves three main parts: obtaining the unique booking link for the desired parking lot, enabling Kiosk Compatible Mode within OPSCOM, and configuring the physical tablet device to lock it to the booking page.

#### Part One - Obtain the Guest Permit Link

Each lot configured for temporary permits has a unique URL for guest bookings. You will need this link to set up the kiosk.

- Go to **Parking Management**, then **Lot Administration**, and click **Pricing &amp; Lot Admin**.
- Click the name of the lot you want to feature on the kiosk.
- Select the **Temporary Permits** tab.
- Locate the QR code section. The guest permit booking link is displayed directly below the code.
- Copy this URL to use in the tablet configuration step.

##### **The lot must be properly configured to sell temporary permits. Detailed instructions can be found on the [*Pricing &amp; Lot Admin* page](https://opscom.wiki/books/the-opscom-admin-portal/page/pricing-and-lot-admin). You must set prices in the temporary permit section of the lot editor. If left blank, they will be disabled, and users will not be able to pick it as an option.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-09/scaled-1680-/image.png)](https://opscom.wiki/uploads/images/gallery/2025-09/image.png)

In the above ***example***, permits will be available for ***free*** for 2 hours**, ***$5*** for **3 hours**, ***$8*** for **12 hours**, and ***$10*** for **24 hours/1 day**.

#### Part Two - Enable Kiosk Compatible Mode in OPSCOM

This system-wide setting optimizes the guest permit workflow for a kiosk environment.

- Go to **System Configuration**, and click **System Settings**.
- Select the **General System Settings** tab.
- Enable the **Enable Kiosk Compatible Mode** toggle.
- Click **Save Settings**.

Enabling this mode makes the following changes **only to guest booking pages**:

- After a successful transaction, the user is returned to the initial booking page instead of a receipt page, making it ready for the next user.
- The main navigation menu, header, and footer are hidden to prevent users from navigating away or attempting to log in on a public device.

<p class="callout warning">**Warning:** Enabling Kiosk Compatible Mode affects **all** guest permit transactions, not just those from a kiosk. Users purchasing a guest permit via a QR code on their personal device will also be redirected to the start page after payment. We recommend enabling this setting only if you intend to use physical kiosks. </p>

#### Part Three - Configure the Tablet Device (Android)

To function as a kiosk, the tablet must be locked to the guest permit URL using third-party apps and built-in operating system features. The following steps provide one example of how to achieve this on an Android device.

##### <span style="text-decoration: underline;">Step A: Install and Configure a Kiosk Browser App</span>

1. On your Android tablet, open the **Google Play Store** and install a kiosk browser application (e.g., **Fully Kiosk Browser &amp; Lockdown**).
2. Open the app to configure its initial settings.
3. Paste the guest permit link from Part One into the **Start URL** field.
4. Enable **Fullscreen Mode**.
5. Disable **Show Action Bar** and **Show Address Bar**.

<p class="callout success">Explore the app's advanced settings, such as **Web Auto Reload** -&gt; **Auto Reload on Idle**. Setting this to 30 or 60 seconds will automatically reset the page for the next user after a period of inactivity. </p>

##### <span style="text-decoration: underline;">Step B: Pin the Kiosk App</span>

Pinning the app prevents users from closing it and accessing other tablet functions. You can do this in device settings, a separate app.

1. Ensure the tablet has a security PIN or password enabled. This can be set in the device's **Settings** app, typically under **Lock screen**.
2. Navigate to **Settings** -&gt; **Security and privacy** -&gt; **More security settings**.
3. Enable the **Pin app** option.
4. Open the kiosk browser app you just configured.
5. Tap the **recent apps** button (on most devices, this is an icon with three vertical bars at the bottom of the screen).
6. Tap the icon appearing above the kiosk app's window and select **Pin this app**.

The device is now locked into the kiosk browser, and the device's PIN will be required to exit the app.

### Using this Feature

Once fully configured, the tablet functions as a locked-down, single-purpose device.

##### <span style="text-decoration: underline;">End-User Workflow</span>

- A user approaches the tablet, which already displays the permit booking page for the designated lot.
- The user cannot navigate to other apps, web pages, or system settings.
- After entering their plate information and completing payment, a confirmation message appears.
- The page then automatically resets to the start of the booking process for the next user.

---

### <span style="color: rgb(22, 145, 121);">Best Practices and Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Physically secure the device.** Use a commercial-grade tablet enclosure or stand to protect the device from theft and damage in a public environment.</span>
- <span style="color: rgb(22, 145, 121);">**The tablet setup process may vary.** The specific menu names and steps for configuring a tablet can differ based on the device manufacturer, OS version, or the specific kiosk app used. The instructions provided should be treated as a general guide.</span>
- <span style="color: rgb(22, 145, 121);">**Test the entire user flow.** Before deploying the kiosk publicly, perform several test transactions to ensure the process is smooth, payment is successful, and the page resets correctly for the next user.</span>

# QR Code User Experience

<p class="callout info">The **QR Code User Experience** allows parkers to quickly purchase a permit for a specific lot by scanning a physical QR code. This feature provides a streamlined checkout process for **OPS-COM administrators** to offer both guest parkers and registered users, facilitating rapid payments via mobile devices.</p>

---

### Using this Feature

The workflow varies slightly depending on whether the parker is a guest or a logged-in user.

#### Guest Checkout

- Tap the QR code link or scan the physical code using a mobile device camera.
- Tap the **Accept** button when prompted by the **Guest Disclaimer**.
- Enter the vehicle information in the **Vehicle Plate** field.
- Tap the **Duration** drop-down menu and select the length of stay.
- Tap the **Payment Method** drop-down menu and choose the supported provider.
- Tap **Make Payment** after entering credit card details on the secure payment page.

#### Registered User Checkout (Accelerated)

- Tap the QR code link or scan the code while logged into the **User Portal**. (could be in a closed tab, as long as your session is still active.)
- Review the pre-populated vehicle and payment information retrieved from your stored account details.
- Tap the **Duration** drop-down menu to choose your stay length.
- Tap the **Make Payment** button to complete the transaction instantly using stored tokens from the payment processor.

<p class="callout info">Logged-in users experience a significantly faster checkout as the system automatically pulls stored **Vehicle Plates** and **Payment Profiles**, removing the need for manual data entry.</p>

#### Key Information Displayed

- **Lot Selection**: Since the QR code is lot-specific, the lot is pre-selected and displayed at the top of the page.
- **Transaction Record**: An on-screen confirmation appears immediately following a successful payment.
- **User Receipt**: A receipt is automatically generated and sent to the user's registered email address (or the one they are required to enter on checkout, as a guest user.

---

### <span style="color: rgb(22, 145, 121);">Best Practices and Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Encourage user registration** to allow parkers to take advantage of the accelerated checkout, which reduces friction and improves compliance.</span>
- <span style="color: rgb(22, 145, 121);">**Verify physical signage** regularly to ensure QR codes are legible and linked to the correct, active lot in the system.</span>
- <span style="color: rgb(22, 145, 121);">**Business Rules**: Organizations should establish a policy for managing guest refunds, as these transactions are not tied to a permanent user profile in the same way as registered accounts.</span>

# Real-Time Parking Map

<p class="callout info">This article describes the setup and use of the Real-Time Parking Map. This feature provides a publicly accessible, interactive map displaying real-time lot availability, allowing users to find parking and purchase temporary permits directly. </p>

### Setup &amp; Configuration

Setting up the map requires creating a public-facing page and then configuring each lot that you want to display on that map.

First, to have this enabled, you will need to contact an OPSCOM support staff member, and have them enable it on your production system.

##### <span style="text-decoration: underline;">Step 1: Adding the Map to any page in OPSCOM</span>

A Map page is now provided by default, at this link: `<strong>[CLIENT NAME].ops-com.com/u/#/realtimemodal</strong>`

**If you would like to display the map on any other system messaging pages, such as the user login screen, or anywhere else, follow the instructions below;**

- Navigate to **System Configuration,** then **Content &amp; Designs** and click **Pages and Content Blocks.**
- Create a new page **(or edit an existing one)** that will host the map.
- In the content area of this page, add the following two shortcodes, each on its own line:
    
    
    - `[real-time-map]`
    - `[real-time-legend]`

##### <span style="text-decoration: underline;">Step 2: Configure Individual Lots </span>

For each lot you want to display on the map, you must configure the following settings.

First, go to [Pricing and Lot Admin](https://tomahawku.test-admin.ops-com.com/admin/config/permits/lot/14/edit).

- **In the Zones and Location tab:**
    
    
    - Select the lot and set a map marker.
    - Enter a public-facing description in the **Location** field.
- **Now that you have set a map marker and location;**
    
    
    - Go to the **Temporary Parking** tab.
    - Set the **Maximum number of Temp Permits**, a 30-day usage setting, and the **Daily Cost** and **Hourly costs**.
    - Enable the **Allow this lot to appear on the Real-Time Parking Map** checkbox.

##### <span style="text-decoration: underline;">Step 3: Optional - Configure Special Spots</span>

1. Go to **Lot Administration** and select **Manage Special Space Types**.
2. Click **Add New** to create informational categories such as 'Electric Vehicle Charging' or 'Handicapped Accessible'.
3. Navigate back to **Lot Administration** and select the lot you wish to update.
4. Go to the **General** tab and enter the number of spaces available for each **Special Space Type**.

### Using this Feature

Once configured, the map is accessible to both the public for finding and purchasing parking, and to administrators for viewing lot statistics.

##### <span style="text-decoration: underline;">Public User View</span>

- The map is accessible to the public at the URL: `https://yourdomain.parkadmin.com/real-time`
- Users can hover over a map marker to see the lot name and description.
- Clicking a marker displays detailed availability, information about special spots, and a **Book Now** button. Clicking this button directs them to the temporary permit purchase screen.

##### <span style="text-decoration: underline;">Administrator View</span>

- Administrators can view the map internally by hovering over **Parking Management** and clicking **Real-Time Map**.
- The admin view is similar to the public map, but clicking on the map markers will di<span class="citation-193 citation-end-193">splay more detailed lot statistics.<sup class="superscript" data-turn-source-index="1"></sup></span>
    
    <div _ngcontent-ng-c1390479486="" class="source-inline-chip-container ng-star-inserted"></div>
- <span class="citation-193 citation-end-193">The Admin view has been updated to show **Pay by Plate machine capacity** in each lot if applicable, all **other spaces availability**, including special spaces such as **handicap** and **pregnancy** spaces.</span>

---

### <span class="citation-192 citation-end-192" style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations<sup class="superscript" data-turn-source-index="2"></sup></span>

- <span style="color: rgb(22, 145, 121);">**The Real-Time Map is designed for temporary parking.** A lot will not appear on the map unless all the required fields on the **Temporary Parking** tab in **Lot Administration** are correctly filled out and the feature is enabled with the checkbox.</span>
- <span style="color: rgb(22, 145, 121);">**Write clear and helpful descriptions** in the **Location** field under **Zones and Locations**. This text is visible to the public when they hover over a map marker and can be used to provide useful information, like 'Visitor Parking - North Campus'.</span>

# QR Code Guest Temporary Permitting

<p class="callout info">This article describes how to configure and use the QR code feature to allow guests to self-register for temporary parking permits. This functionality streamlines the guest parking process for both free and paid scenarios, enabling visitors to quickly obtain a valid permit by scanning a code with their mobile device.</p>

### Setup &amp; Configuration

Proper setup is required at both the system and lot level to enable QR code permitting.

<p class="callout success">QR codes also work for users who are logged into an account already. They must have an active session on the same browser in order to use their stored account information to checkout. (They must also be the correct user type for that lot)</p>

For instance, if you are logged in as user1, and scan the QR code, you will be taken to your account to checkout in that specific lot. If you do not have an active session, you will be checking out as a guest user.

##### <span style="text-decoration: underline;">System-Wide Configuration</span>

These initial steps enable the QR code functionality for your entire OPSCOM system.

- Go to **System Configuration** &gt; **Users** &gt; **Types**.
- Confirm that a user type named **Guest User** exists. If it does not, you must add it.
- Navigate to **System Settings** &gt; **Temp Permits**.
- Enable the **Enable QR Codes** checkbox.

<p class="callout warning">**WARNING:** The **Guest User** type is essential for this feature to function. Without it, you will not be able to assign QR code capabilities to your lots.</p>

- Users who wish to pay for a temporary permit with saved cards must first log in to their account, and go to permits, then click on **Parking map** in order to use the same quick checkout process.

##### <span style="text-decoration: underline;">Lot-Specific Configuration</span>

Follow these steps for each individual lot where you want to offer guest temporary permitting via QR code.

1. Go to **Parking Management** &gt; **Lot Administration** &gt; **Pricing and Lot Admin**.
2. Select the desired lot to configure.
3. On the **General** tab, select **Guest User** as the **User Type** for the lot. Removing this user type will disable the QR code feature for this specific lot.
4. Click the **Temporary Parking** tab.
5. In the pricing section, set the hourly and/or daily costs.
    
    
    - For **free parking**, enter `$0.00` for the applicable timeframes.
    - For **paid parking**, enter the correct amounts for the durations you wish to offer.
6. Click the **Update Lot** button to save all changes.

**Optional:**   
If you wish to use the lot for QR code functionality alone excluding standard and temp permitting through the user portal, you can set the **Visibility to User** as **Hidden but Accessible** in the General tab.  
  
If you wish to use this lot for Temp permits exclusively, enable the **This lot is for temporary parking only** checkbox.

<p class="callout info">**Note:** **Daily Cost** permits expire at midnight on the day of purchase. To offer a true 24-hour permit, use the **Hourly Cost** setting and define a **24-hour** duration instead.</p>

### Using this Feature

<p class="callout info">You can brand the QR code with your organization's logo. First, upload the logo to the media bin. Then, in the **QR code configuration** section on the **Temporary Parking** tab, select your uploaded image from the **Logo** field.</p>

Once configured, the QR code can be deployed for public use. The necessary tools are available within the lot's administration page.

##### <span style="text-decoration: underline;">Accessing &amp; Deploying the QR Code</span>

- Go to **Parking Management** &gt; **Lot Administration** &gt; **Pricing and Lot Admin**.
- Select the configured lot and go to the **Temporary Parking** tab.
- The QR code and its associated links will be displayed in the **QR code configuration** section.

### Available Actions

- **Print QR Code:** Click this button to generate a printable page containing the QR code. This is ideal for quick deployment on physical signage.
- **Download QR Code:** Click this button to download the QR code as an SVG file. This high-quality vector format is best for incorporating into professionally designed signs or digital materials.
- **Direct Link:** Click this icon to copy the unique URL for the guest permit page. This link can be emailed, posted on a website, or sent via text message to provide direct access without scanning a code.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Always test the QR code** with a mobile device after configuration to ensure it directs users to the correct permitting page.</span>
- <span style="color: rgb(22, 145, 121);">For optimal visibility, **place QR code signage at lot entrances** and other strategic locations where drivers will easily see it upon arrival.</span>
- <span style="color: rgb(22, 145, 121);">If you are offering paid temporary permits, **ensure a payment processor is correctly configured** and linked within your OPSCOM system.</span>
- <span style="color: rgb(22, 145, 121);">The end-user experience is a simple, mobile-friendly process where the guest scans the code, selects a parking duration from the options you configured, enters their license plate number, and completes the payment if required.</span>

# Parking Logix - Parking Sensor Integration

## Enable Parking Logix Integration

Before you can use the Parking Logix integration on your system you will need to navigate to your **Third Party** settings under **System Settings**.

From there you should see the option to enable **Parking Logix Integration**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/3x1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/3x1image.png)

## Adding the Lot Group

<span class="legacy-color-text-blue3">Next, add a new lot group to your system making sure you include the API code. It is possible but unlikely that there will be multiple API keys if lot access is split over several keys. </span>

<span class="legacy-color-text-blue3">Create a specific group for each lot you will be collecting data from.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/5JZimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/5JZimage.png)

Once the Lot Group has been configured you would need to assign it to the lot on the **LPR Settings Tab** of the Lot Administration tool.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/3Jzimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/3Jzimage.png)

## Enable the System Task

A system task must be enabled for the Parking Logix sensors to communicate with our system.

This must be enabled by OPSCOM integration staff and you can contact us through support to set this up. Please email <support@ops-com.comcom> for assistance.

Once the system task has been run you should see updated on the lot counts under **Manage Parking Lot Groups**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ve5image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ve5image.png)

## Displaying the Map on the User Side

Finally, enter the short code on the user side to any of your pages using **System Messaging**.

The short code is<span class="legacy-color-text-blue3"> </span>**<span class="error legacy-color-text-blue3">\[parking\_logix\]</span>**<span class="legacy-color-text-blue3"> and you can pass addition parameters such as: *only, show, filter,* or *name.* This will restrict the list to show only specific lots.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/VXJimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/VXJimage.png)

<span class="legacy-color-text-blue3">By design, it will only show lots that have a group assigned to it that have an API key stored in it.  
</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/6Lhimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/6Lhimage.png)

<span class="legacy-color-text-blue3">  
</span>

# Pay Station Status

<p class="callout info">This article describes the Pay Station Status lookup tool, used for searching and verifying temporary permits issued by pay stations. Its primary purpose is to allow administrators and enforcement personnel to look up a vehicle's pay station status based on various criteria, such as plate number and time. This guide is intended for OPSCOM administrators and enforcement staff.</p>

### Using this Feature

This page allows administrators to filter for pay station transactions and view vehicle details.

This tool is a standard administrative feature and does not require any specific configuration. It relies on a successful integration with your organization's pay station hardware to populate its data.

##### <span style="text-decoration: underline;">Performing a Status Lookup</span>

1. Go to **Parking Management**, then hover over **Temporary Permits**, and click **Pay Station Status**.
2. Enter your criteria into one or more of the following search filters:
    
    
    - **Plate**: Search for a specific license plate.
    - **Valid Date/Time**: Find permits that were valid on or after the selected date and time.
    - **Zones**: Filter the results for specific pay station zones.
    - **Validity Filter**: Use the drop-down menu to show only **Valid**, **Non-Valid**, or **All** records.
3. Select an option from the **Sort Order** drop-down menu to organize the results by a specific column.
4. Click the **Search** button.

##### <span style="text-decoration: underline;">Available Actions</span>

- The **Plate** number in each row of the results list is a clickable link. Click on the plate number to view or edit that vehicle's details.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Use the Plate and Valid Date/Time filters together for quick enforcement checks.** This allows you to instantly verify if a specific vehicle had a valid pay station permit at the time of an infraction.</span>
- <span style="color: rgb(22, 145, 121);">The data on this page is pulled directly from your integrated pay station system. **Any discrepancies in the data should first be investigated at the pay station terminal or its management software.**</span>

# Zebra Sticker Printers

<p class="callout info">This article provides a comprehensive guide for configuring Zebra sticker printers for use with the OPSCOM Admin Portal. This process involves setting up a custom layout and system message in OPSCOM, as well as configuring local printer and browser settings, to enable the printing of physical permit stickers. </p>

### Setup &amp; Configuration

This is a one-time, multi-phase setup process. It is recommended to complete all phases in the specified order before attempting to print.

##### <span style="text-decoration: underline;">**Phase 1:** Create the OPSCOM Layout Template</span>

1. Hover over **System Config** and click **Templates &amp; Design**.
2. On the **Layouts List** page, click the **Create Layout** button.
3. Enter a descriptive **Name** for the layout (e.g., "Zebra Printing") and click **Save Changes**.
4. On the next screen, click **Toggle Templates** and create a **Styles** section and a **Scripts** section.
5. Copy the provided styling and script code into the corresponding sections for each language you wish to support.

##### <span style="text-decoration: underline;">**Phase 2:** Create the System Message</span>

1. Navigate to **Manage System Messaging** and click the **Create Page/Message** button.
2. Fill in the required fields, ensuring you select the new layout you created in Phase 1 from the **Layout** drop-down menu.
3. In the content editor box, hover over **Tools** and click **Source Code**.
4. Paste the required shortcode HTML into the source code view and click **Save**.

##### <span style="text-decoration: underline;">**Phase 3:** Configure Windows Printer Drivers</span>

1. Open **Windows Settings** and navigate to **Devices**, then **Printers &amp; Scanners**.
2. Select your Zebra printer and click the **Manage** button.
3. Click **Printer Properties** and go to the **Stocks** tab.
4. Click the **New...** button to define a new stock that matches your sticker label dimensions.
5. After creating the stock, navigate to **Printing Preferences** and select the new stock as the default.

##### <span style="text-decoration: underline;">**Phase 4:** Configure Browser Print Settings</span>

Before proceeding, you must temporarily disable the auto-print script. Navigate back to your layout template in OPSCOM (**System Config** -&gt; **Templates &amp; Design**) and comment out the code in the **Scripts** section. This will prevent the sticker from automatically printing and allow you to adjust the browser settings.

- **For Chrome**: Adjust the print settings to match the required configuration, paying close attention to margins and ensuring headers and footers are disabled.
- **For Firefox**: Open the print menu and adjust the page properties to match the required configuration, focusing on orientation, scale, and margins.

### Using this Feature

Once all configuration steps are complete, administrators can print permit stickers from the Admin Portal.

- Go to **Parking Permit Information** page for the desired permit.
- Click the green print button located next to the **Update Permit** button.
- The browser's print dialog will appear, allowing you to print the sticker.
- After confirming the print settings are correct, you can uncomment the code in the **Scripts** section of your la<span class="citation-136 citation-end-136">yout template to re-enable automatic printing.<sup class="superscript" data-turn-source-index="1"></sup></span>
    
    <div _ngcontent-ng-c2892847681="" class="source-inline-chip-container ng-star-inserted"></div>

---

### <span class="citation-135 citation-end-135" style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations<sup class="superscript" data-turn-source-index="2"></sup></span>

## <span style="color: rgb(22, 145, 121);"></span>

<div _ngcontent-ng-c2892847681="" class="source-inline-chip-container ng-star-inserted" id="bkmrk--2"><span style="color: rgb(22, 145, 121);"></span></div>## <span style="color: rgb(22, 145, 121);"></span>

- <span style="color: rgb(22, 145, 121);">**Incorrect Windows driver or browser print settings** are the most common cause of **printing issues.** Double-check that margins, headers/footers, and paper/stock size are configured exactly as required for your specific sticker labels.</span>
- <span style="color: rgb(22, 145, 121);">The **Layout Template** controls the styling and printing action, while the **System Message** controls the content and data that appears on the sticker. **Ensure both are configured correctly** for the integration to work.</span>

# Printing Permit from Home Setup

<p class="callout info">This article provides OPSCOM administrators with the necessary instructions to configure the Permit Printing from Home feature. This functionality allows end-users to print a physical copy of their parking permit directly from the user portal. The setup involves creating a printable permit template using system messaging and then enabling a system-wide setting.</p>

### Setup &amp; Configuration

Configuring this feature is a two-part process. First, the feature must be enabled in the system settings. Second, the templates for ***permitPdf*** and ***permitTempPdf*** must be customized, if desired.

- Go the **System Configuration** and click **System Settings**.
- Select the **Permits** tab. 
    - Click the **Enable User Permit Printing** checkbox.
- Click **Save Settings**.

##### <span style="text-decoration: underline;">Locate the Permit Print Template</span>

The printable permits are generated from a system message.

- Go to **System Configuration**, then **Content and Design**, and click **Pages and Content Blocks**.
- Select the **Messages** tab.
- Edit the messages where the **System Location** column is labled ***permitPdf***, and ***permitTempPdf***

These two pages above, ***permitPdf*** and ***permitTempPdf*** are used to customize the content of either a regular printed permit, or a temporary printed permit, respectively.

### Define the Template Content

Use the content editor to design the layout of your printable permit. You can use a combination of text, images (like your organization's logo), and specific shortcodes to dynamically pull in permit and user information.

##### <span style="text-decoration: underline;">Available Shortcodes</span>

The following shortcodes can be used within the message body to display dynamic permit information:

- `[permitpdf user=fullname]` - Displays the full name of the user.
- `[permitpdf vehicle=all]` - Displays a comma-separated list of up to three associated vehicles.
- `[permitpdf vehicle=1]` - Displays the first vehicle on the permit. You can also use `vehicle=2` or `vehicle=3`.
- `[permitpdf permit=expiry]` - Displays the permit's expiry date.
- `[permitpdf permit=permitno]` - Displays the unique permit number.
- `[permitpdf permit=lotshortname]` - Displays the short name of the associated lot.
- `[permitpdf permit=lotname]` - Displays the full name of the associated lot.
- `[permitpdf permit=location]` - Displays the location associated with the permit.


##### <span style="text-decoration: underline;">Default Template Content</span>

Below is a sample of what should be the default message content;[![image.png](https://opscom.wiki/uploads/images/gallery/2025-08/scaled-1680-/gwrimage.png)](https://opscom.wiki/uploads/images/gallery/2025-08/gwrimage.png)

To use our recommended template, you can leave the content as the default text, but be sure to change any logos or company names to your own.

---

### User Portal Guide

Once enabled, users will see an option to print their permit from the user portal. For a detailed guide on the user-facing process, please refer to the *[Printing Your Parking Permits Made Easy!](https://opscom.wiki/books/OPSCOM-user-portal/page/printing-your-parking-permits-made-easy)* article.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Always test your template before deploying.** After creating your message, print it out to ensure the layout, shortcodes, and any images appear correctly on a physical page.</span>
- <span style="color: rgb(22, 145, 121);">**Include clear instructions for the user.** It is recommended to add text to the template that instructs the user on how to display the permit (e.g., "Please display this permit face-up on the driver's side of your dashboard").</span>

# Validator Admin Groups

<span data-colorid="wmqzhqcp61">User Level Capabilities within the Validator Tool</span>

Here is a description of what each user level can do with the **Validator Tool**.

1. The **Super Admin** can set up new **Groups** with a **Group Name**, as well as assign **Managers** and **Group Members**. Only the Super Admin can add Managers and Admins.
    
    
    1. Definition: The Super Admin will also be any Primary Admin with permissions in OPSCOM to manage the Validator; they can create groups and have the ability to add users to the group. The permissions that the Super Admin assigns to the individual group members will determine their access level on the system. All permissions must be added or removed by the Super Admin and cannot be done by any other user.
2. The Super Admin will be able to see all current, pending, past and archived (deleted) validations.  
      
    These are the permissions required to use the **Super User Manager** role.   
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ogCimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ogCimage.png)
3. Group Managers and Admins will be able to see all of their Groups, current/pending validations and delete future/current validations up to the 15-minute mark of the Start Date. Group Managers can only manage one group at a time. 
    1. Please note that deletions would only be available from the Manage Validations page.  
          
        These are the permissions required to be the **Validator Admin** role:  
          
        [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/9bTimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/9bTimage.png)
4. The Super User will be able to delete any future, current, and past validations. 
    1. Please note that archived is considered deleted. Archived information is not purged from the system. This is due to the need to keep system data integrity.<u>  
          
        </u>These are the permissions required to be the **Validator Entry** role:  
        <u>  
        </u>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/lTLimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/lTLimage.png)

## User Level Display within the Validator Tool

Here is the description of what each user level can see in the Validator Report and Manage Validations tools.

1. <span class="legacy-color-text-default">The **Super Admin** will be able to see all **Validator Groups** via the drop-down menu of **All/Individual** **Validators** within each group. The Super Admin should be able to delete any entry at any time, pre or post validation.   
      
    </span>
2. <span class="legacy-color-text-default">Group Managers will only be able to see their own Validator Groups within a drop-down of **All/Individual Validators** within their group. They will also be able to delete any entry pre-validation.  
      
    </span>
3. <span class="legacy-color-text-default">**Admins** will only be able to see and delete their own entries pre-validation or within a 15-minute leeway (as described below).   
      
    </span>
4. <span class="legacy-color-text-default">Please set-up a 15-minute grace period on deletions. This will allow a current validation to be deleted up to 15-minutes past the start date, in the case of an input error. (Setting)  
      
    </span>
5. <span class="legacy-color-text-default">**Users** will be able to search for a partial or full plate, by entering the time period. No admin name or lot should be required. If the entry was made within the appropriate time period, it should show accordingly. If an Admin name is required then an **All** Admins option, and individual admins within their group are required.</span>

### Creating a Validator Group

1. Navigate to **System Configuration**, then **Admin Management**, and click on **Manage Groups**.
2. This brings you to the **Manage Administrator Groups** page.
3. To create a Validator group click on the **Parking Validator** module and then click **Add New** in the top right corner under. [![image.png](https://opscom.wiki/uploads/images/gallery/2026-04/scaled-1680-/rMmimage.png)](https://opscom.wiki/uploads/images/gallery/2026-04/rMmimage.png)
    
    The **Adding New Group** window will appear with the following options:
    
    <div class="table-wrap">  
    <table class="wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 100%; height: 267.985px;"><thead><tr class="tablesorter-headerRow" role="row" style="height: 34.1094px;"><th aria-disabled="false" aria-label="Adding a new Group: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 26.5424%; height: 34.1094px;" tabindex="0">**Options**</th><th aria-disabled="false" aria-label="Info: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 73.3287%; height: 34.1094px;" tabindex="0">Info</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 34.1094px;"><td class="confluenceTd" style="width: 26.5424%; height: 34.1094px;">**1. Group Name**
    
    </td><td class="confluenceTd" style="width: 73.3287%; height: 34.1094px;">The Group Name is how you set the name of a group.</td></tr><tr role="row" style="height: 34.1094px;"><td class="confluenceTd" style="width: 26.5424%; height: 34.1094px;">**2. Module** </td><td class="confluenceTd" style="width: 73.3287%; height: 34.1094px;">The Module is where you can set the purpose of the group.</td></tr><tr role="row" style="height: 55.2188px;"><td class="confluenceTd" style="width: 26.5424%; height: 55.2188px;">**3. Validator Comment** </td><td class="confluenceTd" style="width: 73.3287%; height: 55.2188px;">The Validator Comment is a spot where you can add any comments that you need to.</td></tr><tr role="row" style="height: 55.2188px;"><td class="confluenceTd" style="width: 26.5424%; height: 55.2188px;">**4. Admin Members**</td><td class="confluenceTd" style="width: 73.3287%; height: 55.2188px;">The Admin is the area in which you can add admin members to the group
    
    </td></tr><tr style="height: 55.2188px;"><td style="width: 26.5424%; height: 55.2188px;">**5. Default Validation Hours**</td><td style="width: 73.3287%; height: 55.2188px;">The Default Validation Hours is where you can set a default permit duration.
    
    </td></tr></tbody></table>
    
    </div><p class="callout info">**Note:** There is currently no way to enforce a strict limit or prevent admins from overriding the default duration. The value serves only as an automatically populated preset and can be manually adjusted.</p>
4. When you are finished click the **Save Group** button. You will see your group added to the bottom of the Administrator Groups.

##### <span style="text-decoration: underline;">Adding Members to a Group</span>

1. Navigate to **System Configuration**, then **Admin Management**, and click on **Manage Groups**.
2. Click the Edit button next to the Administrator Group you wish to edit.
3. Click on the **Admin Members** bar to add more members to the group.
4. When finished, click the **Save Group** button found at the bottom of the Editing Group.

## Zones and How They are Assigned

1. Navigate to **System Configuration**, then **Admin Management**, and click on **Edit Admin Users**.
2. Select an **Admin User** which you want to edit and apply the **Parking Validation Lot Zones** they will manage.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/fMDimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/fMDimage.png)
3. Scroll to the bottom of the page to find the **Parking Validation Lot Zones** window. Select the **Zone(s)** in which this admin will be managing validations.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/haeimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/haeimage.png)
4. Click any **Zones** that apply to this Admin and click **Update User** at the bottom of the page to finish.

# Public-Facing Lot Pages

# Overview

Within the system, there is the option to create a custom lots page, which will display a list of lots that users can book from.

The page consists of two subpages:

- Lots List - Contains the list of lots on the system for the user to choose from
- Lot Detail - Contains detailed information pertaining to the lot selected by the user

Setting up these pages requires the use of shortcodes within the system.

## **Page Setup**

The custom pages can be setup from the **Pages and Content Blocks** page.

It can be found under **System Configuration → Content &amp; Designs → Pages and Content Blocks**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/mbSimage.png)](https://opscom.wiki/uploads/images/gallery/2024-05/mbSimage.png)

## Pages and Content Blocks

The pages and content blocks section, or system messaging, allows the setup of custom user pages.

## Shortcodes

A shortcode is a bit of text that has been coded to return a specific value when placed within the body of the page layout.

The value it returns can be anything from single variable, to a module laid out within a template, like a table or a form.

A shortcode looks like this: **\[lots\_list\]**

In this case, the shortcode returns a list of the lots in the system.

By placing the shortcode in the body of the message, it will show up on the corresponding page in that location. Shortcodes will be used to create the layout of the lot subpages.

# Lot List Page

The first subpage that must be created is the page where the list of lots will appear.

It does not need to have a dedicated page, and the lot list can be placed on any custom page that is wanted.

In this example, the lots list will be placed on a custom page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/uZGimage.png)](https://opscom.wiki/uploads/images/gallery/2024-05/uZGimage.png)

The path that is chosen here is what the path will be in the url. This would make the lots\_list module show up when the address has /lots at the end of the base <span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">URL</span></span>.

The lots list is a module, meaning its appearance is fixed and cannot be modified further. Only its location on the site can be customized.

### Lot List Shortcode

The shortcodes must be typed exactly as they appear, or they will not work.

There is only one short code relevant to the lot lists page:

<div class="pm-table-container with-shadow-observer" data-layout="custom" id="bkmrk-shortcode-descriptio"><div class="cc-12efcmn"><div class="fixed-table-div-custom-table-resizing cc-ltvs76" data-testid="sticky-table-fixed" mode="stick"><div class="pm-table-container is-sticky with-shadow-observer" data-layout="default"><div class="pm-table-sticky-wrapper"><table data-number-column="false" data-table-width="760" data-testid="renderer-table"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1">**Shortcode**

</th><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1">**Description**

</th><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1">**Additional Options**

</th></tr></tbody></table>

</div></div></div></div><div class="pm-table-wrapper"><div class="sentinel-left">  
</div><table data-number-column="false" data-table-width="760" data-testid="renderer-table"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1">**Shortcode**

</th><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1">**Description**

</th><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1">**Additional Options**

</th></tr><tr><td colspan="1" rowspan="1">\[lots\_list\]

</td><td colspan="1" rowspan="1">Displays a list of the currently available lots. Can be placed on any page.

</td><td colspan="1" rowspan="1">\[lots\_list include\_hidden=1\]

- By default, lots set as not visible will not appear in the list. This option will include those lots in the list.

\[lots\_list only\_text2parkme=1\]

- This will restrict the list to only show lots that have Text2ParkMe enabled.

</td></tr></tbody></table>

<div class="sentinel-right">  
</div></div></div>Additional options are modifiers that can be added to the base shortcode to influence the output. Multiple can be chained together at once. For instance, both additional options can be included in the lot list shortcode by writing it like this:

- **\[lots\_list include\_hidden=1 only\_text2parkme=1\]**

## Lot Detail Page

The specific lot detail page is set up a bit differently from the lot list page, in that it is coded to only work if the path is set as **--lots-detail**.

This will make the details for the individual lot that is selected appear for the path /lots/{id}, with the id supplied being passed to the page to fetch the correct lot information.

The information that goes on this page can be customized to include anything from the relevant shortcodes, but should at least include the permit cost and buy now button.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/8R0image.png)](https://opscom.wiki/uploads/images/gallery/2024-05/8R0image.png)

### Lot Details Shortcodes

Here is a list of the shortcodes that are related to the lot details page.

The shortcodes must be typed exactly as they appear, or they will not work.

<div class="pm-table-container with-shadow-observer" data-layout="custom" id="bkmrk-shortcode-descriptio-1"><div class="cc-12efcmn"><div class="fixed-table-div-custom-table-resizing cc-ltvs76" data-testid="sticky-table-fixed" mode="stick"><div class="pm-table-container is-sticky with-shadow-observer" data-layout="default"><div class="pm-table-sticky-wrapper"><table data-number-column="false" data-table-width="760" data-testid="renderer-table"><colgroup><col></col><col></col></colgroup><tbody><tr><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1">**Shortcode**

</th><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1">**Description**

</th></tr></tbody></table>

</div></div></div></div><div class="pm-table-wrapper"><div class="sentinel-left">  
</div><table data-number-column="false" data-table-width="760" data-testid="renderer-table"><colgroup><col></col><col></col></colgroup><tbody><tr><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1">**Shortcode**

</th><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1">**Description**

</th></tr><tr><td colspan="1" rowspan="1">\[values show=lotname\]

</td><td colspan="1" rowspan="1">Displays the name of the lot.

</td></tr><tr><td colspan="1" rowspan="1">\[values show=lottype\]

</td><td colspan="1" rowspan="1">Displays the initial of the lot's type.

</td></tr><tr><td colspan="1" rowspan="1">\[values show=lotnameid\]

</td><td colspan="1" rowspan="1">Displays the lot's id.

</td></tr><tr><td colspan="1" rowspan="1">\[values show=defaultcost format=currency\]

</td><td colspan="1" rowspan="1">Displays how much renting a permit for the lot costs.

</td></tr><tr><td colspan="1" rowspan="1">\[values show=location\]

</td><td colspan="1" rowspan="1">Displays the location set for the lot. It is an address or a short description.

</td></tr><tr><td colspan="1" rowspan="1">\[values show=textcode\]

</td><td colspan="1" rowspan="1">The Text2ParkMe code for the lot.

</td></tr><tr><td colspan="1" rowspan="1">\[values show=ratePer10Min format=currency\]

</td><td colspan="1" rowspan="1">The Text2ParkMe rate for the lot.

</td></tr><tr><td colspan="1" rowspan="1">\[lot show=buy\_now\]

</td><td colspan="1" rowspan="1">Displays a button that will take the user to the page to purchase a permit for the lot. Will take the user to the login screen if they are not logged in or do not have an account.

</td></tr><tr><td colspan="1" rowspan="1">\[lot show=map\]

</td><td colspan="1" rowspan="1">Displays a small map with the lot's location according to the latitude and longitude values that are stored for it.

</td></tr><tr><td colspan="1" rowspan="1">\[lot show=photo\]

</td><td colspan="1" rowspan="1">Displays the photo that has been selected for the lot. A photo can be assigned from the Lot Administration page /admin/config/permits/lot/{id}/edit.

</td></tr></tbody></table>

<div class="sentinel-right">  
</div></div></div># User-Side Results

# The Lot List Page

The lot list from the example appears on the website like this:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/kiiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-05/kiiimage.png)

## The Lot Detail Page

The lot detail page from the example would appear on the website like this:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/3RFimage.png)](https://opscom.wiki/uploads/images/gallery/2024-05/3RFimage.png)

# Validate Parking Report

1. To access the report, the admin responsible for parker validation would need "**View Validator Report**" set as a permission.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/1dsimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/1dsimage.png)
2. To run the report, go into the **Parking Management** menu and select **Parking Validation Report.** [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/K8Vimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/K8Vimage.png)
3. The **Validate Parking Report** search tool opens.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/brbimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/brbimage.png)
4. Here, you enter the date range you wish to report on. In this case we are looking at **March 1st through to March 14, 2018.**   
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/tdaimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/tdaimage.png)
5. Click on **search** to bring up the record listing that can be viewed onscreen or exported as an Excel file.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/64Cimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/64Cimage.png)

# Managing Validator Records

In this example, we will add a validation for a vehicle with the plate number **BIRCH** in the **GARAGE L1 Lot** starting **June 4th** and expiring on **June 4th**.

Enter the **plate number**  
Choose Garage L1 as the **Lot Zone**  
Enter your time frame and click on **Validate**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/nrHimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/nrHimage.png)

Once we have created the record, it will appear in the **Validate Parking Report**.  
  
If the entry was done in error, it can be removed through the **Manage Validation** tool.  
To do so, hover over **Parking Validation** under the **Parking Management Menu** and select **Manage Validations** from the drop down menu.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Lz0image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Lz0image.png)

In the management tool, enter the **Plate Number** in question along with the **Lot Zone** you wish to view.  
To delete the record click on the **Delete** button associated with the record to highlight it with the check mark.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/NFLimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/NFLimage.png)

You will be prompted to confirm the archiving of the record. Click **Archive** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/5w3image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/5w3image.png)

A pop-up message will confirm the deletion of the record.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ri9image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ri9image.png)

Once the record is deleted, you will notice it will be removed from the **Validator Parking Report**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/KUwimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/KUwimage.png)

# Branding the Validator Tool

## Accessing the Validator Pages to Edit the Look and Feel

From the **System Config** Menu click on **System Messaging**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/wilimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/wilimage.png)

A page with two tabs will appear. Click on the **Messages** tab to access the list of editable messages.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/cQMimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/cQMimage.png)

There are three messages to edit for the Validator Tool.  
  
They are:

The Validator Entry message  
The Validator Manage message  
The Validator Report message  
  
Each of these pages represent the three Validator Tool Pages.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/MsHimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/MsHimage.png)

Here's what they look like in the **Message System Editor**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/nC3image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/nC3image.png)

To edit the message click on the **Edit** button

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/XGoimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/XGoimage.png)

The edit page will display.

On this screen you will enter a title for your page as well as an identifier. This identifier must be unique.  
You may also select a language setting for your page.

The page can be edited in the WYSIWYG editor where you can visually design the page.

***NOTE:** The main graphic image used in our example measures **1448 pixels in width and 227 pixels in height**.  
**Best practice** would be to **maintain the same width** but the **height can be your preference**. Upload the preferred image to your **Files Folder** using the **Manage Files** functionality.*

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/96Bimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/96Bimage.png)

It is also possible to edit the page in straight **HTML**. To do so go to the **Tools** menu and click on **&lt;&gt;Source Code.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Ujyimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Ujyimage.png)

A popup will appear with the code presented.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/tC1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/tC1image.png)

## Sample Code

<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-id="ab8e2de5-81c4-4175-a414-38799e2804ef" data-macro-name="code" id="bkmrk-validator-entry%C2%A0expa"><div class="codeHeader panelHeader pdl hide-border-bottom">**Validator Entry**<span class="collapse-source expand-control"><span class="expand-control-icon icon"> </span><span class="expand-control-text">Expand source</span></span></div></div>The Resulting Page

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ol3image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ol3image.png)

# The Validator - a Parking Validation Utility

You must create a new role to apply the permissions correctly. For more information refer to this article on Roles and Permissions

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/14Simage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/14Simage.png)

In our example, we created a Role entitled **Parking Validator**. The new role will appear in the list of roles.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/wW3image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/wW3image.png)

You must add the "**Create Temp Permit Entries**" permission to the role you just created.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/hGYimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/hGYimage.png)

Create or edit an Admin user who will manage the parking validation.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/zpFimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/zpFimage.png)

Select the **lot zone(s)** this Admin will manage and save the user. These will be the lots that you intend to use with the **Parking Validator** utility.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/RbLimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/RbLimage.png)

<p class="callout info">**Note:** These zones have to be set in the lots you wish to validate. In Lot Administration go to the Zone &amp; Location tab to select the zone associated with the lot.  
</p>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/pH0image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/pH0image.png)

## Accessing the Validator Tool

Log in as this user. Only one menu item entitled '**Create Validations**' will be available.

<p class="callout info">**Note:** The following screen represents the view of the validation tool that would be used by admins who have restricted access to the OPSCOM system and would have access to the Validation Tool Only.</p>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Ynnimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Ynnimage.png)

The Validate Parking screen will appear.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/iLiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/iLiimage.png)

Click '**Create Validations**'. From this page you can:

1. Enter plate number(s)
2. Enter a comment
3. Select the lot zone in which you want to validate the vehicle
4. Select the date range you wish the validation to be in effect.
5. Set the Valid Time Frame (These blocks represent a full hour. In our example below we are setting the Valid times between 7am and 7pm).
6. Select the Valid Days you wish to have the validation in effect.
7. Click Validate to apply the validation.

<p class="callout info">In this example we are validating the plate ABC123 on March 21st, between 7am and 7pm, if the day happens to fall on a weekday. If the Valid Between Dates was set from March 21st, to March 26th, it would be valid from Monday to Friday, during that week, 7am to 7pm.</p>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/LrBimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/LrBimage.png)

The list of validated vehicles appears below the submit form.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/u82image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/u82image.png)

#### <span data-colorid="rqp2ynr2t4">Advanced Features</span>

With full access to the tool within OPSCOM there are several additional features to take into account. Not only do you have the validator tool, you also have the ability to run reports and Manage validations.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/dMeimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/dMeimage.png)

# How Do Temporary Validated Parkers Appear on the Handheld Devices

Parkers who are validated through this tool will appear as a "**Temp Parker**<span class="legacy-color-text-blue3">" on the Android version of</span> **OPS-<span class="legacy-color-text-blue1">COM</span>.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/V0Kimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/V0Kimage.png)

By tapping on the plate number you will get an expanded view with further detailed information. In our example, we see the parker has a **Validator** created permission to park in the **Day Care Lot Zone**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/cbIimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/cbIimage.png)

To see even finer detail on this permission, tap the green rectangle labelled **Validator - Day Care**. A pop up will appear showing a **reference number** and the **Expiry date** of the permission.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/3Uiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/3Uiimage.png)

A closer look:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/405image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/405image.png)

# Apply Temp Permit to User Vehicles

1. To begin, you must set the ability to apply the permit to multiple vehicles in **Lot Administration** under the **Temporary Parking** Tab.  
    You must enable the following items:  
     **- Allow temp permits to be used over 30 days.**  
     **- Allow All Vehicles on profile to receive permit.**  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/qiXimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/qiXimage.png)
2. Once this is set, you are ready to issue a temporary permit to multiple vehicles.   
    To begin, go to the user's profile and click on the **Parking Tab**.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/D3Dimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/D3Dimage.png)
3. Select **Temporary Parking Permit**.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/QyQimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/QyQimage.png)
4. The **Temporary Parking Permit Registration** window opens.   
    In our example, we will select the **Green Staff Lot East** where we had configured the ability to apply the permit to all vehicles (Step 1 above)  
    Set the **start date** and **end date**. The date range must be for a period longer than 30 days in order to activate the **Apply to all Vehicles** button.  
    Click the button to apply the permit to all vehicles.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/bT2image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/bT2image.png)
5. Click **Confirm This Permit** to proceed to the Confirmation window.   
    You can verify the information before proceeding to purchase the permit.   
    *Note: the two vehicles are listed in the Vehicle list.*  
    Click **Purchase this Permit** to continue.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/22uimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/22uimage.png)
6. The payment screen displays. Start the purchase process.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Dvoimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Dvoimage.png)
7. Select your method of payment and click the **Submit Payment Information** button.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/bT4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/bT4image.png)
8. Select **Confirm Payment Information** to proceed.   
    Click **Process Manually** to complete the purchase.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/MlTimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/MlTimage.png)
9. You will be taken to the **Transaction Details** screen, where you can see a final record of your purchase.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/NrRimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/NrRimage.png)

# LPR Audit Log

## Viewing the LPR Audit Log

To access the LPR Audit Log, go to the **Violations** menu and hover over **LPR and Chalking**. Select **View Audit Log** from the resulting drop down menu.

[![image.png](https://opscom.wiki/uploads/images/gallery/2026-05/scaled-1680-/HN6image.png)](https://opscom.wiki/uploads/images/gallery/2026-05/HN6image.png)

The initial screen will display with the option to **Toggle More Options**

[![image.png](https://opscom.wiki/uploads/images/gallery/2026-05/scaled-1680-/VzPimage.png)](https://opscom.wiki/uploads/images/gallery/2026-05/VzPimage.png)

## Filtering Results

Search results can be filtered to display specific information. The two filter fields are Camera selection and Event type when clicking **Toggle More Options**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2026-05/scaled-1680-/011image.png)](https://opscom.wiki/uploads/images/gallery/2026-05/011image.png)

Event type refers to one of five selections:

Any Event  
Entry Events  
Exit Events  
Patrol Events (These are LPR chalking records from a Patrol Officer's hand held unit.  
Tracking (These could be cameras that track movement such as moving from one floor of a multilevel garage to another floor.

# Viewing and Editing LPR Events

1. Go to **Violations**, then **LPR and Chalking**, and click **View Events**.  
    
    - A list of Events will appear. The following information is displayed:
        
        
        - Plate Image
        - Plate Number
        - Province
        - Score (relates to how accurate the system analyzes the capture to be)
        - Km/h (Speed, as well as direction - approaching or going away from the camera)
        - Recorded (Date and Time of capture)
        - Events (How many times this plate has been captured)
        - Status (Valid or Invalid)
        - Lot Group
        - Violations
2. If the admin wants to refine their search more, they can enter the date and time range that is being reported on, by entering values in the recorded on and Up to and including field.
3. To search for partial plates, turn on the Perform fuzzy search option then enter the partial plate into the license plate text box.
4. The admin has the ability to correct plate reads that are wrong or partial. To correct the plate number, click on the **pencil icon** to edit the entry.
5. Enter the Correct Plate Number.
6. Select the appropriate province.
7. Click the **Blue Icon** to save the changes.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/uiKimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/uiKimage.png)

### **<span class="legacy-color-text-blue1">Other Information that can be viewed from this interface.</span>**

---

1. Hover over the **thumbnail in the record** and the full image capture can be displayed.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/kHCimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/kHCimage.png)

# Improve LPR Read Rates

## <span data-colorid="bvfydzznzv">What is the optical range for the reader?</span>

<span data-colorid="varj9i5kqa">The sweet spot for plate reads is 1.5 to 2.5 meters between camera and plate. </span><span data-colorid="a9ow7r24v9">Also check to make sure the lens is clean. </span><span data-colorid="agzgmjd69e">Another issue may be camera angle. The o</span><span data-colorid="k60ku80hl8">ptimum angle for the camera is straight on (parallel) to the plate</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/VJUimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/VJUimage.png)

## <span data-colorid="r9zqjxmlek">Fuzzy Searching</span>

<span data-colorid="w5vuso8rms">The PL8-RDR system supports fuzzy searching based on user supplied values.</span>

<span data-colorid="hstu289quf">In the case of the LPR system "seeing" **ABC123**, it will also validate against **A8C123** and **ABC128** or **A8C12B**.</span>

## Manual Corrections

<span data-colorid="tfc9edn5pz">You can improve plate reads by making corrections and verifying correct plates on the system. </span>OPSCOM has an algorithm that includes the human updates as part of the read score. Therefore, if a plate is misread and corrected, it is very probable that the system will return the (human) updated version.

Further, the system does fuzzy searching... this means it will look for a plate in the system that matches a pattern. For example, a plate of ABC123 may be read as A8C128. With fuzzy searching and based on time of day etc. the system will return ABC123 if that plate has a permit (but will also note that it was a "fuzzy" read of the plate).

<span data-colorid="pjh1rupyxk">If you see a score of 100% in the LPR report that means that the system determined a human updated version was the best match since a score of 100% is theoretically impossible with LPR cameras.  
  
</span>

As an Example here's a tweak you can do for Ontario users once the camera is setup...

Go into the Web Interface Page Plate Reader Camera OCR and set the following Characters dimensions:

CHAR SIZE Min W: 10 Max W: 50 Min H:30 Max H: 100

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/AsGimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/AsGimage.png)

## Improving Exposure

For dark plate reads:

Set Max Shutter to 500  
Set Max Gain to 256 (If images are too dark this setting can be increased. <span class="legacy-color-text-default">However it is not recommended to go over 1000.)</span>  
Set Iris Level to 15

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/4Pdimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/4Pdimage.png)

<span data-colorid="zrmhsrcgu7">Adjusting the Bounding Box</span>

The LPR camera has the ability to customize the area that is being analyzed during the plate read. This article explains how to adjust the read area (Bounding Box).  
The bounding box refers to the area that can be adjusted to narrow the view or area that is analyzed by the LPR camera.

  
The settings involved are located in the Plate Reader Settings.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/9ISimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/9ISimage.png)

  
The default settings for full frame are as follows. Measurements for height are always considered the distance from the top of the screen. Measurements for width are based on distance from the left of the screen

Win MinX Pixel - 0 *(From the left)*  
Win MinY Pixel - 0 *(from the top)*  
Win MaxX Pixel - 1279 *(From the left)*  
Win MaxY Pixel - 1023 *(from the top)*

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/zALimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/zALimage.png)

  
To view the location of the bounding box go into the Camera OCR tab.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/bk0image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/bk0image.png)

  
  
Here is the full frame view of the bounding box. See the red outlined box in the image below.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/8j0image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/8j0image.png)

## Adjusting Height

To adjust the box edit the number in the settings. In this case we will narrow the bounding box in height to restrict the read area.  
  
Here are the settings:

Win MinX Pixel - 0 *(from the left)*  
Win MinY Pixel - **100** *(from the top)*  
Win MaxX Pixel - 1279 *(from the left)*  
Win MaxY Pixel - **700** *(from the top)*

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Of4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Of4image.png)

IMPORTANT

Once the settings are changed and you click on Apply, the camera will reboot. This process will take a couple of minutes to complete before you can navigate away from the page.

The resulting Bounding Box will look like this:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ul6image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ul6image.png)

Let's now say we want to lower the box in the view. I would have to increase the values in both Y axis settings.

Here are the settings

Win MinX Pixel - 0 *(from the left)*  
Win MinY Pixel - **200** *(From the top)*  
Win MaxX Pixel - 1279 *(from the left)*  
Win MaxY Pixel - **800** *(From the top)*

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/rqeimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/rqeimage.png)

Here is the resulting bounding box:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/LYjimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/LYjimage.png)

## Adjusting Width  
  


Additionally you can narrow the width of the bounding box if need be. In this case we will narrow the bounding box by 100 pixels on both sides.

Here are the settings

Win MinX Pixel - **100** *(from the left)*  
Win MinY Pixel - 200 *(From the top)*  
Win MaxX Pixel - **1179** *(from the left)*  
Win MaxY Pixel - 800 *(From the top)*

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/7cgimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/7cgimage.png)

  
  
Here is the resulting bounding box.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/fcqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/fcqimage.png)

By selective use of these settings you can customize the area that is processed by the LPR read. As a result LPR reads could be faster and more accurate since the camera is reading a smaller more focused area and ignores anything outside of the bounding box.

<span data-colorid="iods2ti1z2">  
</span>

<span data-colorid="snb1pgeemk">On the Handheld</span>

<span data-colorid="ad95y2463y">For NOREADs you can check the setting in **System Settings** to see if that can be reduced.   
It may mean more noise, but it may also help with determining what is going on (ie. reading but not seeing it as a **READ** result)</span>

<span data-colorid="e7p9me7acx">To adjust this setting go into system settings and tap on Include NOREAD (ie. vanity) Results  
  
</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/OTsimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/OTsimage.png)

<span data-colorid="bi2z7eadta">Set the percentage to 50% to start. We can tweak it once we see how the system reacts.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/kX0image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/kX0image.png)

# Text2ParkMe - Active Permits

1\. In **Parking Management**, hover over the **Permit Management** icon and select **Text2ParkMe - Active Permits.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/vsqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/vsqimage.png)

2\. This will take you to the **Text2ParkMe - Active Permits** page that automatically displays all Text2ParkMe permits that are currently active and not yet expired.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/BYCimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/BYCimage.png)

3\. You can filter this listing by entering the data that you want to filter by in the search criteria above. This report can be filtered by ***User, Plate, or Lot Name***.

Select the **Filter Report** button to bring up the new report using the filters entered.

- The **Username link** will take you to the user's profile.

# Text2ParkMe - Usage

In **Parking Management**, hover over **Permit Management, Temporary Permits,** and click '**Text2ParkMe**' then '**Current Usage'**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/zF0image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/zF0image.png)

This will take you to the **Text2ParkMe - Usage** page where you can enter information to get the usage report that you want to view.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/5oPimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/5oPimage.png)

Enter in the information that you want to search - ***User, Plate, Lot, and/or start/end date***.

Select the **Search** button to create the report. The report will appear below where the search criteria were entered.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/WO6image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/WO6image.png)

The **Username link** will take you to the user's profile.

# Refundable Parking Deposits

## Setup Deposit Options

Setup and manage your Deposit options.

## Apply Deposit Types

Now that your deposit types are in place, they can be applied to specific lots. To do so, go to the **Parking Management Menu** and hover over **Lot Administration**, then click on **Pricing and Lot Admin**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-05/scaled-1680-/Au3image.png)](https://opscom.wiki/uploads/images/gallery/2025-05/Au3image.png)

Once in **Pricing and Administration**, select the lot you wish to apply the deposit to by clicking on the lot name.

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-05/scaled-1680-/image.png)](https://opscom.wiki/uploads/images/gallery/2025-05/image.png)

Once in **Lot Administration**, select the **Standard Permits** tab to view the available deposit <span class="inline-comment-marker" data-ref="e47d95f8-1dcc-4b29-9323-cc52757dd482">types.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-05/scaled-1680-/Iq9image.png)](https://opscom.wiki/uploads/images/gallery/2025-05/Iq9image.png)

From the list of **Deposits**, click the deposit you wish to apply. You can select more than one deposit type by holding the **Ctrl** or **Shift** key and selecting the deposits you wish to apply.

Once the deposit type is associated to a lot, it will then be included in the purchase of a permit in that lot for admins only.

Let's have a look at a permit purchase with deposits in place. Go to a user's profile and select the **Parking** tab.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/C2Nimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/C2Nimage.png)

Click on **Standard Parking Permit** to begin the permit purchasing process.

Select the lot you wish to register the client to. In this case we select the **Green Staff Lot East**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ZWRimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ZWRimage.png)

Once the lot is selected, click on **Register Permit**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Jf3image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Jf3image.png)

The **Confirm Parking Permit Registration** window will appear. Note the two deposits are included and listed in the **Total Owing** costs.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/RQrimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/RQrimage.png)

Click on **Purchase this Permit** to begin the payment process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xdBimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xdBimage.png)

## Editing Assignable Text

In this step, the admin can record the access card and hang tag numbers. To do so, click on the **Deposit Item** name.

In this case click on **Access Card Deposit: Enter access card number here**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/w6iimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/w6iimage.png)

In the **Deposit Information** pop-up window, enter the access card number in the **Assigned Text** field and click **Update Deposit**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2j4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2j4image.png)

Once entered, the number will now appear on the **Payments** screen under **Deposits**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/PPuimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/PPuimage.png)

You may now proceed with the purchase in the usual manner.

# Access Cards - Search

1\. In **Parking Management,** hover over the **'Permit Management**' icon and click **'Access Cards**' then '**Search**'.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/EZYimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/EZYimage.png)

2\. The '**Access Card Search**' screen is displayed. Select the **Lot name** that you want to search. Note, only lots that have access cards associated with it will be listed in the Lot Name drop-down menu.

Enter the **Access Card Range** and click the '**Retrieve'** button. Any access cards that match your search will appear below the search criteria.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/nU0image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/nU0image.png)

# Hang Tag Printing

In **Parking Management**, hover over the **Permit Management** icon, and click **Hang Tag Printing.**

The **Vehicle Hang Tag Printing** screen will display.

- Select the **Semester** from the drop-down menu.
- Select the files that you want to retrieve for printing.
- Enable the checkbox *if you only to print tags for which the payment has been fully processed*.
- Select the **Permit Lot Name** from the drop-down menu or enable the checkbox to disregard the lot type.
- Select the distribution method and the permitted range.
- Click the **Retrieve** button to submit the search criteria.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xg6image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xg6image.png)

The results will display below the search criteria. Note, <span class="legacy-color-text-default">permits paid by Payroll Deduction will be highlighted.</span>

- <span class="legacy-color-text-default">Click the **Username** link to see an overview of the user. You can select the User Profile icon to open the user profile.</span>
- <span class="legacy-color-text-default">Click the **Permit Number** link to see parking permit information.</span>

<span class="legacy-color-text-default">Enable the Email checkbox(es) to chose users to send the hang tag by email to. Click the **Email Selected** button, then fill in the details of your email. </span>

<span class="legacy-color-text-default">To </span>**print hang tags**<span class="legacy-color-text-default">, enable the **P**</span><span class="legacy-color-text-default">**rint checkbox(es)**. If you wish to print hang tags for all users, click the **Select All** button. Click the **Deselect All** button to clear all selections. If you do not want to include an expiry date on the permits being printed, ensure that the 'Do not print date' checkbox is enabled. Otherwise, select the expiry date to be printed on the hangtag and click the **Print Selected Hang Tags** button.</span>

<span class="legacy-color-text-default">This will open up a new window displaying the username and address (positioned to fit in a windowed envelope) in the top left, the lot long name and permit number in the top right as well as the actual permit at the bottom.</span>

<span class="legacy-color-text-default">Note, some organizations use perforated paper to make it easier to remove the permits to be laminated. The empty space on both sides of the paper can be pre-printed to provide parking information, rules and regulations to your users. Some organizations will also purchase holograms to go on the permit as well.</span>

## <span class="legacy-color-text-default">Expected Results</span>

Important

In order for the correct address to display on the hangtag, you will need to have the **Mail Permit to** selected on the user's profile, and the appropriate address filled out. For example, if you select **Local Mailing Address** and the user only has their **Personal Mailing Address** completed, the user's address will not be printed to the hangtag. (See **Edit User Profile - Profile Tab**)

<span class="legacy-color-text-default">After printing the hangtag and placing it in its cover, the completed print job could look something like this:   
</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/eakimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/eakimage.png)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/GnWimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/GnWimage.png)

<span class="legacy-color-text-default">Select the print option from your browser (Ctrl+P is the print shortcut). A sample printed parking permit front and back would look similar to this:  
</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/bGlimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/bGlimage.png)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/vVIimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/vVIimage.png)

## Printer Settings 

Below are sample margin settings.

<div class="table-wrap" id="bkmrk-margins-inches-milli"><table class="wrapped confluenceTable tablesorter tablesorter-default" role="grid"><thead><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Margins: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" tabindex="0">Margins

</th><th aria-disabled="false" aria-label="Inches: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" tabindex="0">Inches

</th><th aria-disabled="false" aria-label="Millimetres: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" colspan="1" data-column="2" role="columnheader" scope="col" tabindex="0">Millimeters

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd">Left

</td><td class="confluenceTd">0.88

</td><td class="confluenceTd" colspan="1">22.35

</td></tr><tr role="row"><td class="confluenceTd">Right

</td><td class="confluenceTd">0.254

</td><td class="confluenceTd" colspan="1">6.45

</td></tr><tr role="row"><td class="confluenceTd">Top

</td><td class="confluenceTd">0.96

</td><td class="confluenceTd" colspan="1">24.38

</td></tr><tr role="row"><td class="confluenceTd" colspan="1">Bottom

</td><td class="confluenceTd" colspan="1">0.169

</td><td class="confluenceTd" colspan="1">4.29

</td></tr></tbody></table>

</div>Do not select "Shrink to Fit" and instead always use "100%".

# Temporary Permit Printing

1\. In **Parking Management**, hover over the **Permits** icon and click '**Temp Permit Printing**'.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/zUDimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/zUDimage.png)

2\. In the **Retrieve** drop-down menu, select the permits that you want. Select the **Permit Lot** that you want. Enter the Start Date and the Up to and Including date and select the **Retrieve** button. The results will appear below the search criteria.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/jxqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/jxqimage.png)

3\. Select the checkbox for the permits you wish to print and press “**print selected hang tags**” button. Below is a sample Temp Permit.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/RENimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/RENimage.png)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/A1Uimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/A1Uimage.png)

Note, temp permits can also be printed by going to a user's history. Under the Temp Permit section, under the Permit #, select the printer icon to print just that one permit.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Kzximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Kzximage.png)

# Releasing a Permit

1. If you know the permit number perform a permit search. If you do not know the permit number, go to the user profile for whom you wish to release a permit.  
    Click on the **permit number** on the user dashboard.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Qt7image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Qt7image.png)
2. From the permit detail click on the **permit number.**  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xpNimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xpNimage.png)
3. You will be taken to permit search where you can release the permit  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/oKzimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/oKzimage.png)
4. It is advisable to leave a comment in order to track the reason the permit was released. Click **Release This Permit.**  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/tssimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/tssimage.png)
5. A pop up window will appear. Click **OK** to confirm the release of the permit.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/booimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/booimage.png)
6. A confirmation message will appear.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ftSimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ftSimage.png)
7. Now when you search the permit it will appear as available.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Dv3image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Dv3image.png)

# Clearing Items Awaiting Payment - Midnight List

<p class="callout info">If enabled, there is a System task that will clear all permits that are sitting in user's carts without any payments or promises to pay on them. Permits that have been **rolled over (renewed)** or permits assigned through **managed waitlist** are <span style="text-decoration: underline;">**excluded**</span> from this process. Additionally, **Zero dollar** items will <span style="text-decoration: underline;">not</span> be able to be cleared this way. Instead, use the **Mark Items as Paid** functionality to clear these payments. </p>

<span style="color: rgb(0, 0, 0); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 2.333em; font-weight: 400;">Viewing Permits without Payments</span>

1. Click **Parking Management**, hover over **Reports,** and click **Midnight List**.
2. On the report you can see all users with permits in their cart that do not have a payment associated. You can do the following from this report:

- - See items to be cleared
    - Email the affected users
    - Clear their flag to take them off the list and update the list  
          
        [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/SSuimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/SSuimage.png)

### Viewing Lockers without Payments

1. Click **Locker Management**, and click **Midnight List**.
2. On the report you can see all users with permits in their cart that do not have a payment associated. You can do the following from this report:

- - See items to be cleared
    - Email the affected users
    - Clear their flag to take them off the list and update the list

### Setting Up to Automatically Clear Permits without Payments

<p class="callout warning">If you do not see the settings mentioned below, please contact <support@ops-com.com> to have them enabled for you. You will need the permission of your Primary Admin.</p>

1. Click **System Configuration**, hover over **System Setting,** and click **Permits**.
2. Click to toggle **Clear Unpaid Permits** on.
3. Click **Payments**.
4. Change the **Clear Payments After X Hours** value to the number of hours you want to allow items to remain in the user's cart. Use numbers only
5. Follow the instructions in [this wiki article](https://opscom.wiki/books/setup-configuration-for-admins/page/managing-recurring-and-onetime-system-tasks) to toggle on the **Clear - No Payment** scheduled task.

### Setting Up to Automatically Clear Lockers without Payments

<p class="callout warning">If you do not see the settings mentioned below, please contact <support@ops-com.com> to have them enabled for you. You will need the permission of your Primary Admin.</p>

1. Click **System Configuration**, and hover over **System Settings.**
2. Click **Lockers**.
3. Click to toggle **Clear Unpaid Lockers at Midnight** on.
4. Change the **Clear Payments After X Hours** value to the number of hours you want to allow items to remain in the user's cart. Use numbers only
5. Follow the instructions in [this wiki article](https://opscom.wiki/books/setup-configuration-for-admins/page/managing-recurring-and-onetime-system-tasks) to toggle on the **Clear - No Payment** scheduled task.

# Permit Waitlist Feature Overview

<p class="callout info">**Welcome to the OPSCOM Waitlist Feature!**  
This feature allows administrators to manage users waiting to purchase a permit in a specific lot or in a lot category. If enabled, this feature can save your team significant administrative time and ensure a fair allocation process.</p>

#### How Does the OPSCOM Waitlist Work?  


There are two different ways you can leverage the Waitlist. You can use the waitlist report or you can enable the Managed Waitlist functionality.

##### [Basic Waitlist Report](https://opscom.wiki/books/the-opscom-admin-portal/page/using-the-basic-waitlist-report)

When a user joins a waitlist, Admins can access a report to see the waitlists by lot, link to the user's profile or email users individually or in bulk.

##### [Managed Waitlist Functionality](https://opscom.wiki/books/the-opscom-admin-portal/page/managed-wait-list)

If Managed Waitlist is enabled, the Admin will be notified when a permit becomes available to be assigned to users on a waitlist. It will automatically be reserved to be assigned to the users on the waitlist. The admin will be able to choose who to assign this permit to add it to the user's cart. The Admin will email the user and give them a specific amount of time to pay for the permit before it expires and can be given to someone else.

Go to the linked pages to explore how to setup and work with either the Basic or Managed Waitlist functionality.

# Rollover: Auto Selection and Automatically Processing Payments

## <span data-colorid="l6u8mz9s8b">Using Credit Cards on File to Purchase Recurring Permits</span>

There are two prerequisites to this function working correctly for credit card purchases on rollover. The user **must have a valid credit card registered in the system,** and the card must be **designated as the Prime Credit Card**.

<p class="callout info">If you are accepting Credit cards that you wish to charge on rollover, you must have a Gateway that allows you to charge client cards directly. This cannot work for a system that is set for Hosted Payments only.</p>

### Performing Permit Rollovers

Hover over **Permits**, then select **Process Payments for Rollovers**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/jAmimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/jAmimage.png)

The **Rollover Payment Processing** page will be displayed as seen in the image below.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/mBUimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/mBUimage.png)

To select which payments will be done click the check box with the payment type. If the invoice or permit says "None Set" then the user must process the payment to get the permit in the next sales window.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/6Foimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/6Foimage.png)

Select the '**Process Payments for Rollovers**' button

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ZTcimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ZTcimage.png)

##### Visual Cues &amp; Status Indicators

- **Lock Pad Icon**: Displayed on the right side of the **Process Payments for Rollover** screen. This indicates that a previous payment attempt was initiated but did not reach a finalized "Paid" or "Cancelled" state, often due to a **Declined - Retry later** response from the processor.

### Resolving a Locked Permit

If a permit is locked and cannot be processed through the standard rollover screen, follow these steps to clear the lock and complete the transaction:

1. Navigate to the **User Profile** of the individual associated with the locked permit.
2. Access the user's **Cart** or **Pending Items**.
3. Select the permit item that is currently locked in the rollover report.
4. Proceed to **Checkout** and manually process the payment using the user's preferred method (e.g., Credit Card, Cash, or Account Credit).
5. Verify the transaction is successful. Once the item is marked as paid in the user's account, it will automatically be removed from the locked status in the **Process Payments for Rollover** screen.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">A locked permit indicates an incomplete transaction. Do not attempt to re-process the payment through the rollover screen until the lock has been cleared via the user's account, as this may result in errors.</span></p>

- **Monitor rollover reports monthly** to identify any lock pad icons, ensuring that all recurring permit payments have been successfully captured.
- **Investigate "Declined" messages** immediately by contacting the user to verify their credit card information or suggesting they contact their bank.
- **Redirect payment to the User Profile** when a lock occurs; manual intervention through the user's cart is the primary method for clearing a processing lock.
- **Allow for processing time** if a generic error occurs, as some records may take a short period to clear the payment gateway's communication buffer before they can be re-attempted.
- **Confirm successful payment** in the user's transaction history before attempting any further administrative actions on the permit to ensure data integrity.

# Preventing Permit Rollover after Cancellation

Purchase a permit as an Administrator for any user. Locate the permit on the **Profile** page and click the permit button to reveal the **Parking Permit Information** window.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/1OPimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/1OPimage.png)

 Change the **Rollover State** to **Prevent Rollover**. Enter a comment to explain why you are changing the state. This is mandatory.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ZWcimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ZWcimage.png)

Click Update Permit.

A message will display to let you know you have changed the flag.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/5tMimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/5tMimage.png)

You should also add notes to indicate why the flag was changed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/KBsimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/KBsimage.png)

The process is almost the same for the user portal. An end user can set their permit to not renewing. Simply find the permit on the User Dashboard and click on the permit button.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/5suimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/5suimage.png)

Select **Not Renewing** from the dropdown list in Permit Information.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Cucimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Cucimage.png)

When you process the rollovers, this permit will not show up in the list. Instead, it will show up in a separate list called **"Permits that will not be rolled over."**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0EDimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0EDimage.png)

# Enabling Permit Rollovers without Previous Payment

1. Hover over the **System Config** menu and click **System Settings**.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/aGsimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/aGsimage.png)
2. The '**Manage System Settings**' window is displayed. Click **Permits** and disable the checkbox next to '**Require Payment for Rollovers**'. This setting will be on by default.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Jftimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Jftimage.png)
3. Click the **'Save Settings**' button.
4. Proceed with Rollovers to the next allocation period.

# Feature Overview - Rollover/Renew Permits

<p class="callout info">**Permit rollovers**, also referred to as **renewals**, describe the process of transitioning an existing permit from its current, expiring validity period to a subsequent, new sales window. This procedure effectively establishes a new duration for which the permit remains valid and involves the requisite charge for this extended period.   
  
This is crucial for maintaining continuous parking access for patrons, especially those on payroll deduction or with credit cards on file that can be automatically charged. It's designed to manage active permits from a current sales window into a future sales window, establishing a new duration for which the permit remains valid and involving the requisite charge for this extended period.   
  
For instance, consider a monthly permit holder. Their permit is initially configured within a January sales window, granting validity from January 1st to January 31st, at a cost of $100 for the month. In late January, this permit can be rolled over into a February sales window. This action sets the permit's new valid period from February 1st to February 28th, with an additional charge of $100 applied to the permit holder for the month of February.</p>

The rollover process in OPSCOM involves several key steps and configurations:

- **Sales Window Setup**: Before any rollover can be performed, ensure your new sales window has a start date equal to or greater than the end date of the previous sales window.
- **Permit Renewal Initiation**: Administrators use the Permit Renewals utility to select which sales windows and user types will be included in the rollover.
- **Permit Selection &amp; Exclusions**: Administrators can review and select specific lots and even individual permits to include or exclude from the rollover process.
- **Payment Processing**: For users with payment subscriptions (payroll deduction, EFT, credit card) set up, payments can be processed automatically as part of the rollover.
- **User Notifications (Implicit)**: While not explicitly detailed as a setup, users with payment subscriptions can have their payments processed automatically, implying a streamlined experience. Users who need to make manual payments will be required to do so to secure their permit.
- **Prevention**: Both administrators and users have options to prevent specific permits from rolling over.

To ensure a smooth permit rollover, you'll need:

- A new sales window set up correctly. [Refer to the Sales Window wiki article](https://opscom.wiki/books/the-opscom-admin-portal/page/permit-sales-window-management) to learn more.
- Permits marked as renewable in the previous sales window.

Before attempting rollovers, please follow the steps in these wiki articles to ensure you have activated the correct Sales Window and that you have your information correctly set up for automatic payments.

For parkers with subscriptions, automatic payments can be processed as part of the rollover. This applies to patrons who pay by payroll deduction or credit card.

**For Credit Card Payments:** For automatic credit card processing on rollover, the user must have a valid credit card registered in the system, and it must be set as their **Prime Credit Card**. Note that your payment gateway must allow direct charging of client cards; this won't work with hosted payments only.

Automatic Permit Payments on Rollover/Renewal

Parkers with subscriptions setup in their account

Patrons who pay by payroll deduction or through credit card purchases can also have their payments processed automatically as part of the rollover process.

### Performing Permit Rollovers

To begin a rollover:

1. Hover over **Permits** (Clock icon) and click **Sales Window**.
2. Click the **Rollover** button to open the **Permit Renewal** page**.**

<p class="callout warning">Before a rollover can be performed you must make sure that the new sales window you are rolling into has a start date that is equal to or greater than the end date of your previous sales window.</p>

##### <span style="text-decoration: underline;">Select Rollover Options</span>

1. From the permit Renewal window select the current sales window you are rolling over **from** (From Sales Window) on the left side of the form.
2. Then select the Sales Window you wish to roll the permits into. In our example we are rolling permits from the October Sales Window to the November Sales Window.
3. Select what user types we wish to roll over, or simply leave it as the default of **All User Types.**
4. Click on **Show Lots** to list all lots that can be rolled over in the selected Sales Window. The list of lots will appear below the search form.

##### <span style="text-decoration: underline;">Managing Individual Permits for Rollover</span>

You can choose to include or exclude specific permits from the rollover.

1. To see the list of permits you can toggle for renewability, click either the **Holders** or **Renewing** button.
2. A list of permits in that lot will appear, allowing you to toggle whether they should be renewable or not. For example, if permits STAFF1000 and STAFF1001 are not renewing, they shouldn't roll over.
3. Click **Update Permits** to save your changes.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/PLRimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/PLRimage.png)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/tk9image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/tk9image.png)

6\. Click **Update Permits** to save your changes.

Here's the logic for permit rollover states:

<div class="columnLayout single" data-layout="single" id="bkmrk-state-current-permit"><div class="cell normal" data-type="normal"><div class="innerCell"><div class="table-wrap"><table class="relative-table wrapped confluenceTable tablesorter tablesorter-default" role="grid" style="width: 103.929%; height: 542.406px;"><colgroup><col style="width: 11.919%;"></col><col style="width: 11.5614%;"></col><col style="width: 10.1311%;"></col><col style="width: 10.2499%;"></col><col style="width: 56.1387%;"></col></colgroup><thead><tr class="tablesorter-headerRow" role="row" style="height: 139.656px;"><th aria-disabled="false" aria-label="State: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 139.656px;" tabindex="0">State</th><th aria-disabled="false" aria-label="Current Permit Renewing(prevent_rollover = 0): No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 139.656px;" tabindex="0">Current Permit Renewing  
(prevent rollover = 0)</th><th aria-disabled="false" aria-label="User exists in target Sale Window: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 139.656px;" tabindex="0">User exists in target Sale Window</th><th aria-disabled="false" aria-label="Permit exists in target Sale Window: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 139.656px;" tabindex="0">Permit exists in target Sale Window</th><th aria-disabled="false" aria-label="Notes: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="4" role="columnheader" scope="col" style="height: 139.656px;" tabindex="0">Notes</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 55.2188px;"><td class="confluenceTd" style="height: 55.2188px;">Renewing</td><td class="confluenceTd" style="height: 55.2188px;">True</td><td class="confluenceTd" style="height: 55.2188px;">False</td><td class="confluenceTd" style="height: 55.2188px;">False</td><td class="confluenceTd" style="height: 55.2188px;">Neither the user, nor the permit exists, but the current permit is set to be renewed.</td></tr><tr role="row" style="height: 118.547px;"><td class="confluenceTd" style="height: 118.547px;">Blocked</td><td class="confluenceTd" style="height: 118.547px;">True</td><td class="confluenceTd" style="height: 118.547px;">False</td><td class="confluenceTd" style="height: 118.547px;">True</td><td class="confluenceTd" style="height: 118.547px;">The permit exists in the target sale window, but the user doesn't. This means anywhere for any permit in the lot. If the user has multiple permits and some of them renewed, then they technically are not blocked. If the user has been given a different permit, they also are not blocked.</td></tr><tr role="row" style="height: 76.3281px;"><td class="confluenceTd" style="height: 76.3281px;">Renewed</td><td class="confluenceTd" style="height: 76.3281px;">True</td><td class="confluenceTd" style="height: 76.3281px;">True</td><td class="confluenceTd" style="height: 76.3281px;">N/A</td><td class="confluenceTd" style="height: 76.3281px;">The user is considered renewed when they exist in the target sale window. Just like the note for blocked, it's not intended to be good for users with multiple permits.</td></tr><tr role="row" style="height: 76.3281px;"><td class="confluenceTd" style="height: 76.3281px;">Not Renewing</td><td class="confluenceTd" style="height: 76.3281px;">False</td><td class="confluenceTd" style="height: 76.3281px;">False</td><td class="confluenceTd" style="height: 76.3281px;">N/A</td><td class="confluenceTd" style="height: 76.3281px;">The user was not found in the target sale window and their permit is also not renewing. This is the expected scenario.</td></tr><tr role="row" style="height: 76.3281px;"><td class="confluenceTd" style="height: 76.3281px;">Not Renewing, but Exists</td><td class="confluenceTd" style="height: 76.3281px;">False</td><td class="confluenceTd" style="height: 76.3281px;">True</td><td class="confluenceTd" style="height: 76.3281px;">N/A</td><td class="confluenceTd" style="height: 76.3281px;">The user WAS found and their permit is not renewing. This could use some investigation to make sure that the user is supposed to have that permit or not.</td></tr></tbody></table>

</div></div></div></div>Once you've completed this process for all lots you want to include in the rollover, click **Renew Permits** to continue. The screen will refresh and update the permit counts. Permits you toggled for rollover will appear as rolled over, while those marked as not renewing will remain in the "Not Renewed" column and will be available for new users.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2WIimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2WIimage.png)

### Permit Processing

The system automatically rolls over permits paid through gateway payment types like Mastercard, Visa, or Payroll Deduction. Users whose permits are rolled over but don't have an active payment subscription will need to make a payment to secure their permit. These Parkers will see the permit show up in their cart on the User Portal as unpaid. However, if a user has a [payment subscription set up](https://opscom.wiki/books/the-opscom-admin-portal/page/payment-management-subscriptions), their permit will be rolled over, and the payment will be processed automatically.

The **Process Payment** option will be automatically toggled on, and the **Credit Card Type** will appear for users whose payments can be processed automatically. <span style="background-color: rgb(251, 238, 184);">If someone isn't continuing to park in a lot, simply uncheck the corresponding checkbox under **Rollover** to exclude them.</span>

Click **Rollover Permits** to complete the process. Remember, you'll need subscriptions set up for payroll deductions, EFT, or credit card payments. You can prevent permits from rolling over by setting their renewable flag.

## Exporting Users to Rollover

After clicking the **Rollover Permits** we can also choose to export an excel spreadsheet of all the users that are associated with the lot we have selected. To do this we click **Export Users** on the **Permit Rollover** page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/MyRimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/MyRimage.png)

This will open a new window that generates the excel document for us to open depending on the browser you are using. You may be warned that the file is corrupt in some way however you should still be able to view the output in Excel's protective view.

---

## Automated User Notifications

To streamline the renewal experience and reduce manual support inquiries, OPSCOM now includes automated email triggers that fire upon the completion of the rollover task.

### User-Facing Notifications

When the system task processes the rollover, users are automatically notified based on the outcome of their transaction. These templates can be customized via the **Email Templates** page:

- **Payment Success:** If the payment (Credit Card, Payroll, etc.) is successful, the user receives a confirmation email along with their digital receipt.
- **Payment Failure:** If a payment is declined (e.g., expired card, insufficient funds), the user receives a failure notification advising them of the error so they can take manual action to secure their permit.
- **Audit Trail:** A record of these emails is associated directly with the user’s account profile, allowing administrators to verify communication history if a patron claims they were not notified.

### Administrative Alerts for Email Failures

In the event that a user’s permit is processed but they have an **invalid or missing email address**, the system ensures the administrator is kept in the loop.

The administrator who initiated the rollover will receive a summary email containing a list of all users who did not receive their receipts or alerts. This administrative digest includes:

- **Direct Links:** Clickable links to the affected user accounts.
- **Transaction Details:** Links to the specific payments via confirmation codes for quick reconciliation.

### Important Technical Notes

- **Task Processing Delay:** Please note that the rollover action is executed by a background system task. Emails are not sent the instant you click the button; there will be a short delay between clicking **Rollover Permits** and the dispatch of the success/failure notifications.

---

### <span style="color: rgb(22, 145, 121);">Tips for a Smooth Rollout</span>

1. <span style="color: rgb(22, 145, 121);">**Configure Templates:** Before performing your next rollover, visit the **Email Templates** page to update the wording for the two new permit renewal templates.</span>
2. <span style="color: rgb(22, 145, 121);">**Verify Admin Email:** Ensure your administrator account has a valid email address, as this is where the "Failure to Deliver" summary will be sent.</span>
3. <span style="color: rgb(22, 145, 121);">**Check Payment Gateways:** Remember that automatic credit card receipts only trigger if your payment gateway supports direct charging (as opposed to hosted-only payments).</span>

---

## Related Video

<iframe class="youtube-player conf-macro output-block" data-hasbody="false" data-macro-id="f5e659b8-dbe4-4c0f-896e-0e56beabc3d5" data-macro-name="widget" frameborder="0" height="268" src="https://www.youtube.com/embed/R02qrltP3RM?wmode=opaque" style="width: 536px; height: 268px;" width="536"></iframe>

# Single Allocate

<p class="callout info">This allows you to add individual permits to lots instead of adding an entire range as in the previous section.</p>

##### **Quick Steps:**

1. Hover over **Parking Management** then **Lot Administration** and Select **Allocate**.
2. Find the lot to add the permit to.
3. Click **Add Permits To Lot**.
4. Enter the permit number.
5. Click **Add Permits**.

##### **Step-by-Step Instructions:**

1. **Navigate to Permit Number Allocation page**: Hover over the **Parking Management** icon in the system and then hover over **Lot Administration**, then click on **Allocate**.
2. **Locate the Desired Lot**: On the **Permit Number** **Allocation** page, find the lot you want to add a permit to.
3. **Add Permit to Lot**: Click the **Add Permits To Lot** button.
4. **Enter Permit Information**: In the **Add Permits** screen, type in the permit number. For example, you could add permit **0023** to the **123 Main Street Lot**.
5. **Confirm Addition**: A pop-up message will confirm that your changes were successfully made.
6. **Check the Permit List**: Once the permits are added, your lot will display them in the **Permit Search** utility.

# Setting Up A Lot To Be Visible and Available To The End User

<p class="callout info">This article outlines the six critical factors that determine a lot's visibility and availability to end-users when they are purchasing permits in OPSCOM. Understanding and configuring these settings correctly is essential for OPSCOM administrators to ensure that parking lots are accessible to the intended user groups.</p>

### Setup &amp; Configuration

##### <span style="text-decoration: underline;">System-Wide Visibility Setting</span>

1. 1. Hover over **System Configuration** and click **System Settings**.
    2. Click on the **Permits** tab.
    3. Locate the **Show Only Visible lots** setting. 
        - **Enable** this checkbox to only view lots marked as "Visible" across the system.
        - **Disable** this checkbox to view both visible and non-visible lots in administrative views.

##### <span style="text-decoration: underline;">Lot Visibility and User Type Settings</span>

1. Hover over **Parking Management**, **Lot Administration** and click **Pricing &amp; Lot Admin**.
2. Click **Add New Lot** (or click an existing **Lot Name** to edit).
3. On the **General** tab: 
    - Enable the **Visible** radio button in the **Visibility to User** setting.
    - In the **Lot Access** section, select the appropriate **User Types** that are allowed to see and purchase permits for this lot. Hold the **Ctrl** key to select multiple user types.
    - Click **Update Lot**.
4. On the **Temporary Permits** tab:
    
    
    - Disable the T**his lot is for temporary parking only** checkbox.

##### <span style="text-decoration: underline;">Allocate Permits to the Lot</span>

1. Follow the steps [in this wiki article](https://opscom.wiki/books/the-opscom-admin-portal/page/adding-permits-to-a-lot) to add and verify your permits.

##### <span style="text-decoration: underline;">Set Up a Permit Sales Window</span>

1. Follow the steps [in this wiki article](https://opscom.wiki/books/the-opscom-admin-portal/page/permit-sales-window-management) to setup your Sales Window.
2. 

##### <span style="text-decoration: underline;">Test with a User</span>

1. Hover over **User Management** and click on **User Registration** (to create a new test user) or **User Search** (to find an existing one).
2. Ensure that the test user's **User Type** (e.g., Full Time Staff) matches one of the user types you allowed to access the lot you setup.
3. Click **Login as User** for your test user.
4. On the User-Side Dashboard, navigate to **Permits**.
5. Check if the lot you created is available to be reserved. If the user type you are testing does not match the lot's allowed user types, the lot will not be visible on the user side.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Test Thoroughly**: Always perform a **Login as User** test with various user types after configuring a new lot or modifying its settings. This ensures that visibility and availability match your intentions.</span>
- <span style="color: rgb(22, 145, 121);">**User Type Alignment**: The most common reason a lot isn't visible is a mismatch between the lot's **User Types** setting and the logged-in user's actual user type. Double-check this setting carefully.</span>
- <span style="color: rgb(22, 145, 121);">**Sales Window Dates**: Ensure your permit sales windows are always current. An expired sales window will make the lot unavailable, even if all other settings are correct.</span>
- <span style="color: rgb(22, 145, 121);">**Permit Allocation**: A lot without allocated permits, even if visible, will not allow users to purchase permits, as there's nothing to sell. Always allocate permits after lot creation.</span>
- <span style="color: rgb(22, 145, 121);">**Clear Naming Conventions**: Use descriptive **Lot Names** and **Lot Short Names** that clearly indicate the lot's purpose or location to users.</span>

# Permit Sales Window Management

<p class="callout info">**Permit Sales Windows** in OPSCOM define the specific timeframes during which parking permits can be purchased and when they are valid. This article guides OPSCOM administrators through the process of creating and activating new permit sales windows, ensuring that permits are available for sale and valid for use according to your organization's academic terms or operational periods.</p>

The **Manage Permit Sales Window** page allows you to create, configure, and activate sales windows.

### Creating a New Sales Window

1. Hover over **Parking Management**, and click **Sales Windows**.
2. Click the **+Add Sale Window** button.
    
    
    - Enter a Name for your sales window.
    - Choose your allocation type: Will it be Monthly, Yearly, Semester or Other?
    - Enter your Sale Start Date, Permit Start Date and End Date (see the **Defining your Key Dates** section below).
    - Choose a color for your sales window.
3. Click **Save Changes** to save your information. The newly created sales window will now appear in the list on the **Manage Permit Sales Window** page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-05/scaled-1680-/DGAimage.png)](https://opscom.wiki/uploads/images/gallery/2025-05/DGAimage.png)

##### <span style="text-decoration: underline;">Defining your Key Dates</span>

When creating a new sales window, you will need to define the following key dates:

- **Sale Start Date**: 
    - **Purpose**: This is the first day that permits associated with this sales window will be available for purchase by users.
    - **Example**: December 29, 2025.
- **Permit Start Date**: 
    - **Purpose**: This is the first day the purchased permit becomes officially valid and usable (e.g., scannable, recognized by LPR). This allows for pre-selling permits before their validity period begins.
    - **Example**: January 1, 2026.
- **End Date**: 
    - **Purpose**: This is the official last day permits can be sold within this sales window, and also the date on which the permits become invalid.
    - **Example**: December 31, 2026.

<p class="callout info">**Example Scenario**: If a sales window is configured with a **Sale Start Date** of December 29, 2025, a **Permit Start Date** of January 1, 2026, and an **End Date** of December 31, 2026:  
 • Permits can be purchased anytime between December 29, 2025, and December 31, 2026.  
 • These permits would be *valid* from January 1, 2026, to December 31, 2026.</p>

---

### Activating the Sales Window

Once a sales window has been configured, it needs to be made **Active** for permits to be sold.

1. Locate the sales window you wish to activate on the **Manage Permit Sales Window** screen.
2. In the **Active** column, click the dropdown menu for that sales window.
3. Choose **Active**.

<p class="callout warning">**Note:** If you activate a yearly sales window, other existing yearly sales windows will automatically switch to **Inactive** to prevent conflicts.</p>

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Overlap Prevention**: Carefully manage sales window dates to avoid unintended overlaps that could confuse users or create accounting issues.</span>
- <span style="color: rgb(22, 145, 121);">**Future Planning**: Create sales windows well in advance of the sale start date to allow ample time for configuration, testing, and marketing of permits.</span>
- <span style="color: rgb(22, 145, 121);">**Expiration Management**: Regularly review the **End Date** of your sales windows. Past sales windows will be located under **Past Permit Sales Window** and cannot be reactivated; a new sales window must be created if similar dates are needed.</span>
- <span style="color: rgb(22, 145, 121);">**Clarity in Naming**: Use clear and descriptive names for your sales windows (e.g., "Fall 2025-2026 Annual Permit Sales," "Spring Semester 2026").</span>

# Adding Permits to a Lot (Allocation)

<p class="callout info">This article outlines the process for OPSCOM administrators to add permits to specific parking lots. Permits can be added individually, as a sequential range, or with custom prefixes/postfixes, enabling efficient management of your permit inventory and ensuring lots have available permits for sale.</p>

### Using this Feature

1. Hover over **Parking Management**, **Lot Administration** and click **Allocate**.
2. The **Permit Number Allocation** page lists all configured parking lots.
3. Locate the specific lot to which you want to add permits and click the **Add Permits to Lot b**utton.
4. Within the next window, you have several options for entering permit numbers: 
    - **Individual Permit Numbers**: Enter specific, non-sequential permit numbers, separated by commas (e.g., **Staff01, Staff02, Visitor123**).
    - **Range of Permit Numbers**: Enter a numerical range using "to" (e.g., **1 to 20** or **50 to 200**). The system will generate all numbers within that range.
    - **Prefix or Postfix (Optional)**: 
        - **Prefix**: Enter text in the **Prefix** field (e.g., "Staff"). This text will be added *before* each generated permit number (e.g., Staff01, Staff02).
        - **Postfix**: Enter text in the **Postfix** field. This text will be added *after* each generated permit number (e.g., 01-East, 02-East).

##### <span style="text-decoration: underline;">Add Permits</span>

1. Enter the desired permit numbers, ranges, or prefixes/postfixes into the provided fields within the **Add Permits to Lot** utility.
2. Click the **Add Permits** button.
3. A confirmation pop-up will appear. Click **Add Permits** again to confirm and finalize the process.
4. A success message will confirm that your changes were successfully made.

##### <span style="text-decoration: underline;">Viewing Added Permits</span>

After permits are added, you can verify their details by navigating to the **Permit Search** utility.

1. Hover over **Permits,** and click **Permit Search**.
2. Filter by the relevant lot to view the newly added permits.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Planning Permit Ranges**: Before adding large batches of permits, plan your numbering scheme to ensure consistency and avoid conflicts.</span>
- <span style="color: rgb(22, 145, 121);">**Unique Identifiers**: While OPSCOM handles uniqueness, consider using prefixes or postfixes for different types of permits or lots for easier identification.</span>
- <span style="color: rgb(22, 145, 121);">**Verify Allocation**: Always perform a quick check in the **Permit Search** utility after adding permits to confirm they have been correctly allocated to the desired lot.</span>
- <span style="color: rgb(22, 145, 121);">**Bulk vs. Individual**: For small, specific additions, individual entry is efficient. For larger inventories, using ranges and prefixes/postfixes will save significant time.</span>

# Setup Lots to Use Text2ParkMe

<p class="callout info">**Text2ParkMe (T2P)** allows users to pay for temporary parking via SMS (text) messaging. Text2ParkMe will also send out reminders when their parking time is about to expire and allow users the option to extend their parking time. Text messaging fees <u>**do**</u> apply based on individual phone plans.</p>

<p class="callout info">If you have purchased Text2ParkMe, you must have a gateway provider setup to accept T2P payments. You must work with our project manager to ensure this gateway is configured and tested to work with your system. </p>

<p class="callout info">You will also <u>require</u> a T2P phone number that your users will text to obtain temporary parking. The **Operations<span class="legacy-color-text-red2">Commander</span>** Support team will ensure this number is setup and tested for you.</p>

##### **Quick Steps:**

1. Hover over **Parking Management**, then **Lot Administration** and click **Pricing &amp; Lot Admin**.
2. Click a **Lot Name** to open its settings.
3. Select the **Temporary Permits** tab.
4. Fill out all fields in the red box (especially the **Text Code**).
5. Click **Update this Lot** to save.

##### **Step-by-Step Instructions:**

1. **Navigate to the Lot Administration page:** Hover over **Parking Management** in the main menu. Click **Lot Administration** and then select **Pricing &amp; Lot Admin**.
2. **Locate your lots settings:** In the window, **click on a Lot Name** to open the specific lot's settings.
3. **Click on Temporary Permits:** Select the **Temporary Permits** tab. You will see several fields. Be sure to fill out **all the items in the red box**, as these are required. The **Text Code** is the display name that users will see when choosing this lot to park in.
4. **Save Changes:** Once all required fields are filled out, click the **Update Lot** button to save your changes.

# Permit Allocations

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/bVKimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/bVKimage.png)

- [Adding Permits to a Lot](https://opscom.wiki/books/the-opscom-admin-portal/page/adding-permits-to-a-lot-allocation)
- [Single Allocate](https://opscom.wiki/books/the-opscom-admin-portal/page/single-allocate)
- [Archiving and Restoring Permits](https://opscom.wiki/books/the-opscom-admin-portal/page/archiving-and-restoring-permits)

# Planning Lot Groups and Lot Zones

<p class="callout info">**Lot Groups** allows you to group similar lots together to be seen as a single entity in OPSCOM. A lot may only belong to **one** group. A lot group **is not required**<u>,</u> it exists to allow similar lots.</p>

<p class="callout info">**A Lot Zone** is a grouping mechanism **allowing validation parameters** to be applied to a lot.</p>

##### **Quick Steps:**

1. Hover over the **Parking Management,** then **Lot Administration,** and select **Pricing &amp; Lot Admin**.
2. Click on the **Lot Name**. In the **Edit Lot** page click on the **General tab.**
3. In the **General tab** select the lot group you wish to apply to your lot.
4. Hover over **System Configuration,** then **Parking,** and click **Mange Lot Zones.**
5. Click on **Add Lot Zone** and enter a long and short name.
6. Return to the **Edit Lot** page and click on **Zone &amp; Location.**
7. Choose a **Zone** to add to the lot.
8. Set the valid days/times for the zone under **Days or Range with Sales Window** and **Start Time and End Time**.
9. The lot is now linked to the zone.
10. You can assign the same zone to multiple lots (e.g., “RED Zone” to both the **Red Lot** and **Green Lot**).
11. Patrols can select either a **Lot Group** or **Lot Zone** during enforcement.

<p class="callout success">Zones allow enforcement based on time/dates, and Groups allow enforcement across multiple lots.</p>

##### **Step-by-Step Instructions:**

1. **Locate Pricing &amp; Lot Admin:** Hover over the **Parking Management,** then **Lot Administration,** and select **Pricing &amp; Lot Admin**.
2. **Locate the General Tab:** Click on the **Lot Name**. In the **Edit Lot** page, click on the **General tab.**
3. **Adding a Lot Group:** In the **General tab** select the lot group you wish to apply to your lot.
4. **How to Create a Zone:** Hover over **System Configuration**, then **Parking**, and click **Manage Lot Zones.**
    1. **Create Zone:** Click on add **Lot Zone** and enter a long and short name.
    2. **Return to the Edit Lot page:** Return to the **Edit Lot** page by going to **Pricing &amp; Lot Admin**, then click on the **Lot Name.**
    3. **Navigate to the Zone &amp; Location tab:** Click on **Zone &amp; Location.**
    4. **Select a zone:** Use the dropdown on the left to select the zone you wish to apply to the lot.
    5. **Select Days or Range within Sales Window:** Specify when the zone is valid using **Days or Range within Sales Window** and the **Start Time and End Time**.
    6. **Confirm:** Ensure any permits tied to the lot reflect the same zone settings.

# Setting Up for Event Parking

<p class="callout info">OperationsCommander has a feature that will allow you to setup for Event Parking in a unique way. Using Lot Visibility and Passwords, an event lot can only be booked by users who have been given the direct link to the lot. A direct link may be provided by email or from scanning the lot QR code.</p>

To setup your Lot Visibility settings [refer to this page](https://opscom.wiki/books/the-opscom-admin-portal/page/lot-visibility-options).

To setup your Lot Passwords, [refer to this page](https://opscom.wiki/books/the-opscom-admin-portal/page/lot-passwords).

# Pricing and Lot Admin

<p class="callout info">The **Pricing and Lot Admin** page is a central management tool for OPSCOM administrators to create new parking lots, define their characteristics, and configure pricing and permit settings. This page allows for comprehensive control over lot visibility, access, permit types (standard, temporary, flex), and advanced features like waitlists and LPR settings, helping administrators efficiently manage their parking inventory.</p>

### Pricing &amp; Lot Admin Main Page

To access the **Pricing &amp; Lot Admin** page:

1. Hover over **Parking Management,** then Lot Administration,** and click **Pricing &amp; Lot Admin**.
2. The **Permit Pricing &amp; Lot Administration** screen opens so you can manage all lot details.

<p class="callout success">**Tip:** Before setting up new lots, consider your organization's permit types, pricing structures, and any specific access restrictions (e.g., faculty-only lots, temporary parking areas).</p>

##### <span style="text-decoration: underline;">Key Information Displayed</span>

- **Lot Name**: The full name of the lot and its associated permit sales window (e.g., Monthly, Semester, Yearly, Other).
- **User Types**: The specific user types permitted to book permits for the lot.
- **Visibility**: Indicates the lot's visibility to users (e.g., **Not visible**, **Visible**, **Not visible but available**).
- **Price**: The standard base price for permits in the lot.
- **Permit types**: Icons representing the types of permits enabled for the lot (e.g., standard, temporary, flex).
- **Visible to User**: The number of permits in the lot currently available for user purchase.
- **Usage**: The number of permits currently booked or in use within the lot.

##### <span style="text-decoration: underline;">Available Actions &amp; Buttons</span>

- **Show Archived**: Click this button to view or edit lots that have been archived.
- **Add Lot**: Click this button to create a new parking lot configuration.
- **Lot Name (link)**: Click on the **Lot Name** of any listed lot to open its detailed edit page, where you can modify various settings across different tabs.
- **Export**: Click the **Export** button at the far right of each lot line to export the lot's information to an Excel file.
- **Search**: Click the **Search** button on each lot line to navigate to the permit search page and view all permits associated with that specific lot.

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-04/scaled-1680-/image.png)](https://opscom.wiki/uploads/images/gallery/2025-04/image.png)

### Lot Edit Page Tabs

When you click on a **Lot Name**, the **Lot Edit Page** opens, divided into several tabs for detailed configuration:

##### <span style="text-decoration: underline;">General Tab</span>

- **Archive the Lot**: Enable the **This lot is archived** checkbox to archive the lot, making it unavailable for new sales but retaining historical data.
- [**Visibility to Users**](https://opscom.wiki/books/the-opscom-admin-portal/page/lot-visibility-options): Select one of the following options: **Visible**, **Not Visible**, or **Hidden but Accessible**.
- **Lot Name**: Enter the full, descriptive name for the lot.
- **Lot Short Name**: Enter an abbreviated name for the lot.
- [**Lot Group**](https://opscom.wiki/books/setup-configuration-for-admins/page/lot-groups-management): A<span class="legacy-color-text-blue3">llows you to group similar lots together to be seen as a single entity in OPSCOM. </span>
- **Lot Access**: Choose between: 
    - [**Common Lot**](https://opscom.wiki/books/setup-configuration-for-admins/page/common-lots): Any user type can park here.
    - [**User Type Lot**](https://opscom.wiki/books/setup-configuration-for-admins/page/user-types): Restrict access by specific user types. Hold **Ctrl** to select multiple user types from the dropdown.
- **[Lot Password](https://opscom.wiki/books/the-opscom-admin-portal/page/lot-passwords)**: Setting a password on a lot prevents users from booking a permit in that lot unless they enter the password. This is useful for event parking.
- **Special Parking Spaces:** Fill this out if your lot has special spaces like EV charging or ADA spaces.

Click **Update Lot** after making changes in this tab.

##### <span style="text-decoration: underline;">Zone &amp; Location Tab</span>

- **Location Description**: Enter a description of the lot's physical location, which will appear on the user interface.
- **Image**: Upload an image that will be displayed next to the lot name; users can click it to enlarge.
- **Zone**: Configure a zone for this lot by selecting a zone and specifying days or a range within the sales window, along with a start and end time.
- **Map Detail**: Move or **Create a Map Marker** to pinpoint the lot's location on a map. Once the marker is set, the GPS coordinates will automatically populate.

Click **Update Lot** after making changes in this tab.

##### <span style="text-decoration: underline;">Standard Permits Section</span>

- **Default Cost**: Enter the base cost for standard permits in this lot.
- **Prorated Sales**: Choose **Enabled**, **Use Default Setting**, or **Disabled** as required for prorated permit sales.
- **Multiple Permits**: Enable the **This lot can be used for a second permit** checkbox to allow users to purchase multiple permits for this lot.
- **WaitList Options**: 
    - Enable the **Allow the use of Waitlist with this lot** checkbox if you want the waitlist to be available to be joined.
    - Enable the **Only Allow Waitlist after lot is full** checkbox if you want a waitlist to become active when permits for this lot are sold out.
- **Waitlist Lot Category**: Group multiple lots together onto the same waitlist by selecting a category. This is a text field only, so use care when creating this. 
    - If a user joins a waitlist that is part of a **Lot Category**, they will be automatically added to **ALL** individual lot waitlists that are associated with that specific group.
    - Crucially, they will be assigned the **same ranking** across all these grouped waitlists. This ensures that if a permit becomes available in *any* one of the lots within that category, the user is eligible to purchase that permit.
- **Lot Sales Window**: Choose the sales window type for term permits that will be sold here (e.g., Yearly, Monthly).
- **Hang Tag Settings**: Enable settings for printing physical hang tags if required for this lot.

Click **Update Lot** after making changes in this tab.

##### <span style="text-decoration: underline;">Temporary Parking Tab</span>

- **Temporary Parking Only**: Enable the **This lot is for temporary parking only** checkbox if the lot is exclusively for temporary parking.
- **Max Permits per Day**: Set the maximum number of temporary parking permits available per day for this lot.
- **Permit Duration**: 
    - Enable **Allow temp permits up to 30 days** to limit temporary permits to 30 days.
    - Enable **Allow temp permits to be used over 30 days** to permit temporary parking for periods exceeding 30 days.
- **Permit Application to All Vehicles**: Enable **Allow all vehicles on profile to receive the permit** to automatically apply the temporary permit to all vehicles on a user’s profile.
- **Daily Cost**: Enter the maximum fee for parking beyond 6 hours (if applicable).  
    ***Note:*** *If you do not wish to have a daily fee, disable any Permit Duration settings. You can still configure hourly cost as described below.*
- **Hourly Costs**: Enter the hourly fee for parking. If the lot has a flat rate, leave these fields blank.
- **Over 30 Days Monthly Cost**: Enter the monthly cost for parking permits that extend beyond 30 days.
- **Real-Time Map**: Enable **Allow this lot to appear on the Real-Time Parking Map** to display this lot on the *Real-Time Parking Map* feature.
- **QR Code**: 
    - View the **QR Code** for this lot.
    - Access the **Link** to the QR Code.
    - **Download or Print** the QR Code directly from this page.
    - Add a **Logo Image** to be displayed in the center of the QR Code.

Click **Update Lot** after making changes in this tab.

Here is an ***example*** of how you may want to configure your temporary pricing:

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-09/scaled-1680-/image.png)](https://opscom.wiki/uploads/images/gallery/2025-09/image.png)

In the above ***example***, permits will be available for ***free*** for 2 hours**, ***$5*** for **3 hours**, ***$8*** for **12 hours**, and ***$10*** for **24 hours/1 day**.

##### <span style="text-decoration: underline;">Flex Permits Tab</span>

This tab allows for flexible pricing based on specific times and days.

- **Using Flex Permits**: Click the checkbox to **Enable Flex Permits**.
- **Add New**: Click **Add New** to create a new **Time Slot** with a specified **Price** and a choice for **Colour** coding. Click **Save Changes** when complete.
- **View &amp; Edit**: You can **Edit** existing **Time Slots**, **Pricing**, or **Colours** individually by clicking the appropriate **Edit** button. Alternatively, use the **Time Slot Chart** and the **Select** button to click and drag time slot information to apply to multiple times and dates simultaneously.
- **Clear**: Click the **Clear** button to remove all pricing configurations from the chart.
- **Fill**: Click the **Fill** button to populate the chart with all the same pricing.
- **Reload**: Click **Reload** to revert the information to your previously saved settings.

Click **Update Lot** after making changes in this tab.

##### <span style="text-decoration: underline;">Lot LPR Settings Tab</span>

- **Free Parking Time**: Set a grace period during which patrons can register their license plate with a pay-by-plate meter without incurring a charge.

Click **Update Lot** after making changes in this tab.

##### <span style="text-decoration: underline;">Additional Settings Tab</span>

- **Banner Detail Code**: This field is for use strictly with the **Banner** system for specific integrations.

Click **Update Lot** after making changes in this tab.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Consistent Naming**: Establish a consistent naming convention for your lots (e.g., "Lot A - Faculty," "Visitor Parking Garage") to improve clarity for both administrators and users.</span>
- <span style="color: rgb(22, 145, 121);">**Visibility Control**: Carefully consider the **Visibility to Users** setting for each lot. A lot marked **Not visible but available** is useful for administrative purposes or specific user groups, while still being accessible if the direct link is provided.</span>
- <span style="color: rgb(22, 145, 121);">**Waitlist Management**: If using waitlists, organizations should develop a clear business rule for when to remove a user from the waitlist, such as after a permit has been offered or after a user has been emailed.</span>
- <span style="color: rgb(22, 145, 121);">**QR Code Usage**: If utilizing QR codes for temporary parking, ensure they are prominently displayed and easily scannable at the lot location.</span>
- <span style="color: rgb(22, 145, 121);">**Regular Review**: Periodically review lot configurations, especially pricing and sales windows, to ensure they remain current and aligned with organizational policies.</span>

# Lot Visibility Options

<p class="callout info">OPSCOM provides enhanced control over parking lot visibility and accessibility, allowing administrators to define how and when users can view and book permits for specific lots. This article explains the three lot visibility options and their implications for both administrators and end-users, ensuring that lots can be precisely tailored for various scenarios, including event parking and restricted access.</p>

### Setup &amp; Configuration

Lot visibility is configured within the **Lot Edit Page** or the **View All Lots Page** by selecting one of three distinct options.

##### <span style="text-decoration: underline;">Configuring Visibility on the Pricing &amp; Lot Admin Page</span>

1. Hover over **Parking Management**, **Lot Administration** and click **Pricing &amp; Lot Admin**.
2. Click on the **Lot Name** you wish to configure.
3. On the **General** tab, under **Visibility to Users**, you will find three radio buttons. Select the desired option (details below).
4. Click **Update Lot** to save your changes.

##### <span style="text-decoration: underline;">Configuring Visibility on the View All Lots Page (Bulk Action)</span>

1. Hover over **Parking Management**, **Lot Administration** and click **Pricing &amp; Lot Admin**.
2. On this page, locate the **Visibility** column for each lot.
3. Click the current visibility icon next to the desired lot(s) to change the status using the radio buttons that appear.
4. This allows you to change the visibility status of multiple lots at once.[![image.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/NMoimage.png)](https://opscom.wiki/uploads/images/gallery/2024-10/NMoimage.png)

<div id="bkmrk--3"></div>#### Legend

- ![image.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/rNFimage.png) - lot is not visible.
- ![image.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/PXbimage.png) - lot is visible.
- ![image.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/HHrimage.png) - lot is hidden but accessible.

---

### Using this Feature

The three lot visibility options provide granular control over user access:

- **Not Visible**:
    
    
    - The lot is **not visible** to end-users on the permit booking page or the real-time map.
    - Users <span style="text-decoration: underline;">**cannot book permits**</span> from this lot, even with a direct link. This option is typically used for lots under construction, maintenance, or no longer in use.
- **Visible**:
    
    
    - The lot is **visible** to end-users on the permit booking page and may appear on the real-time map (if configured).
    - Users **<span style="text-decoration: underline;">can book permits</span>** from this lot, provided they meet any other access criteria (e.g., user type, sales window). This is the standard setting for publicly available lots.
- **Hidden But Accessible**:
    
    
    - The lot is **not visible** to end-users on the general permits page or the real-time map.
    - Users <span style="text-decoration: underline;">**can book permits**</span> from this lot *if* they access it through a direct link. This link can be provided via email, a webpage, or by scanning the lot's QR code.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Event Parking**: The **Hidden But Accessible** option is ideal for event parking. You can provide a direct link to event attendees, allowing them to book permits without the lot being generally visible to all users.</span>
- <span style="color: rgb(22, 145, 121);">**Combined with Passwords**: For enhanced security, combine **Hidden But Accessible** with lot passwords. This ensures that only users with both the direct link and the correct password can book permits for the lot.</span>
- <span style="color: rgb(22, 145, 121);">**User Communication**: If using **Hidden But Accessible** lots, clearly communicate how users can access the lot (e.g., "Scan this QR code," "Click the link in your email").</span>
- <span style="color: rgb(22, 145, 121);">**Audit Regularly**: Periodically review the visibility settings of your lots to ensure they align with current operational needs and access policies.</span>

<div class="notranslate" id="bkmrk--15" style="all: initial;"></div>

# Using Permit Proration

<p class="callout info">**Proration** is a permission that can be given to an admin user. It allows them to sell a permit to a user that is valid for a shorter portion of the active sales window and have the system adjust the cost of the permit accordingly. A good example is a student parker starting to park a vehicle halfway through a year or semester. </p>

##### **Quick Steps:**

1. Hover over the **Parking Management** then **Lot Administration** and select **Pricing &amp; Lot Admin**.
2. Click on the **Lot Name**.
3. In the **Edit Lot** page click on **Standard Permits** and enable **Proration** for the desired lot. Click **Update Lot** to save.
4. Hover over **User Management** and click **User Search.** find the user’s profile and click on their **username** then click on the **Parking** tab.
5. Select the **Standard Parking Permit** for the desired lot.
6. Choose the **permit number** and **start date**.
7. The cost will be prorated and display as **prorated**.
8. Click **Purchase this Permit** to finalize the purchase.
9. The adjusted cost will appear in both the Admin and User's portals.

##### **Step-by-Step Instructions:**

1. **Locate Pricing &amp; Lot Admin page:** Hover over the **Parking Management** then **Lot Administration** and select **Pricing &amp; Lot Admin**. 
    1. **Configuration/Setup:** In **Lot Admin &amp; Pricing**, select the lot you want to set up for proration.
    2. On the **Standard Permit** tab, check Proration **Enabled**. The lot is now set for proration.
2. Hover over **User Management** and click **User Search.**
    1. **Using Proration for Permits:** Search for the user and open their profile by clicking on their **username**.
    2. **Locate the Parking Tab:** Click on the **Parking** tab to begin purchasing a permit. The **Parking Permit Registration** screen will appear.
    3. **Selecting Standard Parking:** Select the **Standard Parking Permit** for the lot where the user will park. The full price of the permit will be displayed.
    4. **Configuring the** **Confirm Parking Permit Registration** **page:** Choose the **permit number** for the user and select the **start date** for the permit.
    5. **Confirm the Prorated Cost:** After selecting the permit number and start date, the cost will be prorated, and the **prorated** label will appear. Confirm that the cost has been prorated.
    6. Click **Purchase this Permit** to complete the process. The adjusted permit cost will now show in both the Admin Portal and the User's Portal.

# Archiving and Restoring Permits

<p class="callout info">Lot Allocation allows you to remove and restore permits in any given lot. Permits are removed through archiving. Archived permits are not permanently deleted and can be restored from their archived state**.**</p>

##### **Quick Steps:**

1. Hover over **Parking Management** then **Lot Administration** and click **Allocate**.
2. Locate the lot you wish to archive/restore permits for.
3. Click **Archive Permits** and Choose either **Selected Permits** to archive a portion of the permits or **All Permits** to archive them all.
4. Select the permits you wish to archive.
5. Click **Remove** and confirm with **Remove** again.
6. To restore permits click **Add Permits To Lot**.
7. Choose individual permits or a range (TL2-01 to TL2-05).
8. Click **Add Permits** then confirm by clicking **Add Permits** again.
9. Wait for the completion popup.

##### **Step-by-Step Instructions:**

1. **Navigate to the Lot Administration**: Hover over **Parking Management** in the menu then **Lot Administration** and then click **Allocate**.
2. **Select the Lot**: Locate the lot you wish to remove/restore permits for.
3. **Choose Permits to Archive**: Click on the **Archive Permits** dropdown menu. Select **Selected Permits** to archive only specific permits or click **All Permits** to remove them all.
4. **Select Permits to Archive**: Choose the permits you want to archive. Click **Remove** to start the archiving process.
5. **Confirm the Archive**: A confirmation screen will appear. Click **Remove** again to complete the process.
6. **Completion Message**: A popup message will confirm that the archiving process is complete.
7. **Check the Lot**: Refresh the list of permits. You’ll see that TL2-01 through TL2-05 have been removed from the lot.
8. **Add Permits Back to the Lot**: To restore permits, click on **Add Permits To Lot**.
9. **Choose a Method to Add Permits**: You can add permits back either individually or as a range: To individually add permits type the permit number in the **Permits** text box. To add by range add the **prefix** and **postfix** (if any) then add the starting and ending numbers for example 01-10 would add permits 1 to 10.
10. **Start the Process**: Click **Add Permits** to begin the restoration process.
11. **Confirmation Message**: A confirmation popup will appear. Note that the message will indicate the permits are "restored," not "created," as they were previously archived.
12. **Completion Message**: A popup message will confirm that the restoration process is complete.
13. **Check the Lot**: Refresh the list of permits. You’ll see that TL2-01 through TL2-05 have been restored.

# Flex Permits

<p class="callout danger">This feature is currently under development and has not yet been released. The wiki article serves as a placeholder outlining the intended future functionality.</p>

## Introduction

Flex permits allow clients to specify variable prices for a lot, with the possibility of a different price for every hour. This allows more options for the customization of permit prices, useful for situations like making permits more expensive during peak hours.

Flex permits are counted as type of temp permit, as an addition to the existing daily and hourly permits. They function most similarly to hourly permits and their uses have some overlap.

It is intended for a site to choose between hourly permits and flex permits and not use both, although clients are not restricted from using both at the same time if they choose to.

## Flex Permits Tab  


Flex permits and related sections can be accessed on the lot edit page, from the new flex permits tab.

[![Untitled.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/untitled.png)](https://opscom.wiki/uploads/images/gallery/2024-07/untitled.png)

<div data-color="#091e4224" data-mark-type="border" data-size="2" id="bkmrk--2" style="--custom-palette-color: var(--ds-border, #091E4224);"></div>The page consists of three sections:

- An options section
- A time slot section, used for defining prices
- An hourly grid, used to assign prices to hours in the week

### Options

<div data-color="#091e4224" data-mark-type="border" data-size="2" id="bkmrk-a-list-of-options-re" style="--custom-palette-color: var(--ds-border, #091E4224);">A list of options related to flex permits.</div>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/v9Eimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/v9Eimage.png)

<div data-color="#091e4224" data-mark-type="border" data-size="2" id="bkmrk-there-is-only-one-op" style="--custom-palette-color: var(--ds-border, #091E4224);">There is only one option for flex permits.</div><div data-color="#091e4224" data-mark-type="border" data-size="2" id="bkmrk-enable-flex-permits-" style="--custom-palette-color: var(--ds-border, #091E4224);">- **Enable flex permits** - this will enable the use of flex permits for this lot. 
    - If not enabled, users will not have the option to selected flex permits for this lot, even if the hourly grid is filled out.

</div><div data-color="#091e4224" data-mark-type="border" data-size="2" id="bkmrk-" style="--custom-palette-color: var(--ds-border, #091E4224);"></div><div data-color="#091e4224" data-mark-type="border" data-size="2" id="bkmrk--4" style="--custom-palette-color: var(--ds-border, #091E4224);"></div>### Time Slots

Flex permits are controlled by a grid of customizable timeslots, which are configured for each lot from the lot edit page.

The time slot section is located below the options section.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/o2Pimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/o2Pimage.png)

Time slots created by the admin are located here.

- **Name** - a user-friendly name to identify what the slot should be used for
- **Price** - the price of booking a permit for the selected hour
- **Colour** - the colour that the time cells in the week grid will be marked with when they are assigned this price

<div data-layout="wide" data-node-type="mediaSingle" data-width="900" data-width-type="pixel" id="bkmrk--7"></div>### Time-slot Creation

Click the add new button to bring up the add time slot modal.

Fill in the required fields and press save changes to save the new time slot.

[![3.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/5gK3.png)](https://opscom.wiki/uploads/images/gallery/2024-07/5gK3.png)

The time slot selection menu will reload and the saved item will appear.

The modal will also be brought up when editing the details of an existing time slot.

Once a time slot has been created, there is no way to delete it .

### Hourly Cell Grid

Below the time slot section, the hourly cell grid can be found. This is a representation of each hour within the week.

[![4e.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/4e.png)](https://opscom.wiki/uploads/images/gallery/2024-07/4e.png)

Here, each hour time slot within a week can be assigned a specific cost. When a user books a permit for a number of hours, the final price will be calculated using the prices associated to each hour selected within the booking.

Above the cell grid, several buttons can be found.

- **Clear** - will clear the grid of all filled cells
- **Fill** - will fill in the grid with the selected colour
- **Reload** - will reload the grid data stored within the database, erasing any changes that were made

### Hourly Price Assignment

To fill in the cell grid, first select one of the prices to assign to cells on the grid.

This can be done by clicking on the one of the selectable colours.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/E3Pimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/E3Pimage.png)

This will change the active colour to the colour selected, as indicated by the blue outline.

Cells on the grid can now be filled in by clicking and dragging the mouse across the cells.

[![2024-04-08_13-35-56.gif](https://opscom.wiki/uploads/images/gallery/2024-07/2024-04-08-13-35-56.gif)](https://opscom.wiki/uploads/images/gallery/2024-07/2024-04-08-13-35-56.gif)

The grid can be filled in using any number of time slots.

Note that any sections left blank (using the default option) will be set to free.

[![8.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/rU68.png)](https://opscom.wiki/uploads/images/gallery/2024-07/rU68.png)

Cell price layouts will only be saved upon clicking the update lot button.

## User-Side Permits

Once the flex permits have been filled in, they will begin to appear for sale on the user side.

On lots where flex permits are enabled, the permits page will show a preview of flex permits as a price range.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/vc9image.png)](https://opscom.wiki/uploads/images/gallery/2024-08/vc9image.png)

<div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk-flex-permit-options-">Flex permit options will now be available as a separate option to the page.</div><div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk--17"></div>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/YMAimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/YMAimage.png)

<div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk--19"></div><div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk-selecting-the-flex-o">Selecting the flex option will show the input requirements to book a permit.</div>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/WFtimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/WFtimage.png)

Flex permit inputs:

- **Date** - the day the permit is being booked for.
- **Start Time** - The time the booking will start at. 
    - Flex permits are limited to booking on the hour. They do not currently support proration, meaning if a user arrives during the middle of an hour, they must pay for the entire price of the hour.
- **Duration** - the number of hours to book the permit for. 
    - A permit can be booked for a limit of 12 hours. If the booking would go beyond the bounds of the day, the user will be required to pick a shorter duration.
- **Vehicle** - like normal for temp permits, the user can either select a vehicle on their account or enter a new plate as a guest vehicle.

<div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk--21"></div><div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk--22"></div><div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk-selecting-an-option-">Selecting an option in the date input will cause the prices for that day of the week to appear in a box to the left side of the page. </div><div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk-if-the-user-selects-">- If the user selects one of the other options after selecting flex, the flex prices box should disappear again.
- Selecting flex again should make it reappear.

</div><div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk--23"></div><div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk--24"></div><div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk--25"></div><div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk--26"></div><div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk--27"></div><div data-alt="image-20240307-201614.png" data-collection="contentId-53117828" data-context-id="53117828" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="314" data-id="fbeb8243-7c62-4b61-ba54-90c00dff3925" data-node-type="media" data-renderer-start-pos="4088" data-type="file" data-width="336" id="bkmrk--28"></div>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/X8yimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/X8yimage.png)

Selecting a different day will cause the flex prices box to reload with the new day's prices.

[![2024-08-08_16-29-39.gif](https://opscom.wiki/uploads/images/gallery/2024-08/2024-08-08-16-29-39.gif)](https://opscom.wiki/uploads/images/gallery/2024-08/2024-08-08-16-29-39.gif)

The cost of the permit will be calculated using the prices of each hour in the selected range added together.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/AUqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/AUqimage.png)

Pressing to reserve the permit, the permit will be added to the user's cart.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/22Nimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/22Nimage.png)

### Real-Time Map

On the real-time map, the flex permits range of cost will be listed under rental costs.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/0YDimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/0YDimage.png)

Clicking here to book a permit will take the user to the guest checkout page, the same place as if they had scanned a QR code to access the lot.

If enabled, the user does not need to be logged in to access this page.

In the case where a lot group is used as an icon in place of a single lot, it will also show the range on the lot groups page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/8P2image.png)](https://opscom.wiki/uploads/images/gallery/2024-08/8P2image.png)

### QR Code / Guest Checkout

Similar to the standard temp permit checkout, the flex permit prices for the day will be displayed to the left side of the page.

As guest checkout permits are intended for immediate bookings, the day and time will be limited to the current date.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/fVcimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/fVcimage.png)

Upon filling in the information, the permit cost will be calculated and the user will be able to checkout immediately.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/gN4image.png)](https://opscom.wiki/uploads/images/gallery/2024-08/gN4image.png)

Clicking on make payment, the user will be redirected to their selected payment gateway to make a payment.

<div class="notranslate" id="bkmrk--37" style="all: initial;"></div>

# Lot Passwords

### Introduction

The ability to lock lots with a password has been added. Setting a password on a lot prevents users from booking a permit in that lot unless they enter the password.

In support of event parking, this can be used to make a lot intended for an event that can only be booked from by users who have been given the password for the lot.

This can be used in combination with lot visibility settings to make a lot that can only be booked from by users given a direct link and password to the lot.

---

<div id="bkmrk-added-the-ability-to"></div>### Lot Edit Page

Passwords can be managed from the lot edit page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/lq4image.png)](https://opscom.wiki/uploads/images/gallery/2024-10/lq4image.png)

There are two settings related to lot passwords:

- **Password** - the password that must be entered to access permit booking for the lot.
- **Use Lot Password** - enables or disables the application of the password on the lot.

Even if a lot has a password set, the password input will not be enforced unless the lot has password use enabled.

Passwords cannot be enabled for a lot if there is no password set for it.

---

### View all Lots Page  


Password usage will be indicated by a lock icon beside the lot on the lot admin page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/3Llimage.png)](https://opscom.wiki/uploads/images/gallery/2024-10/3Llimage.png)

---

### Usage  


- When a lot is password-locked, users trying to access it will be forced to a password input. They will need to enter the password in order to be able to get to the permit reservation page.
- Once the password had been input, the user will not need to enter the password again for that single lot until their session data is cleared.
- This will only apply to the single lot the password was entered for. Other lots with passwords will still prompt the user for the password.
- When a lot has a password on it, a lock icon will appear next to the lot name in places where it appears, including the real-time map.
- Admins are not restricted by lot passwords on the admin-side, and will not need to enter the password to book a permit for a user.

# Violations/Citations and Appeals - OPSCOM ViolationAdmin

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Violations From Static Cameras / Mailout Violations

Violations/Infractions can be created from a report that looks at chalk records. Before this can work, ensure that OPSCOM has set your static cameras up with the necessary settings to report on the lot group and gps location of the camera. Some cameras report on more vehicle information than others. This can be helpful in the report later.

<p class="callout info">Note: If you would like to change the ticket prefix, (i.e. the TT- before the ticket in the default configuration) you will have to contact [OPSCOM support](mailto:support@ops-com.com).</p>

The next setup would be to map your Lot Groups to the appropriate Offence Location:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/dgjimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/dgjimage.png)

With this set up, logs will be available as they come in:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/jztimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/jztimage.png)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/dbSimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/dbSimage.png)

Report type will contain all available filters that we support at the time.

- No Permit &amp; Over Lot Time - This option will only list vehicles where they have no permits and the duration exceeds the lot group's free parking time.

The following is an explanation of each field.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/Pl5image.png)](https://opscom.wiki/uploads/images/gallery/2024-07/Pl5image.png)

Vehicles can appear in one of three formats. No existing vehicle record, a single vehicle record, or multiple vehicle records. They will change the violation creation screen as follows:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/1xuimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/1xuimage.png)

Clicking a row will display the violation entry form.

The entry and exit cameras will show the chalk image associated to this entry:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/doMimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/doMimage.png)

Once the details are entered, the chalk record will disappear from the list and the violation can be found by searching for it:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/4MLimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/4MLimage.png)

# Spoiling a Violation

## How to Spoil/Void a Violation

- To spoil a violation, start by searching for the violation through the **Quick Search** or **Violation Search** tool.
- Click on the **Ticket #** on the **Violation Information** page

[![2025-05-26_13-24-46.png](https://opscom.wiki/uploads/images/gallery/2025-05/knD2025-05-26-13-24-46.png)](https://opscom.wiki/uploads/images/gallery/2024-06/uh1image.png)

- Select **Edit** at the top right of the violation and change the **Spoiled** status from **Valid - not spoiled** to **Spoiled**.

[![2025-05-26_13-25-34.png](https://opscom.wiki/uploads/images/gallery/2025-05/0WK2025-05-26-13-25-34.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Vi3image.png)

- Submit the changed violation details and your ticket will now be marked as **Spoiled** the next time you go to search for it.

# Cancelling a Violation

## How to cancel a violation

1\. Hover over **Violations**, select **Search** 2. Enter the violation being cancelled into the **Search Text** field, then select **Search using only text**. In this case the violation being cancelled is **TT-10063.** 3. Click on the **Ticket Number** of the violation being cancelled

[![image.png](https://opscom.wiki/uploads/images/gallery/2026-05/scaled-1680-/qhiimage.png)](https://opscom.wiki/uploads/images/gallery/2026-05/qhiimage.png)

4\. Click on the **Edit** button

[![image.png](https://opscom.wiki/uploads/images/gallery/2026-05/scaled-1680-/2Spimage.png)](https://opscom.wiki/uploads/images/gallery/2026-05/2Spimage.png)

5\. Click on the **Show Appeals Form** link.

[![image.png](https://opscom.wiki/uploads/images/gallery/2026-05/scaled-1680-/f4Gimage.png)](https://opscom.wiki/uploads/images/gallery/2026-05/f4Gimage.png)

6\. Select **Cancelled** in the **Fine Action** field and enter the reason for the cancellation into the **Appeal Admin Comment** field.

[![image.png](https://opscom.wiki/uploads/images/gallery/2026-05/scaled-1680-/9sximage.png)](https://opscom.wiki/uploads/images/gallery/2026-05/9sximage.png)

7\. Click on **Update this Violation**  
[![image.png](https://opscom.wiki/uploads/images/gallery/2026-05/scaled-1680-/P3Zimage.png)](https://opscom.wiki/uploads/images/gallery/2026-05/P3Zimage.png)

A pop-up with show a message in the top right of your screen that the "**Violation has been updated.**"

[![image.png](https://opscom.wiki/uploads/images/gallery/2026-05/scaled-1680-/UtQimage.png)](https://opscom.wiki/uploads/images/gallery/2026-05/UtQimage.png)

# Hiding Zero Dollar Violations

1. Hover over '**System Config**' and click '**System Settings**'  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Yg9image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Yg9image.png)
2. Click '**Violations**' to open the Violations settings  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/zcjimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/zcjimage.png)
3. Enable the '**Hide Zero Dollar Fines**' checkbox to hide zero dollar violations.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/B8Fimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/B8Fimage.png)

# Search Repeat Offenders Report

## Introduction

The search repeat offenders page allows site admins to find vehicles and users on the site that have received multiple parking violations on their account.

## Navigation

To navigate to the page, look under the menu tree:

- **Violations -&gt; Search Repeat Offenders**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/image.png)](https://opscom.wiki/uploads/images/gallery/2024-07/image.png)

---

## Page Usage

The page will appear as displayed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/MtMimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/MtMimage.png)

Several options are available to narrow the search.

- **Start Date and End Date**: specifies the range in which the violations were received.
- **Ticket Category**: the category of the violation received.
- **Number of Violations**: the min number of violations the user or vehicle has received.
- **Processed Value**: categorizes violations based on their processing status.
    
    
    - - **Unprocessed**: violations that have not been processed yet.
        - **Processed**: violations that have been paid for and processed.
        - **Warning Only**: violations that were marked as a warning instead issuing a fine.
- **Unknown Users Only**: only shows violations assigned to vehicles without a known user tied to them.
- **Search By:**
    
    
    - **Vehicle/Plate**: outputs the count of violations tied to license plates. Will not include violations attached directly to a user.
    - **User/Driver**: outputs the count of violations tied to users. Includes violations attached directly to the user and any violations attached to their vehicles. Will not include violations attached to a vehicle with no assigned driver.

## Output

The grouping of the output will vary depending on whether it is selected to be output by vehicle or by user.

### By Vehicle/Plate

Grouping on the vehicle will show the number of violations on each plate, and any associated drivers of the vehicle.

### [![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/YItimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/YItimage.png)

Individual violations can be viewed by clicking on the violation count.

The warning icon next to the username will show a list of the violations associated to that user.

### By User/Driver

Grouping on the user will show the number of violations given to the user, including any violations given to vehicles the user is the driver of.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/DUuimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/DUuimage.png)Individual violations can be viewed by clicking on the violation count.

The icon next to the total violation count shows the breakdown of the total, showing the number of violations assigned to the user and the number of violations assigned to that user's vehicles.

### Exporting Results

After searching, the results can be exported in a chosen format by clicking one of the green buttons at the top right of the search results.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/52Limage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/52Limage.png)

# Restricting Payment of Violations in Court Requested Conviction (CRC) Status

1. Click **System Configuration**, **System Settings** to ensure the settings that pertain to **Collections** are set to disallow payments while violations are under the CRC status.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Jw7image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Jw7image.png)
2. Ensure that the following settings are enabled and save the settings:  
     **- Prevent Violation Payment**  
     **- Prevent Purchases**  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ipximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ipximage.png)
3. There are two permissions that deal with the treatment of payments for **CRC** items. To setup these permissions, click **System Configuration, Manage Roles**.   
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2Fgimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2Fgimage.png)
4. Select the role you wish to add these abilities to. In this example we will add them to **Primary Admin**. Click on Permissions to access the settings.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/JbHimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/JbHimage.png)
5. Under the violations Tab ensure that these two settings are enabled:  
    (A) **Pay Violations In Collections**. (<span data-colorid="mhtqj6sipd">Allows the Admin to process payments on violations that are in collections.)  
    (B) **Purchase While Outstanding** (Allows the Admin to p<span data-colorid="lgkdp7wt9t">urchase items for the user while the user has a violation that has been sent to collections. This is only necessary while **Prevent Purchases** is turned on in the settings.  
      
    </span></span>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/nY4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/nY4image.png)
    
    <span data-colorid="mhtqj6sipd"><span data-colorid="lgkdp7wt9t">  
    </span></span>
6. <span data-colorid="k2cop4nqj3"><span data-colorid="pa56epq169">The following two screens show how this functionality appears to the End User and the Admin:</span></span>  
    <span data-colorid="iyg6csqstk"><span data-colorid="v66ifo7gsx">  
    This is what the **User** will see if they have violations with the 'Sent to CRC' status. Note the notices indicating the violation has been **Sent to Collections**.  
    </span></span>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/izsimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/izsimage.png)
    
    <span data-colorid="iyg6csqstk"><span data-colorid="v66ifo7gsx">  
      
    Here is what the **Admin** sees if they have the permission to pay these violations while in collection status. <span data-colorid="anxgiu8r7u">Note the notices indicating the violation has been **Sent to Collections**.</span>  
      
      
      
    Here's the **Admin** view with <span data-colorid="vejfrteivf">the permission to pay these violations while in collection status **enabled.** Note the fact that the violation is still shown as **Sent to Collections** yet is <u>still</u> payable by the Admin.  
      
    </span></span></span>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/8RXimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/8RXimage.png)
    
    <span data-colorid="iyg6csqstk"><span data-colorid="v66ifo7gsx"><span data-colorid="vejfrteivf">  
      
    </span>In addition, if the **User** tried to pay the violation through OPSCOM Quick Pay/Guest Payments they would see the same message disallowing the payment of the violation.  
      
    </span></span>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/dvPimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/dvPimage.png)
    
    <span data-colorid="iyg6csqstk"><span data-colorid="v66ifo7gsx">  
    </span></span>

# Printing the Certificate of Parking Infraction

## Create Form 11 Template

If it already exists, the Form 11 template will be found under the Content &amp; Designs menu, in Pages and Content Blocks:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Imrimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Imrimage.png)

It will be found under the Messages tab. The System Location value is "form11":

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Ontimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Ontimage.png)

If the template doesn't already exist, it can be created by clicking "Create Page/Message". Set Page Type to "Message", and for Identifier enter "form11". (Be sure to click "Save Messaging" once done.)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/OWSimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/OWSimage.png)

## Edit Form 11

The content of the form can be edited in Pages and Content Blocks. Locate "form11" under the Messages tab and click "Edit". On this page is a text editor where the content of the form can be set. (Be sure to click "Save Messaging" once done.)

Although it's possible for admins to set Form 11 content themselves, *it's strongly recommended to request the form content from OPSCOM support*. This is because the content of Form 11 is very specific, and requires the use of shortcodes to auto-fill information such as date, plate number, fine amount, etc.

## Print Form 11

To download and print Form 11 for a violation, first find the violation on the Violation Search page and click on the violation number:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/uGqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/uGqimage.png)

Under the Action menu, click "Generate (title of form)":

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/JJuimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/JJuimage.png)

The form will be downloaded as a PDF, which can then be printed.

## Adding a Digital Signature

There is an option to add a digital signature when writing a violation on an enforcement handheld. <span class="legacy-color-text-default">When that option is enabled, the patrol is required to sign the violation on the handheld screen. </span><span class="legacy-color-text-default">When uploaded to the server, the timestamped signature is sent with the other images. </span>When using this option, the signature will also appear on Form 11 when printed. The option to use signatures on tickets can be enabled in System Settings under Violations:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/EdBimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/EdBimage.png)

When this setting is enabled, a signature tab will appear when writing a violation on a handheld:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/tM9image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/tM9image.png)

The signature will show up on Form 11:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/b24image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/b24image.png)

# MTO Annual Report

## Running the Report

To begin go to the **Violations** menu and hover over **Reports**.  
Select **MTO Report** from the drop down menu.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/FPEimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/FPEimage.png)

Enter the date range you wish to report on. In this case we are looking at the full 2020 year end report (January 1st 2020 - December 31st 2020).  
Click **Search** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2JXimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2JXimage.png)

The screen will refresh with a list of items required in the **Annual MTO Report**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/6Cnimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/6Cnimage.png)

# Collections - Flag as Sent to Collections

<p class="callout info">The "Flag as Sent to Collections" feature is used to bypass the standard notification processes for a violation that is being handled externally by a collections agency. This is useful if a person wants to go directly to trial instead of waiting and going through the entire process. Once this flag is enabled, the violation will bypass the existing NIC (Notice of Impending Charge) letter and the CRC (Certificate of Request for Court) process.</p>

## Setup &amp; Configuration

You must have the Manage Collections permission to do this. This permission can be added to your profile by your Primary Admin.

To enable this permission:

- Go to **System Configuration**, then **Admin Management**, and **Manage Roles**.
- Locate the Role you want to edit and click the **Permissions** button.
- Click the Violations tab and enable the **Manage Collections** permission.
- Click **Save Settings**.

---

## Using this Feature

1. Go to Violations and click Search.
2. Search for the violation you want to flag.
3. Click the ticket # to open the Violation Information page.
4. Select the Action drop down and click **Flag as Sent to Collections**.
5. Click Ok.

---

## <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Admins** should use the existing **Violations Notes** feature to add detailed notes to the violation. This could include the customer's request and any necessary details explaining why the ticket was placed in the Collections state.</span>
- <span style="color: rgb(22, 145, 121);">Admins with the appropriate permissions will still be able to **pay or cancel** the violation as necessary.</span>
- <span style="color: rgb(22, 145, 121);">Once a violation has successfully gone through the collections process once, it is marked as such and **cannot** re-enter the Collections process again.</span>

# Municipal Violations and Collections

## Introduction

Municipal clients located within Ontario have specific processes for violation offences to be sent through. The two relevant processes are the **<span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">POA</span></span> (Provincial Offenses Act)** and the **<span data-highlighted="true">AMPS</span> (Administrative Monetary Penalty System)**. Municipalities will prescribe to one process or the other.

<span data-highlighted="true">OPS</span>-<span data-highlighted="true">COM</span> supports most aspects of the <span data-highlighted="true">POA</span> process and is considered as a Permitted Recipient under <span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">ARIS</span></span> rules. The <span data-highlighted="true">POA</span> process is used when a violation is given to a vehicle that has no user information present within the system.

This process involves sending out vehicle data to the transportation authority (<span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">MTO</span></span>) to receive additional user information, so any outstanding violations on the vehicle can be sent to court for collections.

This article will explain the process involved in the life-cycle of a violation for one municipality in Ontario, including interactions with the Ministry of Transportation (<span data-highlighted="true">MTO</span>) and the Ontario court system.

It is important to note these violations would be issued to a vehicle by license plate number. Unless the driver is a registered user in the <span data-highlighted="true">OPS</span>-<span data-highlighted="true">COM</span> system, the actual owner of the vehicle would not be known.

---

<div class="ak-editor-panel cc-1f60buh" data-panel-type="warning" id="bkmrk--1"></div>> <span aria-label="Panel warning" class="cc-snhnyn" role="img"><svg fill="none" height="24" role="presentation" viewbox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M13.4897 4.34592L21.8561 18.8611C21.9525 19.0288 22.0021 19.2181 21.9999 19.4101C21.9977 19.6021 21.9438 19.7903 21.8435 19.9559C21.7432 20.1215 21.6001 20.2588 21.4282 20.3542C21.2563 20.4497 21.0616 20.4999 20.8636 20.5H3.13707C2.93882 20.5 2.74401 20.4498 2.57196 20.3543C2.39992 20.2588 2.25663 20.1213 2.15631 19.9556C2.05598 19.7898 2.00212 19.6015 2.00006 19.4093C1.998 19.2171 2.04782 19.0278 2.14456 18.86L10.5121 4.34592C10.6602 4.08939 10.8762 3.87577 11.1377 3.72708C11.3993 3.57838 11.6971 3.5 12.0003 3.5C12.3036 3.5 12.6013 3.57838 12.8629 3.72708C13.1245 3.87577 13.3404 4.08939 13.4885 4.34592H13.4897ZM12.0003 7.82538C11.8232 7.82537 11.6482 7.86212 11.4869 7.93317C11.3257 8.00423 11.182 8.10793 11.0656 8.2373C10.9492 8.36668 10.8627 8.51872 10.8119 8.68321C10.7611 8.8477 10.7473 9.02083 10.7713 9.19093L11.3546 13.3416C11.3754 13.4933 11.4523 13.6326 11.5711 13.7334C11.6899 13.8343 11.8424 13.8899 12.0003 13.8899C12.1582 13.8899 12.3107 13.8343 12.4295 13.7334C12.5483 13.6326 12.6253 13.4933 12.6461 13.3416L13.2293 9.19093C13.2533 9.02083 13.2395 8.8477 13.1887 8.68321C13.138 8.51872 13.0515 8.36668 12.935 8.2373C12.8186 8.10793 12.6749 8.00423 12.5137 7.93317C12.3525 7.86212 12.1774 7.82537 12.0003 7.82538V7.82538ZM12.0003 17.3369C12.3395 17.3369 12.6649 17.2062 12.9047 16.9737C13.1446 16.7412 13.2793 16.4258 13.2793 16.0969C13.2793 15.7681 13.1446 15.4527 12.9047 15.2202C12.6649 14.9877 12.3395 14.857 12.0003 14.857C11.6611 14.857 11.3358 14.9877 11.0959 15.2202C10.8561 15.4527 10.7213 15.7681 10.7213 16.0969C10.7213 16.4258 10.8561 16.7412 11.0959 16.9737C11.3358 17.2062 11.6611 17.3369 12.0003 17.3369V17.3369Z" fill="currentColor" fill-rule="evenodd"></path></svg></span> A client must be setup beforehand to use the <span data-highlighted="true">MTO</span> Lookup and the Court Requested Conviction status and workflow. This could require custom development fees to handle the client’s setup. Currently, this process is only available for use within the Ontario court system.
> 
> In addition to the <span data-highlighted="true">OPS</span>-<span data-highlighted="true">COM</span> setup, the client must work with the <span data-highlighted="true">MTO</span> to become an Authorized Requester of the <span data-highlighted="true">MTO</span> information. The process can be started by contacting [<span data-highlighted="true">ARIS</span>@ontario.ca](mailto:ARIS@ontario.ca "mailto:ARIS@ontario.ca") and requesting a <span data-highlighted="true">RAW</span> data account.
> 
> *Please contact your sales representative for more information.*

## An Example

Consider a municipal client that has the following violation life-cycle:

1. A violation is issued with **7 days** to pay during which the fine amount may be discounted.
2. On the 8th day, the fine is no longer discounted.
3. Weekly, all tickets that have reached their **15th day** of non-payment are sent to the <span data-highlighted="true">MTO</span> to do a lookup of relevant driver info.
4. The <span data-highlighted="true">MTO</span> will send a return file containing the driver information for the vehicle involved in the violation, including address and driver's license number, to be stored temporarily in the database.
    
    
    1. Notice letters can be issued to drivers who have not paid their violations. This is done using the letter report.
5. If the violation is still outstanding on **day 65** it will be sent to court and an additional court fee can be applied to the violation.
    
    
    1. A file can be generated that is compatible with the Ontario court system if upload is available. In addition, a summary file can be generated to include all cases submitted to court in a particular timeframe.
6. When the ticket has been paid, the court will send a report back to the parking manager to let them know what the outcome was. Admins can then use the information in the report process the payment on the violation within the <span data-highlighted="true">OPS</span>-<span data-highlighted="true">COM</span> system.

> #### Important Note about <span data-highlighted="true">MTO</span> Information
> 
> <span data-highlighted="true">ARIS</span> rules dictate the use of <span data-highlighted="true">MTO</span> information, requiring the information from the <span data-highlighted="true">MTO</span> is only temporarily stored within the <span data-highlighted="true">OPS</span>-<span data-highlighted="true">COM</span> system.
> 
> Once a violation has been cancelled, paid, or sent to collections, all information from the <span data-highlighted="true">MTO</span> related to the violation will be purged from the system.

## Starting the Process

The interaction with the <span data-highlighted="true">MTO</span> begins after a violation is past due.

The admin will run a weekly report to determine if there are outstanding violations in the system that have gone unpaid for 7 days after they were marked as due. This is done using the Vehicle Lookup Export page.

This page can be found by following this menu tree:

- **Violations → Collections** → **Vehicle Lookup Export**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/uhkimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/uhkimage.png)

## Vehicle Lookup Export Tool

Several search options are present on the page:

- Minimum number of violations
- Vehicle province or state
- To search by issue date or by due date
- Date range of the lookup

<div class="rich-media-item mediaSingleView-content-wrap image-wide cc-1tfd5rq" data-layout="wide" data-node-type="mediaSingle" data-renderer-start-pos="3974" data-width="900" data-width-type="pixel" id="bkmrk--3"><div class="cc-1gcobvo"></div></div>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/l2Gimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/l2Gimage.png)

Clicking on export will generate a file to be sent to the <span data-highlighted="true">MTO</span> containing the vehicle information that is additional information is being requested for.

Notice there are various formats for this export:

- **Aris Raw Data Account:** Used with an <span data-highlighted="true">ARIS</span> client using raw format lookups.
- **Aris Abstract Account:** Used with an <span data-highlighted="true">ARIS</span> client using abstract format lookups.
- **Send to Collections:** Used to send a report to a typical collections agency outside of the <span data-highlighted="true">MTO</span> process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/H9Yimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/H9Yimage.png)

A text file will be generated with the filename as SendToMTO-<span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">XX</span></span>-<span data-highlighted="true">XX</span>-<span data-highlighted="true">XX</span>.txt, with the Xs acting as placeholders for the timestamp at the time of file creation.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/CkNimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/CkNimage.png)

## <span data-highlighted="true">MTO</span> Export File

Here is a sample of what the exported text file will look like.

The file is formatted in a custom format required for the <span data-highlighted="true">MTO</span> to lookup driver information.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Bc0image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Bc0image.png)

## <span data-highlighted="true">MTO</span> Response File

The file that is returned from <span data-highlighted="true">MTO</span> Lookup will include driver information such as the registered vehicle owner's name and home address.

This information is **temporarily** stored in the <span data-highlighted="true">OPS</span>-<span data-highlighted="true">COM</span> system. As governed by <span data-highlighted="true">ARIS</span> rules, the information will be purged from the system after it is no longer needed.

The document return from the <span data-highlighted="true">MTO</span> will look like the following:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/dmlimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/dmlimage.png)

## Simulated Response File

There is an option to generate a mock version of an MTO response file using the file previously exported.

This can be done using the Third Party Simulator page, located under the menu tree:

<div class="ak-renderer-extension undefined " data-layout="default" id="bkmrk-tomahawk-options-%E2%86%92-t"><div class="ak-renderer-extension-overflow-container"><div class="css-1ozsyld ey937e10" data-fabric-macro="e63d1449-6927-45e0-aa16-783f61913522" data-macro-body="<h2>Simulated Response File</h2><p>There is an option to generate a mock version of an MTO response file using the file previously exported.</p><p>This can be done using the Third Party Simulator page, located under the menu tree:</p><ul><li><p><strong>Tomahawk Options &rarr; Third Party Simulators</strong></p></li></ul><ac:image ac:align="center" ac:layout="center" ac:original-height="242" ac:original-width="924" ac:custom-width="true" ac:alt="image-20240417-211012.png" ac:width="764"><ri:attachment ri:filename="image-20240417-211012.png" ri:version-at-save="1" /><ac:adf-mark key="border" size="2" color="#091e4224" /></ac:image><p />" data-macro-parameters="{"specialUsername":"authenticated","matchUsing":"any"}" data-testid="legacy-macro-element" style="margin: 0px; padding: 0px; white-space: normal; clear: both;"><div class="conf-macro output-block" data-hasbody="true" data-local-id="40485b31-65a2-42dc-aaa9-bf873065ca6a" data-macro-id="e63d1449-6927-45e0-aa16-783f61913522" data-macro-name="show-if">- **Tomahawk Options → Third Party Simulators**

<span class="confluence-embedded-file-wrapper image-center-wrapper confluence-embedded-manual-size">![image-20240417-211012.png](https://OPSCOM.atlassian.net/wiki/download/thumbnails/761065/image-20240417-211012.png?version=1&modificationDate=1713388215423&cacheVersion=1&api=v2&width=764&height=200)</span></div></div></div></div>## Importing the <span data-highlighted="true">MTO</span> Response File

To import the information received back from the <span data-highlighted="true">MTO</span> into the <span data-highlighted="true">OPS</span>-<span data-highlighted="true">COM</span> system, navigate to the vehicle lookup import found under the menu tree:

- **Violations → Collections** → **Vehicle Lookup Import**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Juhimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Juhimage.png)

The **Vehicle Lookup Import** file selector tool opens.

Choose the file that came back from <span data-highlighted="true">MTO</span> and navigate to the file you wish to select for import.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/aoximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/aoximage.png)

Click the **Import** button.

A confirmation message will appear in the top right of the page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/GNqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/GNqimage.png)

## Generating Notice Letters

Once the information has been imported, the data will be used to populate any missing notice letter information.

Violations that have had <span data-highlighted="true">MTO</span> information associated to them can be viewed from the Letter Report page.

After the notice letters have been printed, they must be sent to the drivers of the vehicles by mail.

## Sending to Collections

If the ticket still remains unpaid after the notice letter has been sent, it is eligible to be sent to the Ontario court system for collections.

The page can be found under the menu tree:

- **Violations → Collections** → **Send to Court**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/NmSimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/NmSimage.png)

The number of days since the violation was issued can be specified, and violations that have not been issued a notice letter can also be included.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Z9Gimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Z9Gimage.png)

An admin fee can be added to the violation on export.

Some municipalities have a fee and some do not.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2inimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2inimage.png)

The page will then generate a file to be sent to the Ontario court system, named in the format of SendToCRC-<span data-highlighted="true">XX</span>-<span data-highlighted="true">XX</span>-<span data-highlighted="true">XX</span>.txt, with the Xs acting as placeholders for the timestamp at the time of file creation.

The report generated by the system is in a format specified by the Ontario court system for processing, and must be customized for each municipality.

It will look something like this:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/OR5image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/OR5image.png)

## Client MTO Codes

For each client sending information to the MTO, there are 4 codes required by the Ontario court system that must be set up on the client’s site.

**NOTE - The client must request a RAW Data account from the MTO to use this process. This system will not work otherwise.**

Here's a reference for all the provincial forms: [https://ontariocourtforms.on.ca/en/provincial-offences-act-forms/](https://ontariocourtforms.on.ca/en/provincial-offences-act-forms/)

The provincial forms are:

<div class="ak-renderer-extension undefined " data-layout="default" id="bkmrk-case-court%3A%C2%A0starts-a"><div class="ak-renderer-extension-overflow-container"><div class="css-1ozsyld ey937e10" data-fabric-macro="155ed03f-08f1-469d-b728-ea6822f136f8" data-macro-body="<h1>Client MTO Codes</h1><p>For each client sending information to the MTO, there are 4 codes required by the Ontario court system that must be set up on the client&rsquo;s site.</p><p><strong>NOTE - The client must request a RAW Data account from the MTO to use this process. This system will not work otherwise.</strong></p><p>Here's a reference for all the provincial forms: <a href="https://ontariocourtforms.on.ca/en/provincial-offences-act-forms/" data-card-appearance="inline">https://ontariocourtforms.on.ca/en/provincial-offences-act-forms/</a> </p><p>The provincial forms are:</p><ul><li><p><strong>Case Court:</strong> starts at character 3 - a 4 digit number (Parry Sound is 3060, Perth's is 1860). This is repeated starting at character 57 and again at character 186.</p></li><li><p><strong>Case Jurisdiction:</strong> starts at character 7 - a 3 digit number (Parry Sound is 658, Perth's is 073). This is repeated starting at character 61 and again at character 190.</p></li><li><p><strong>The Agency Code:</strong> 3 alphanumeric characters followed by 3 numbers (Parry Sound is BYL390, Perth's is BYL658).</p></li><li><p><strong>Disbursement Code:</strong> 1 alphanumeric character followed by 3 numbers (Parry Sound is M525, Perth's is M658).</p></li></ul><p>To set these codes up within the site, go to System Settings and select the <strong>Collections</strong> Component.</p><p>Enter the values in the designated fields, and then click&nbsp;on save settings.</p><ac:image ac:align="center" ac:layout="wide" ac:original-height="718" ac:original-width="1046" ac:custom-width="true" ac:alt="image-20240417-204520.png" ac:width="800"><ri:attachment ri:filename="image-20240417-204520.png" ri:version-at-save="1" /><ac:adf-mark key="border" size="2" color="#091e4224" /></ac:image><p>For municipalities using the extra-detailed version of the notice letter where one notice is sent out for each violation rather than in bulk, the &quot;<strong>Include All Unpaid Violations</strong>&quot; setting must be disabled.</p><ac:image ac:align="center" ac:layout="wide" ac:original-height="620" ac:original-width="1084" ac:custom-width="true" ac:alt="image-20240417-204725.png" ac:width="800"><ri:attachment ri:filename="image-20240417-204725.png" ri:version-at-save="1" /><ac:adf-mark key="border" size="2" color="#091e4224" /></ac:image><p /><p />" data-macro-parameters="{"specialUsername":"authenticated","matchUsing":"any"}" data-testid="legacy-macro-element" style="margin: 0px; padding: 0px; white-space: normal; clear: both;"><div class="conf-macro output-block" data-hasbody="true" data-local-id="42879ff2-a51b-47db-949c-b4295191ca87" data-macro-id="155ed03f-08f1-469d-b728-ea6822f136f8" data-macro-name="show-if">- **Case Court:** starts at character 3 - a 4 digit number (Parry Sound is 3060, Perth's is 1860). This is repeated starting at character 57 and again at character 186.
- **Case Jurisdiction:** starts at character 7 - a 3 digit number (Parry Sound is 658, Perth's is 073). This is repeated starting at character 61 and again at character 190.
- **The Agency Code:** 3 alphanumeric characters followed by 3 numbers (Parry Sound is BYL390, Perth's is BYL658).
- **Disbursement Code:** 1 alphanumeric character followed by 3 numbers (Parry Sound is M525, Perth's is M658).

</div></div></div></div>To set these codes up within the site, go to System Settings and select the **Collections** Component.

Enter the values in the designated fields, and then click on save settings.

<div class="ak-renderer-extension undefined " data-layout="default" id="bkmrk--17"><div class="ak-renderer-extension-overflow-container"><div class="css-1ozsyld ey937e10" data-fabric-macro="155ed03f-08f1-469d-b728-ea6822f136f8" data-macro-body="<h1>Client MTO Codes</h1><p>For each client sending information to the MTO, there are 4 codes required by the Ontario court system that must be set up on the client&rsquo;s site.</p><p><strong>NOTE - The client must request a RAW Data account from the MTO to use this process. This system will not work otherwise.</strong></p><p>Here's a reference for all the provincial forms: <a href="https://ontariocourtforms.on.ca/en/provincial-offences-act-forms/" data-card-appearance="inline">https://ontariocourtforms.on.ca/en/provincial-offences-act-forms/</a> </p><p>The provincial forms are:</p><ul><li><p><strong>Case Court:</strong> starts at character 3 - a 4 digit number (Parry Sound is 3060, Perth's is 1860). This is repeated starting at character 57 and again at character 186.</p></li><li><p><strong>Case Jurisdiction:</strong> starts at character 7 - a 3 digit number (Parry Sound is 658, Perth's is 073). This is repeated starting at character 61 and again at character 190.</p></li><li><p><strong>The Agency Code:</strong> 3 alphanumeric characters followed by 3 numbers (Parry Sound is BYL390, Perth's is BYL658).</p></li><li><p><strong>Disbursement Code:</strong> 1 alphanumeric character followed by 3 numbers (Parry Sound is M525, Perth's is M658).</p></li></ul><p>To set these codes up within the site, go to System Settings and select the <strong>Collections</strong> Component.</p><p>Enter the values in the designated fields, and then click&nbsp;on save settings.</p><ac:image ac:align="center" ac:layout="wide" ac:original-height="718" ac:original-width="1046" ac:custom-width="true" ac:alt="image-20240417-204520.png" ac:width="800"><ri:attachment ri:filename="image-20240417-204520.png" ri:version-at-save="1" /><ac:adf-mark key="border" size="2" color="#091e4224" /></ac:image><p>For municipalities using the extra-detailed version of the notice letter where one notice is sent out for each violation rather than in bulk, the &quot;<strong>Include All Unpaid Violations</strong>&quot; setting must be disabled.</p><ac:image ac:align="center" ac:layout="wide" ac:original-height="620" ac:original-width="1084" ac:custom-width="true" ac:alt="image-20240417-204725.png" ac:width="800"><ri:attachment ri:filename="image-20240417-204725.png" ri:version-at-save="1" /><ac:adf-mark key="border" size="2" color="#091e4224" /></ac:image><p /><p />" data-macro-parameters="{"specialUsername":"authenticated","matchUsing":"any"}" data-testid="legacy-macro-element" style="margin: 0px; padding: 0px; white-space: normal; clear: both;"><div class="conf-macro output-block" data-hasbody="true" data-local-id="42879ff2-a51b-47db-949c-b4295191ca87" data-macro-id="155ed03f-08f1-469d-b728-ea6822f136f8" data-macro-name="show-if"><span class="confluence-embedded-file-wrapper image-center-wrapper confluence-embedded-manual-size">![image-20240417-204520.png](https://OPSCOM.atlassian.net/wiki/download/thumbnails/761065/image-20240417-204520.png?version=1&modificationDate=1713386721346&cacheVersion=1&api=v2&width=800&height=549)</span></div></div></div></div>For municipalities using the extra-detailed version of the notice letter where one notice is sent out for each violation rather than in bulk, the "**Include All Unpaid Violations**" setting must be disabled.

<div class="ak-renderer-extension undefined " data-layout="default" id="bkmrk--18"><div class="ak-renderer-extension-overflow-container"><div class="css-1ozsyld ey937e10" data-fabric-macro="155ed03f-08f1-469d-b728-ea6822f136f8" data-macro-body="<h1>Client MTO Codes</h1><p>For each client sending information to the MTO, there are 4 codes required by the Ontario court system that must be set up on the client&rsquo;s site.</p><p><strong>NOTE - The client must request a RAW Data account from the MTO to use this process. This system will not work otherwise.</strong></p><p>Here's a reference for all the provincial forms: <a href="https://ontariocourtforms.on.ca/en/provincial-offences-act-forms/" data-card-appearance="inline">https://ontariocourtforms.on.ca/en/provincial-offences-act-forms/</a> </p><p>The provincial forms are:</p><ul><li><p><strong>Case Court:</strong> starts at character 3 - a 4 digit number (Parry Sound is 3060, Perth's is 1860). This is repeated starting at character 57 and again at character 186.</p></li><li><p><strong>Case Jurisdiction:</strong> starts at character 7 - a 3 digit number (Parry Sound is 658, Perth's is 073). This is repeated starting at character 61 and again at character 190.</p></li><li><p><strong>The Agency Code:</strong> 3 alphanumeric characters followed by 3 numbers (Parry Sound is BYL390, Perth's is BYL658).</p></li><li><p><strong>Disbursement Code:</strong> 1 alphanumeric character followed by 3 numbers (Parry Sound is M525, Perth's is M658).</p></li></ul><p>To set these codes up within the site, go to System Settings and select the <strong>Collections</strong> Component.</p><p>Enter the values in the designated fields, and then click&nbsp;on save settings.</p><ac:image ac:align="center" ac:layout="wide" ac:original-height="718" ac:original-width="1046" ac:custom-width="true" ac:alt="image-20240417-204520.png" ac:width="800"><ri:attachment ri:filename="image-20240417-204520.png" ri:version-at-save="1" /><ac:adf-mark key="border" size="2" color="#091e4224" /></ac:image><p>For municipalities using the extra-detailed version of the notice letter where one notice is sent out for each violation rather than in bulk, the &quot;<strong>Include All Unpaid Violations</strong>&quot; setting must be disabled.</p><ac:image ac:align="center" ac:layout="wide" ac:original-height="620" ac:original-width="1084" ac:custom-width="true" ac:alt="image-20240417-204725.png" ac:width="800"><ri:attachment ri:filename="image-20240417-204725.png" ri:version-at-save="1" /><ac:adf-mark key="border" size="2" color="#091e4224" /></ac:image><p /><p />" data-macro-parameters="{"specialUsername":"authenticated","matchUsing":"any"}" data-testid="legacy-macro-element" style="margin: 0px; padding: 0px; white-space: normal; clear: both;"><div class="conf-macro output-block" data-hasbody="true" data-local-id="42879ff2-a51b-47db-949c-b4295191ca87" data-macro-id="155ed03f-08f1-469d-b728-ea6822f136f8" data-macro-name="show-if"><span class="confluence-embedded-file-wrapper image-center-wrapper confluence-embedded-manual-size">![image-20240417-204725.png](https://OPSCOM.atlassian.net/wiki/download/thumbnails/761065/image-20240417-204725.png?version=1&modificationDate=1713386846113&cacheVersion=1&api=v2&width=800&height=457)</span></div></div></div></div>## Generating the Ontario Court Report

A file can be generated and exported to Excel, containing a summary of all violations being sent to court in a particular time frame.

The page can be found under the menu tree:

- **Violations → Collections** → **Sent to Court Report**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/9nqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/9nqimage.png)

This will open the Court Requested Conviction - Already Sent Report.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/kiHimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/kiHimage.png)

Clicking on export will download an Excel file to the browser.

A copy can be printed to bring to court on the day of the hearings.

It is exported in the format recommended by the courts:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/m53image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/m53image.png)

## Court Requested Conviction Fee

If a conviction fee was added on to the violations sent to court, it can be viewed when looking at the violation’s info page.

A record for the Court Requested Conviction (<span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">CRC</span></span>) fee will have been added.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xNpimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xNpimage.png)

## Flagging Paid Records

When a report is received back from the court indicating a violation was paid, it must be flagged in the system as being paid.

The report to flag as paid is located under the collections menu, within the menu tree:

- **Violations → Collections** → **Flag as Paid by Court**
    
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/gVyimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/gVyimage.png)

<div class="rich-media-item mediaSingleView-content-wrap image-center cc-1x0gol4" data-layout="center" data-node-type="mediaSingle" data-renderer-start-pos="9687" data-width="600" data-width-type="pixel" id="bkmrk-open-image-20240416--5"><div class="cc-hpjfjk"></div></div>Enter a date range and press the search button.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/eZgimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/eZgimage.png)

A list of the violations that have been sent to court will be returned by the page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/H3himage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/H3himage.png)

Click **Flag as paid** to process all selected violations to be marked as paid.

Violations flagged as paid will also appear on the Daily Processed Report with a payment type of paid by court.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/4P5image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/4P5image.png)

Additionally, when looking at the vehicle information for this violation, the <span data-highlighted="true">MTO</span> information will have been purged from the system.

Note the vehicle shows there are no associated drivers.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/EzXimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/EzXimage.png)

# Managing Violation/Citation Appeals

<p class="callout info">The **Appeals Report** in OPSCOM provides administrators with a centralized view to review, manage, and action user appeals against violations. This feature allows for detailed examination of appeal information, recording decisions (uphold, reduce, cancel), adding comments, and notifying appellants, ensuring a fair and transparent appeal process.</p>

### Setup &amp; Configuration

##### <span style="text-decoration: underline;">System Settings</span>

Before you can process Appeals, you must have this module enabled.

<p class="callout warning">After enabling the appeals module, you need to decide whether or not you want to enable ***Reset Appeal on Association.*** This setting will allow users who have a **violation associated to their vehicle,** but have not made an **account**, the same amount of time to appeal a violation as a user who already had their account configured. Once they create and associate their account to the vehicle, with this setting enabled, the appeal time frame will be reset, and the user will have the amount of days specified under **Appeal days** to appeal the violation, **from the date they associated the account.**</p>

1. Hover over **System Configuration**, and click **System Settings.**
2. On the **Violations** tab, ensure the **Enable Appeals Module** setting is enabled. If it is not, please contact <support@ops-com.com>.
3. There are a number of settings you can use to help manage appeals once this module is enabled: 
    - You can choose the number of days a user has to appeal a violation in the **Appeal Days** box.
    - In the **Appeal Notification Email** box, enter the email address you would like to receive notifications of new appeals to.
    - In the **Automated Notification Email** box, enter the email address you would like automated reports sent to.
    - **Enable Adjustments** should be toggled on if you want Fines to be adjusted without going through the Appeals process.
    - If you wish to allow appeals through Fax or Email you should enable the **Enable Fax for Appeal Format** or **Enable Email for Appeal format** checkboxes. These appeals will be handled outside of OPSCOM.
    - **Remove Discount when Appeal Made** should be enabled if you want to disallow the discount once an appeal has been made.
    - **Enable Appeal Evidence Uploads** should be enabled if you want users to be able to submit PDFs or PNGs as evidence for their appeals.
    - **Reset Appeal on Association** should be enabled if you want your users to get the specified appeal time reset on account association, if they hadn't had the chance to make their account yet.

##### <span style="text-decoration: underline;">Email Templates</span>

1. Hover over **System Configuration,** then **Templates &amp; Design,** and click **Email Templates**.
2. Follow the [steps in this wiki article](https://opscom.wiki/books/setup-configuration-for-admins/page/email-templates) to setup the Appeal Decision email template. This is the template that will be used to communicate to the Appellant your decision.

---

### Using this Feature

##### <span style="text-decoration: underline;">Accessing Appeal Details</span>

The **Appeals Report** page allows you to access detailed appeal information and take action on each submitted appeal.

1. Hover over **Violations,** then **Appeals,** and click **Appeals Report**.
2. On the **Appeals Report** page, search for Appeals you wish to review.
3. Click **View Info** beside the person's name to access the full details of that appeal. The **User Appeal History** screen displays all information related to the appeal, including user history, and user/vehicle details.

##### <span style="text-decoration: underline;">Actioning an Appeal</span>

Here, you can make a decision on the appeal:

1. Locate the **Appeal Management** section.
2. Choose one of the following options under **Action Taken**: 
    - **Uphold**: The appeal is denied, and the original fine amount remains.
    - **Reduce Violation**: The appeal is partially granted. A new field will appear allowing you to enter a new, reduced fine amount.
    - **Cancel Violation**: The appeal is fully granted, and the violation is voided.
3. In the **Comments to Send to Appellant** box, enter your detailed comments explaining your decision regarding the appeal.
4. Click the **Submit** button when finished to process the appeal. You will see a message indicating the appeal has been processed.
5. The system will automatically email the user with your decision using the **Appeal Decision** email template you setup.

##### <span style="text-decoration: underline;">Alternative Method: Actioning Appeals Directly from Violation Information</span>

Administrators can also manage appeals directly from the **Violation Information** page. While administrators can make changes to basic violation information, remember that once a user pays for the violation, the primary comments fields become locked. For further comments, administrators must use the **Violation Notes** section.

1. Access the **Violation Information** page for a specific ticket (e.g., by clicking the ticket number from the Appeals Report or searching for the violation).
2. Click **Edit**.
3. Click the text **Ticket has not been appealed. Show appeals form** (highlighted in <span style="color: rgb(53, 152, 219);">**Blue**</span>) to reveal the Appeals section.
4. The **Appeals Area** fields are: 
    - **Ticket Appealed**: Displays the date the appeal was filed and how it was filed (e.g., "Online Appeal").
    - **Fine Action**: Choose from **Upheld**, **Reduced**, or **Cancelled**.
    - **Offense Value**: This amount can be manually edited if **Reduced** on appeal. It will automatically be reduced to `0.00` if **Cancelled**. You can also edit the Offence Value directly.
    - **Appeal Reason**: The reason provided by the user for launching the appeal. This field can be viewed by the user.
    - **Appeal Admin Comment**: This field is for **private** appeal notes that are **not viewable by the user**. Use this for internal administrative comments.
5. Change the **Actioned per:** field by selecting the Admin account making the changes from the picker.
6. Click **Update this Violation**. A message will appear confirming that the violation has been updated.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Timely Review**: Process appeals promptly to ensure fairness and maintain a good relationship with users.</span>
- <span style="color: rgb(22, 145, 121);">**Clear Communication**: Ensure your "Comments to Send to Appellant" are clear, concise, and professional, explaining the decision effectively.</span>
- <span style="color: rgb(22, 145, 121);">**Internal vs. External Comments**: Differentiate between **Comments to Send to Appellant** (public) and **Appeal Admin Comment** (private) to maintain appropriate communication and internal notes.</span>
- <span style="color: rgb(22, 145, 121);">**Consistency**: Apply appeal decisions consistently according to your organization's policies.</span>
- <span style="color: rgb(22, 145, 121);">**Reporting**: The Appeals Report provides valuable data for analyzing appeal trends, common reasons for appeals, and the outcome of appeal decisions. Use this information to inform future policy adjustments.</span>
- <span style="color: rgb(22, 145, 121);">**Payment Lock**: Be aware that once a violation is paid, its comments section becomes locked, necessitating the use of **Violation Notes** for any subsequent administrative comments.</span>

---

### <span style="color: rgb(0, 0, 0);">Related Video</span>

<span data-colorid="d38qzqtgsl"><iframe class="youtube-player conf-macro output-block" data-hasbody="false" data-macro-id="8ea27a72-149a-4b44-98e2-f86788a00c8a" data-macro-name="widget" frameborder="0" height="310" src="https://www.youtube.com/embed/Zodi8a4C94M?wmode=opaque" style="width: 620px; height: 310px;" width="620"></iframe>

</span>

# Edit a Violation

## Searching for the Violation

Follow the steps to search for a violation - Search for a Violation as an Administrator

At the bottom of the **Violation Search** <span data-colorid="d400hvhhqu">screen, the returned records will be displayed.   
  
</span>

<span data-colorid="wsyprxx5nb">Getting to the Violation Information</span>

<span data-colorid="v8jpqfc9gw">Click the **TICKET#** to open the **Violation Information** window.   
</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/WjHimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/WjHimage.png)

<span data-colorid="v8jpqfc9gw">  
</span>

A new window will appear with the **Violation Information.** You can edit the violation from the **Edit** button at the top right, or by using the **Action** dropdown menu.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/MSnimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/MSnimage.png)

You will be taken to the Edit Violation Information window.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/3rCimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/3rCimage.png)

## <span data-colorid="nhys0e6typ">Editing the Violation and Important Information</span>

IMPORTANT

<span class="legacy-color-text-orange1">**APPEALS GRANTED, REDUCED OR CANCELLED TICKETS CANNOT BE EDITED AGAIN AND ARE NO LONGER ELIGIBLE FOR DISCOUNTS.**</span>

<span class="legacy-color-text-orange1">**Violation Notes can be used for further comments. If the ticket has been appealed and the user goes to a higher power to have the ticket overturned, then you can edit the ticket and change it to a warning this will keep the information and change it to a zero value and complete the processing. This will also keep the history so that the Admin will still know that they had a ticket in the past. A comment can be added to the warning to further explain**</span>

<span class="conf-macro output-inline" data-hasbody="true" data-macro-id="f9aba6c0-c27b-413f-a0dd-6b8a6717d83d" data-macro-name="excerpt"><span data-colorid="udgpzn7i8s">Administrators can make changes to basic information and deal with appeals for this Violation however once a user pays for the violation the comments are locked and admins must use the **Violation Notes** for further comments. Simply click the **Ticket has not been appealed. Show appeals form** text to get the appeal information. </span></span>

<span data-colorid="mza2j2a34y">Highlighted in yellow is the Appeals section. The different fields in the 'Appeals Area' are explained below:</span>

<span data-colorid="o62ncr3lof"><span class="legacy-color-text-orange1">**Ticket Appealed -** </span>This is the date in the first picker and how the appeal was filed in the second picker.</span>

<span data-colorid="y8m0x87g1l">**<span class="legacy-color-text-orange1">Fine Action -</span>** Choose from Upheld, Reduced or Cancelled</span>

<span data-colorid="ia6rl9naae">**<span class="legacy-color-text-orange1">Offense Value -</span>** The amount can be manually edited if Reduced on appeal but will automatically be reduced to 0.00 if Cancelled. You can also edit the Offence Value directly.</span>

<span data-colorid="r2ktjqmu1t">**<span class="legacy-color-text-orange1">Appeal Reason -</span>** The reason for launching the appeal can be recorded here. This field can be viewed by the user.</span>

<span data-colorid="o3g217k0ce">**<span class="legacy-color-text-orange1">Appeal Admin Comment -</span>** This is for private appeal notes. These notes are not viewable by the user.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2VUimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2VUimage.png)

<span data-colorid="dyhv02wf8s">  
</span>

<span data-colorid="fb8nw47fif">Change the Actioned per: field by selecting the Admin account making the changes from the picker.</span>

<span data-colorid="c9egpeounq">Click **Update this Violation** and a message will appear letting you know that the violation has been updated.   
</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/A0Qimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/A0Qimage.png)

<span data-colorid="c9egpeounq">  
</span>

<span data-colorid="o7qjbwdx7o"><iframe class="youtube-player conf-macro output-block" data-hasbody="false" data-macro-id="ecccb9f1-11a7-4623-8b73-f5a3cbb66986" data-macro-name="widget" frameborder="0" height="292" src="https://www.youtube.com/embed/Zodi8a4C94M?wmode=opaque" style="width: 589px; height: 292px;" width="589"></iframe>

</span>

# Paying a Violation

1. Click **Violations** then **Search**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/svPimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/svPimage.png)

2.The **Violation Search** screen displays. Enter the ***violation number*** in the Search Text field.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/yFyimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/yFyimage.png)

In this case we are looking for Ticket Numeber 10-01004

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/vFFimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/vFFimage.png)

3\. In the search results. click on the ***ticket number*** to see the **Violation Information.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/M9Jimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/M9Jimage.png)

4\. From the Violation information window click '**Make Payment'**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Lddimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Lddimage.png)

5\. The **Payment Due screen** for the user's profile will display. Note: If there are more than one item to be paid the Admin can select by checkbox the items the user wishes to pay.

6\. Click **'Proceed to Payment.'**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/jhiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/jhiimage.png)

7\. The screen will refresh with the specific purchase information you requested. Select the payment type you wish to process the item with. In our case we are processing a cash transaction.

8\. Click **Submit Payment Information**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/9Myimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/9Myimage.png)

9\. The screen will refresh with a confirmation screen. Click **'Confirm Payment Information**' to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/VZjimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/VZjimage.png)

10\. The **Transaction Details** window opens. This will list the item/s being paid for. Click **'Process Manually'** to complete the transaction. You may also choose **'Cancel Transaction'** to back out of this action.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/j32image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/j32image.png)

11\. The system will process the payment and return to the **Transaction Details** page. There are several pieces of information that can be seen here.

- The confirmation number of the transaction
- The violation information (User's Name, Amount of the fine, The date Submitted, Comments and Payment Type)
- The Date Processed and the name of the Admin user who processed the payment

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Vpgimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Vpgimage.png)

Once the payment has been made you can see in the user's history that the violation has been paid and marked processed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/SKyimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/SKyimage.png)

# Search for a Violation

To search for violations hover over the **Violations** icon and click **Search.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Wmbimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Wmbimage.png)

The **Violation Search** screen is displayed. Type the plate number or violation you want to search for and click the **Search using only text** button. Ticket numbers are composed of two parts, the first part (shown in black below) is the ticket number, and the second part (shown in blue) is the pin number. Admins can search using only the first part, but for security reasons, users must enter both parts of the ticket number to lookup their ticket. **3-001005-<span style="color: rgb(53, 152, 219);">11.</span>**

You can also **Search with text and date range** if you want to narrow down the search parameters to a specific date range. As you can see below, there are a number of search parameters you can choose from to further enhance your search results.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Esfimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Esfimage.png)

At the bottom of the '**Violation Search'** <span data-colorid="dufn3mc8oh">screen, the returned records will be displayed.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Fvximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Fvximage.png)

4\. Click the **Ticket Number** to open the '**Violation Information**' window. Click '**Edit/Update**' to display the '**Edit Violation Information'** screen to make changes if required. From this window, you can also link the Violation to an incident if you have the Incident Module available. Alternatively, you can make a payment or add Notes to the Violation.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/JIKimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/JIKimage.png)

### Searching By Time Frame

1. It is also possible to search for violations using a time frame filter. In our example here we are searching for any violation written between the hours of 4:00pm and 8:00pm on February 27th.  
    To access the time setting click on "with time" beside the date field.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/pqIimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/pqIimage.png)
    
      
    This will bring up a an interface where you can chose both date and time:  
    In this example for the start time we are selecting Feb. 27th at 4:00pm (1600 hours).  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/q17image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/q17image.png)
2. Set the up to and including date and time in a similar fashion. Note that the time blocks are in one hour segments so to choose 8:00pm you would need to select hour 19 which would include 7:00 to 7:59 and appear in the date and time field as 19:59 (see above)  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/WqSimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/WqSimage.png)
3. By using this filtering method the search will return only violations that were issued between 4:00PM and 7:59pm on February 27th,
    
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/aBvimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/aBvimage.png)

# Configure Violations to a Person

#### <span data-colorid="tith6y8yee">Setting up Violation Entries </span>

Before you can issue violations you must enable **Link violations to users** in System Settings, Violations before issuing violations by person or vehicle.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/KKNimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/KKNimage.png)

## Managing Ticket Categories

Hover over **Admin Options**, select **Violations**, then **Manage Ticket Categories**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/DGIimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/DGIimage.png)

Select the Ticket Category that is being updated to allow users to receive violations, in this example Municipal is being selected

OPSCOM provides the ability to issue violations directly against an individual person rather than a vehicle. These types of offenses could include violations for smoking, alcohol-related offenses, personal conduct, etc. When configuring such a category, simply select **Users** only for the **Violation Applies To** setting.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/oyuimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/oyuimage.png)

Select Users in the **Violation Applies To** section

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/060image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/060image.png)

Now when entering a violation of this offence type it will be possible to apply the violation to a person.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/FTlimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/FTlimage.png)

# Creating a Violation on the Admin Portal

<p class="callout info">**Manual Violation Entry** in OPSCOM allows administrators to record violations directly into the system via the web interface. This feature is crucial for digitally logging hand-written tickets, or citations created with a laptop instead of a handheld device, ensuring all violation data is centralized for tracking, reporting, and court purposes.</p>

### Setup &amp; Configuration

There are a few settings that relate to Violations issued from the Admin Portal and not on handheld devices. To access these settings:

1. Hover over **System Configuration**, and click **System Settings**.
2. On the Violations tab, locate the **Prefix to go in Front of Ticket Number** setting. If you want to easily differentiate between tickets created on the Admin portal and tickets created on the Handheld devices you can set a prefix here. By default it is TT.
3. If you wish to have tickets **Auto Generated**, you can set the **Next Number for Printing** setting as well.
4. For Tickets that are issued on Car laptops through the Admin Portal, there is a setting that show **Drivers License on Tickets** if you wish that to print.
5. **Enable the Signature Required on Tickets** setting if you want there to be an area to include a signature.
6. The Print settings for tickets issued via a laptop are included in the **Printable Area for Tickets** section.

### Using this Feature

<p class="callout info">Offence types can apply to a Vehicle, a Person or both. [Refer to this wiki article](https://opscom.wiki/books/setup-configuration-for-admins/page/ticket-offence-items) for information about setting up your Offence Type items.</p>

##### <span style="text-decoration: underline;">Enter a Violation for a Vehicle</span>

1. Hover over **Violations**, and click **Violation Entry.** The **Enter Basic Violation Information** screen provides several fields and options to detail the violation.
2. Enter all known information into the provided fields: 
    - **Ticket Writer** - Admin user who is issuing the ticket.
    - **Ticket Number**, if **Auto Generated** is enabled, ticket numbers will be **automatically generated** by the system.
    - [**Ticket Category**](https://opscom.wiki/books/setup-configuration-for-admins/page/ticket-categories) from the dropdown list.
3. Click the Toggle More Options button to show: 
    - **Spoiled**: This is used to **cancel a manual ticket**. Enabling this allows incrementally numbered paper violations to be accounted for even if they are not issued (e.g., if a physical ticket was ruined).
    - **Warning**: All violations can now be issued as a **warning** by enabling this checkbox. You no longer need to pick "Warning" as a separate Ticket Type.
    - **Towing**: if there is a towing charge you would enter the dollar amount here.
4. **Search Vehicles**: Click the **Search Vehicles** button to find vehicle information using the license plate or VIN number. 
    - From the search results, you can: 
        - Click the **Plate number** to select and associate that vehicle with the violation.
        - Click the **Edit** button to edit the vehicle details if needed.
        - Click the **Permit icon** to view the permit details for the vehicle.
        - Click the **Red Flag icon** to view Alarms related to this individual. 
            - <p class="callout warning">(This is only available if the Alarms feature is enabled).</p>
        - Click the **Red Alerts button** to see Incident Alerts associated with this individual. 
            - <p class="callout warning">(This is only available if the Incidents feature is turned on).</p>
    - If the vehicle does not exist in the system, you will have the option to **add a new vehicle**. This is crucial for logging hard-copy or anonymous tickets.
5. Enter the [**Location**](https://opscom.wiki/books/setup-configuration-for-admins/page/locations) from the dropdown list, the **Offences** you are issuing, the **Comments** if any can also be added.
6. Add any pictures as evidence by using the **Attachments** button.
7. After selecting the correct fields and associating a vehicle/person, click the **Record this Violation** button.
8. On the next screen, confirm your violation details by clicking the Record this Violation button, or click the back button on the browser to make changes.
9. Once you have submitted the violation, the **Violation Entry Complete** screen will appear. From here, you have options to:
    
    
    - **Print**: Print a copy of the violation.
    - **View**: View the newly entered violation's details.
    - **Search Violations**: Navigate to the Violation Search page to find other violations.
    - **Search Recent Violations:** Recent tickets you have entered will show up here.
    - **Enter Another violation**

**[![image.png](https://opscom.wiki/uploads/images/gallery/2025-06/scaled-1680-/tQlimage.png)](https://opscom.wiki/uploads/images/gallery/2025-06/tQlimage.png)**

##### <span style="text-decoration: underline;">Enter a Violation for a Person</span>

1. Follow steps 1-3 as above.
2. **Search Person**: Enable the **Failed to Identify** checkbox if the person refuses to give you their ID and to identify themselves. If you do have User details, click the **Search Users** button to find the user by Name, Student or Employee number, or Drivers License. 
    - From the search results, you can: 
        - Click the **Select** button associate that user with the violation.
        - Click the **Pencil icon** to edit the user details if needed.
        - Click the **Permit icon** to view the permit details for the vehicle.
        - Click the **Red Flag icon** to view Alarms related to this individual. 
            - <p class="callout warning">(This is only available if the Alarms feature is enabled).</p>
        - Click the **Red Alerts button** to see Incident Alerts associated with this individual. 
            - <p class="callout warning">(This is only available if the Incidents feature is turned on).</p>
    - If the user does not exist in the system, you will have the option to **add a new user**.
3. Follow steps 5-9 to record this violation

<p class="callout warning">Some Offence types will require both a vehicle and a person to be added. </p>

##### <span style="text-decoration: underline;">Manually Entering Hard Copy or Anonymous Tickets</span>

The manual violation entry process allows for entering tickets that do not have an associated user profile or are hard-copy tickets.

- By searching for a vehicle that does not yet exist in the system, you can write an **anonymous ticket** to that plate or transcribe details from **hard-copied tickets** that have no linked user.
- The system typically allows users to navigate to the login screen and pay for such tickets using [**OPSCOM Quick Pay/Guest Payments**](https://opscom.wiki/books/OPSCOM-user-portal/page/quick-easy-guest-payments) without needing to log in.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Accuracy is Paramount**: When manually entering violations, ensure all information (plate, location, date, time, offence, fine) is precisely transcribed from the hard copy or incident details to maintain data integrity for tracking and court purposes.</span>
- <span style="color: rgb(22, 145, 121);">**Utilize "Spoiled" Option**: If you are using pre-numbered paper tickets, consistently use the **Spoiled** checkbox in OPSCOM for any physical tickets that were not issued, to maintain an accurate audit trail of all ticket numbers.</span>
- <span style="color: rgb(22, 145, 121);">**Leverage Warning Feature**: Use the **Warning** checkbox to issue non-fine warnings, which can be useful for educating parkers or for first-time offenders.</span>
- <span style="color: rgb(22, 145, 121);">**Vehicle vs. Person Violations**: Understand when to apply a violation to a **Vehicle** versus a **Person** based on the nature of the offence and your organizational policies.</span>
- <span style="color: rgb(22, 145, 121);">**Comprehensive Linking**: Ensure all relevant photos and documents from your PC are uploaded and linked to the digital violation record for a complete court-ready package.</span>
- <span style="color: rgb(22, 145, 121);">**Training**: Train staff thoroughly on the manual entry process, especially regarding correct data fields, vehicle/person selection, and the use of "Spoiled" and "Warning" features.</span>

# Security PIN on Violations - How is it used

## The Ticket PIN

  
The ***additional dash*** and ***2 digits*** at the end of the violations are known as a "**Ticket Security PIN**".  
It may look like it's part of the ticket number, but it's not. It's only used as a password for the ticket when appealing it.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Eb0image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Eb0image.png)

As an example when creating a violation, it appeared as **TT-10016-8T** The actual internal ticket number is TT-10016-8T, same format as it has always been. If you search violation TT-10016 in violation search it will appear as TT-10016.  
Additionally, if someone did type in the ticket number and PIN (TT-10016-8T) it would return the same ticket.

This means the reports in the FTP file, for example, will only reference TT-10016 as the ticket number, not the additional -8T.

Additionally, the code that generates the FTP files isn't going to change/add the pin.

FTP reports will remain unchanged by the addition of the violation PIN. No PIN will be shown in the mailed out the violation.

The PIN is only used when appealing tickets if the user isn't logged in. As an example, you can see the "**Lookup your** **Ticket**" box on the login screen here.   
The PIN is used in that box to give some protection from public users just looking up sequential ticket numbers.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ICgimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ICgimage.png)

Click on the box that says "**Lookup your** **Ticket**". You should now see the following screen. Enter in the ticket number and PIN.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/W7timage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/W7timage.png)

Once you click check you will be presented with a screen that allows you to appeal or pay the ticket.  
Notice when the record of the ticket is found it does not include the PIN.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/OXHimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/OXHimage.png)

## Removing the Pin

1. If you wish to remove the **PIN** from the printed ticket, this can be done from the **System Settings** located under the **System Config** tab.   
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Lfpimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Lfpimage.png)
2. Look for **Violations** in the list of components on the left:  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/KGgimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/KGgimage.png)
3. Click on **Violations** to view and edit the settings. By default the setting for including a random PIN number to the ticket number when printed is enabled.   
    To remove the PIN, ensure that the **Include Random PIN on Handheld Tickets** box is toggled off.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xYBimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xYBimage.png)

# Ticket Warnings Explained

Below is, a **sample of a warning ticket, a sample of an actual violation ticket** and a **sample of the back of a ticket/warning** provided by the OPSCOM software.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/bjXimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/bjXimage.png)

## Explanation of the Front of the Ticket/Warning

**Ticket Number** - This is a system assigned number that identifies each individual violation/warning.

**Date** - This is the date that the violation/warning was issued on.

**Ticket Type** - This identifies the type of violation that occurred (broad range category).

**License Plate** - This is the license plate number for the vehicle that incurred the violation.

**Province** - This is the province that the license plate is issued in.

**Offense Type** - This identifies the specific violation that occurred.

**Location** - This identifies the location where the violation occurred.

**Writer** - This is a system assigned number that identifies the enforcement officer that issued the violation. Each enforcement officer has their own unique number and can be verified by administrators. The writer is identified by a unique identifier to provide security to the enforcement officer. If you require more information about the ticket writer you can search the violation on the admin side and get an actual name for the person who wrote the ticket.

**Fine** - This is the amount owed for the particular violation. Note, on the warning ticket the amount is followed by "\*Warning". This indicates that the amount on the ticket is not owing, but this is the amount that would be due if a ticket for the same violation was issued.

**Towing** - This is the amount due if the vehicle that incurred the violation had to be towed.

**Comments** - This section includes any additional notes that the enforcement officer wants to include.

## Explanation of the Back of the Ticket/Warning

The back of the ticket provides details about the organization that issued the ticket and the policies and procedures regarding the ticket. The back ***clearly identifies how the violator can pay or appeal the ticket*** with a section for the violator to identify themselves and sign off on the ticket. The back also identifies where to find additional information on the organization and the office hours.

## <span class="legacy-color-text-default">Warnings and Spoiled Tickets</span>

**Warning** is a warning that the user has broken the rules. The warning is tracked as a zero dollar violation that is processed immediately upon syncing to the server. The idea here is that a user will still get a ticket, but won't have to pay for it. A slap on the wrist as they say..

  
**Spoiled** refers to the old concept of spoiling a ticket. Back in the day (of paper!) a patrol might be writing up a ticket and the user shows up and moves their car. The ticket is then said to be spoiled, or another example might be a patrol entering the wrong plate/vehicle details. This is also a void type ticket and in this case like it never happened.

# Notice Letter Templates

# Introduction

This page allows the admin to manage, create, and edit the content and appearance for notice letters used within the system.

Notice letters, also known as a Notice of Impending Conviction (<span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">NIC</span></span>) letter, are part of the <span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">MTO</span></span> process, and are sent out to let a user know of an impending conviction for any outstanding violations on their account, to be collected through the Ontario court system.

# Templates

The appearance and layout of notice letters is setup within the notice letter templates page.

The templates page for notice letters can be found under the <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#36b37e">system configuration</span> menu, within the <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#36b37e">content &amp; designs</span> submenu.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/jGKimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/jGKimage.png)

On the templates page, an overview of all notice letter content within the system is shown. Different content and templates must be created for each language that is installed on the site.

The notice letter templates page consists of two sections:

## **Content**

**noticeLetter** - the template used when printing a notice letter containing a single violation.

- **noticeLetterMultiple** - the template used when printing a notice letter that contains multiple violations.

## **Templates**

**styles** - element styling to be applied to the notice letters. This is done using Cascading Style Sheets (<span data-highlighted="true">CSS</span>), a type of coding used to affect how parts of the notice letter looks, such as assigning a specific colour and size to a paragraph of text.

- **Header** - the content that appears in the header of the notice letter.

<div class="rich-media-item mediaSingleView-content-wrap image-center cc-1yqzdhg" data-layout="center" data-node-type="mediaSingle" data-renderer-start-pos="1454" data-width="900" data-width-type="pixel" id="bkmrk--1"><div class="cc-1qpr13k"><div class="cc-bw8gfb" data-color="#091e4224" data-mark-type="border" data-size="2">  
</div></div></div>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/uF0image.png)](https://opscom.wiki/uploads/images/gallery/2024-05/uF0image.png)

# Content Editor

This page is where the content of the notice letters can be edited.

The content section is a type of <span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">WYSIWYG</span></span> (What You See Is What You Get) editor.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/r2vimage.png)](https://opscom.wiki/uploads/images/gallery/2024-05/r2vimage.png)

When editing the notice letter content, some basic knowledge of <span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">HTML</span></span> (Hyper Text Markup Language) is beneficial.

The <span data-highlighted="true">WYSIWYG</span> (What You See Is What You Get) editor isn't meant for templates, and when editing directly through the interface, problems can occur where the final printed page doesn’t lineup with the template correctly.

Minor changes can be made with the editor, but it is recommended for most changes to be made through editing the <span data-highlighted="true">HTML</span> directly.

You can edit the <span data-highlighted="true">HTML</span> in the editor by selecting <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#006644">Tools → Source Code</span>.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/PIvimage.png)](https://opscom.wiki/uploads/images/gallery/2024-05/PIvimage.png)

Alternatively, the layout of the template can be designed in an external <span data-highlighted="true">HTML</span> editor, and the source code copy and pasted into the <span data-highlighted="true">HTML</span> source code box.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/6o8image.png)](https://opscom.wiki/uploads/images/gallery/2024-05/6o8image.png)

# Short Codes

Notice Letters use a functionality called <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6">short codes</span>, which are pieces of text used as placeholders for user information when setting up a template.

When a notice letter is generated, the <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6">short code</span> will be automatically replaced with the relevant user information in the print out.

<span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6">Short codes</span> usable on each type of notice letter template are listed at the bottom of the edit content page, below the content box.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/9Bdimage.png)](https://opscom.wiki/uploads/images/gallery/2024-05/9Bdimage.png)

A <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6">short code</span> placed in the template will automatically be replaced with the details of the user when the notice letter is being generated.

For example, if the following <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6">short code</span> was placed within the body of the notice letter template:

- Vehicle: **<span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#bf2600">\[values show=vehicle.plate\]</span>**

It would be automatically replaced with the vehicle plate when the notice letter is generated, resulting in something like:

- Vehicle: **<span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#bf2600"><span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">ABC123</span></span></span>**

## Using Short Codes

A <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6">short code</span> can be inserted into the content by copy and pasting the <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6">short code</span> from the list into the content where the information is wanted to be output in the final notice letter printout.

A <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6">short code</span> can be copied to the clipboard by using these steps:

- Highlight the <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6">short code</span> within the list
- Right click the highlighted text
- Click copy
- The<span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6"> short code</span> will now be contained within the clipboard

The <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6">short code</span> can then be pasted into the content using these steps:

- Left click in the desired area within the content where the information is wanted to appear
- Press the Ctrl and V buttons on the keyboard at the same time
- The <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#0747a6">short code</span> will now be pasted to the location selected within the content

Using right click will open a content-specific menu within the content menu, and so can’t be used to paste into the window.

# Notice Letter Report

# Introduction

The letter report page shows a list of users within the system who are eligible to be sent a notice letter, also known as a Notice of Impending Conviction (<span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">NIC</span></span>) letter.

Notice letters are part of the <span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">MTO</span></span> process, and are sent out to let a user know of an impending conviction for any outstanding violations on their account, to be collected through the Ontario court system.

Notice letters printed from this page are intended to be printed and physically sent to the user who incurred the violation.

# Page Location

The letter report page can be found under the <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#36b37e">violations</span> menu, within the <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#36b37e">reports</span> sub menu.

If the letter report tab is not present in the menu, it will need to be enabled within the system settings. The enable letter report option is located under the violations tab.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/OCGimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/OCGimage.png)

# Letter Reports Page

The letter report page consists of two sections, listing the notice reports that can be printed, and those that cannot be printed.

## Printable Violation Notice Report

This section contains a list of all violations within the system that are able to have a notice letter printed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0wQimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0wQimage.png)

### Selected Template

A notice at the top of the section notes which template will be used for the print-out, based on the value of the system setting “Include all unpaid violations”.

Having this setting enabled will make all violations for a user be printed on a single notice letter. Otherwise, a single notice letter will be created for each violation.

### Not Ready to be Sent

Enabling this setting will cause violations that are not ready to have their notice letter sent to appear within the list. These violations will have greyed-out text.

The notice-ready column will display the amount of time left before a notice letter is able to be sent for the violation.

By default, notice letters are able to be sent 7 days after the payment for a violation is past due.

### Printing the Notice Letter

There are two locations from which a notice letter can be printed; a single notice letter can be printed using the print button to the right, or multiple notice letters can be selected and printed at once.

The notice letters will be generated as a <span data-highlighted="true"><span class="_11q7k1zt _5pio5fkk _189eyh40 _1il9nqa1 _19lclxqc _d0altlke acronym-highlight" data-testid="acronym-highlight">PDF</span></span> file and downloaded by the web browser.

### Uploading a Notice Letter

It is possible to upload a notice letter in place of generating one.

This is used when a letter or document has already been sent to the user in place of a system-generated notice letter, enabling it to be associated to the violation as if it were system-generated.

## Un-Printable Violation Notice Report

This section lists violations that are unable to have notice letters printed.

A notice letter is considered to be unprintable when the associated vehicle is missing user details. This can happen when a user has not filled out all their details, or when a user is not present within the system.

In the latter case, the unknown vehicle data must be exported and sent to the <span data-highlighted="true">MTO</span> for information lookup using the Vehicle Lookup Export.

The <span data-highlighted="true">MTO</span> will return the data lookup in the form of a file, which must then be imported back into the system using the Vehicle Lookup import. After the data has been imported, the user details will be automatically entered into the system and the notice letters can be printed right away.

The user data imported in this way is considered temporary and is notated as being from the <span data-highlighted="true">MTO</span>. For security reasons, <span data-highlighted="true">MTO</span> import data will be cleared from the system after all violations associated to a vehicle have been cleared. The violations on a vehicle are considered to be cleared after being paid by the driver, or by being sent to collections.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Ckmimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Ckmimage.png)

Various details are listed for the affected violations, including the reason the notice letter is unable to be printed, and if the vehicle has had its data exported yet.

A reminder will be listed for the vehicle if it has had its data exported to the <span data-highlighted="true">MTO</span>, but hasn’t had its return data imported back into the system yet.

# Viewing Issued Notice Letters

Notice letters that have been issued previously can be viewed from the violation search page.

The violation search page can be found under the violations menu.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/rGSimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/rGSimage.png)

From the violations search page, additional search options can be found by clicking the toggle additional options button located in the top right.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/5B1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/5B1image.png)

This will expand the search box with additional search options.

The relevant search option here is Notice Letter Issued.

By checking this option, only violations that have had notice letters issued for them will be returned.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/jFsimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/jFsimage.png)

Notice letters can be viewed from within the violation info window, found by clicking on the ticket number of a violation in the results screen.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Hbbimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Hbbimage.png)

The notice letters for the violation are listed near the bottom of the window.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/M12image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/M12image.png)

This will open the notice letter view window, from which the notice letter content can be viewed, or re-downloaded by pressing the print button.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/z4Qimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/z4Qimage.png)

## Regenerating A Notice Letter

In the cases such as when the template of the notice letter is changed, there may be a need to regenerate an existing notice letter.

The existing notice letter for the violation can be archived by clicking on the trash icon next to it. This will flag the notice letter as archived, allowing the violation to reappear on the letter report page so it can be printed again.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/qiqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/qiqimage.png)

Archiving a notice letter will not delete it from the system, and it will continue to appear on the violation info page, with a notice indicating it has been archived.

# Templates

The appearance and layouts of notice letters is setup within the notice letter templates page.

The templates page for notice letters can be found under the <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#36b37e">system configuration</span> menu, within the <span class="fabric-text-color-mark" data-renderer-mark="true" data-text-custom-color="#36b37e">content &amp; designs</span> submenu.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/J63image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/J63image.png)

# System Settings

There are several settings associated to notice letters.

There is one setting located under the violations tab.

- **Enable Letter Report**
    
    
    - If this setting is enabled, the letter report page will be made available for use.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/SAqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/SAqimage.png)

There are two settings located under the collections tab.

- **Send Letter To All**
    
    
    - If this setting is enabled, notice letters will appear in the list for users who have already had the notice letter sent to them by email.
- **Include All Unpaid Violations**
    
    
    - If this setting is enabled, all unpaid violations for the user will be included on a single notice letter. When disabled, each notice letter will be limited to a single violation.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/2Mdimage.png)](https://opscom.wiki/uploads/images/gallery/2024-05/2Mdimage.png)

# Auto Email Notifications for Warnings

<p class="callout info">There is now the option to have a warning letter sent to those who have received a violation marked as a warning. Violations marked as a warning have had their fine amount waived.</p>

## Setup &amp; Configuration

To enable the sending of warning notices:

- Go to **System Configuration**, then **System Settings**, and scroll down to the **Violations** sub-menu.
- Enable the setting named **Send Notices For Warnings**.
- Click **Save Settings**.

Once enabled, warning notices will be sent when the system task is run.

## Template

The edit the layout of the warning letter:

- Go to **System Configuration** &gt; **Content &amp; Designs** &gt; **Email Templates**
- Click Edit on the **New Warning Notice** template.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/jYUimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/jYUimage.png)

Here the content of the notice is setup for the email to be sent out to users with warning violations.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/45mimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/45mimage.png)

## System Task

For the warning notices to be sent out, the system task must be run.

- Go to **Tools** &gt; **View System Task Logs**.
- Ensure the **New Violation Notices** task is enabled.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/d32image.png)](https://opscom.wiki/uploads/images/gallery/2024-07/d32image.png)

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">Like other system tasks, **New Violation Notices** is set to run at a scheduled time while it is enabled.</span>
- <span style="color: rgb(22, 145, 121);">It can also be run immediately by pressing the run button.</span>
- <span style="color: rgb(22, 145, 121);">While the setting **Send Notices for Warnings** is enabled, this task will include warning violations in its output. When disabled, the task will only send notices out for violations issued with a fine.</span>
- <span style="color: rgb(22, 145, 121);">The **task frequency** can be adjusted, however it must be updated manually on our end in the database. Please contact us at <support@ops-com.com> for help.</span>

<p class="callout warning">We **strongly recommend** keeping a **longer delay**, as it’s designed to prevent situations where staff may be approached or pressured immediately after issuing a violation.</p>

# Appeal Evidence Uploads Overview

<p class="callout info">The **Appeal Evidence Uploads** feature enhances the user experience and streamlines the violation appeals process by allowing users to directly upload supporting evidence, such as images and text documents, to their violation appeals. This eliminates the need for users to send evidence through separate channels and centralizes all appeal-related information within the OPSCOM system. </p>

### How does this Work?

This feature integrates directly into the [existing appeal submission workflow](https://opscom.wiki/books/the-opscom-admin-portal/page/managing-violationcitation-appeals). When a user submits an appeal, they will now have the option to attach supporting files. These uploaded files are then securely stored and displayed on the administrator's appeal review page, providing immediate access to all relevant evidence. This significantly reduces the time administrators spend contacting users for supporting documents and streamlines the appeal review process.

### Setup &amp; Configuration

1. Hover over **System Configuration**, and click **System Settings.**
2. On the **Violations** tab, ensure the **Enable Appeals Module** setting is enabled. If it is not, please contact <support@ops-com.comcom>.
3. **Enable Appeal Evidence Uploads** should be enabled if you want users to be able to submit files as evidence for their appeals. 
    - This setting is enabled by default.
    - Users can upload multiple files per appeal.
    - Supported file types include JPG, PNG, and PDF.
    - The maximum file size is 12MB per file.
    - All uploaded files are securely stored and only accessible by authorized personnel.

### User Portal Experience 

Users will experience a more intuitive and efficient appeal submission process. They can easily upload image and text files to provide all necessary information in one submission. For detailed instructions on how users interact with this feature, please [refer this wiki article](https://opscom.wiki/books/OPSCOM-user-portal/page/appealing-your-parking-violation).

# OperationsCommander Payments and Transaction Flow

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Payroll Deduction Settings

## Enable / Disable paying a Violation / Permit using Payroll Deduction.

First go to System Configuration [![image.png](https://opscom.wiki/uploads/images/gallery/2025-03/scaled-1680-/image.png)](https://opscom.wiki/uploads/images/gallery/2025-03/image.png) then select the Payments option [![image.png](https://opscom.wiki/uploads/images/gallery/2025-03/scaled-1680-/mPWimage.png)](https://opscom.wiki/uploads/images/gallery/2025-03/mPWimage.png) You will now see the options "Disable Payroll Deduction for Violations" &amp; "Disable Payroll Deduction for Temp Permits", you can use the check boxes on these options to toggle on / off the ability for users to use "Payroll Deduction" for paying Violations and/or Permits when they check out.

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-03/scaled-1680-/VB7image.png)](https://opscom.wiki/uploads/images/gallery/2025-03/VB7image.png)

# Setting up Quick Pay/Guest Payments

<p class="callout info">This article describes the Guest Payments feature. Guest Payments allows guest users to look up and pay for violations directly from the user portal without needing to create or log in to an account. This functionality streamlines the payment process for end-users and reduces administrative inquiries.</p>

### Setup and Configuration

For Guest Payments to function, it must first be enabled for specific payment types and then activated in the system's global settings.

<p class="callout warning">**Keep in mind:** compatible third-party payment provider that supports guest transactions must be configured in your OPSCOM system. </p>

See this article on [setting up a third-party payment provider](https://opscom.wiki/books/setup-configuration-for-admins/page/managing-payment-types#bkmrk-the-following-links-).

##### <span style="text-decoration: underline;">Enable Specific Payment Types</span>

First, you must designate which electronic payment types are available for guest transactions.

- Go to **System Configuration**, **Payments**, and click **Setup Payment Types**.
- Create a new payment type or click the **Edit** icon next to an existing one that you wish to enable for guests.
- Select the **Settings** tab.
- Click the **Enable for Guest Payments** checkbox.
- Click **Save** to confirm the change.

Repeat these steps for all payment types you want to make available for guest payments.

##### <span style="text-decoration: underline;">Activate Global Setting</span>

After enabling the desired payment types, you must activate the feature for the entire system.

- Go to **System Configuration**, and click **System Settings**.
- Select the **Violations** tab.
- Enable the **Enable Anonymous Violation Payments** checkbox.
- Click **Save Settings**.

### Using this Feature

Once Guest Payments are fully configured, a button will appear on the public portal's main login page, allowing users to pay for a violation without logging in.

See this article for the [User Experience of guest payments](https://opscom.wiki/books/setup-configuration-for-admins/page/managing-payment-types#bkmrk-the-following-links-).

---

### <span style="color: rgb(22, 145, 121);">Best Practices and Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Select which payment types to enable for Guest Payments.** Only enable electronic payment methods (e.g., Credit Card) that can be processed automatically through your payment provider. </span>
- <span style="color: rgb(22, 145, 121);">**Confirm your payment provider supports this functionality.** Guest Payments will not work without a compatible payment gateway configured in OPSCOM. Consult your payment provider's documentation or support if you are unsure.</span>
- <span style="color: rgb(22, 145, 121);">**Communicate the availability of this feature to the public.** Consider adding a note on your organization's parking information page to direct users to this convenient payment option.</span>


####   




<div class="jim-error-message jim-error-message-table conf-macro output-block" data-hasbody="false" data-macro-id="6029a7b6-d095-45c5-9ebc-0bc82fe0db90" data-macro-name="jira" id="bkmrk--25"></div>

# Payment Reconciliation: Submitted / Processed

<p class="callout info">The Payment Reconciliation page allows users to effectively track and manage the status of payments within a defined time period. This report is specifically designed to reconcile the dollar value of received payments with your bank or credit card merchant by comparing the amounts charged between the two. Users can filter results to view either submitted or processed payments.</p>

## Setup &amp; Configuration

To access the Payment Reconciliation page you must have the permission to **View Payments** turned on. This can be added to your role by your Primary Admin.

---

### Creating a Payment Reconciliation Group

1. Navigate to **System Configuration**, then **Admin Management**, and click on **Manage Groups**.
2. This brings you to the **Manage Administrator Groups** page.
3. To create a Payment Reconciliation group click on the **Payment Reconciliation** module and then click **Add New** in the top right corner under. [![image.png](https://opscom.wiki/uploads/images/gallery/2026-04/scaled-1680-/iKqimage.png)](https://opscom.wiki/uploads/images/gallery/2026-04/iKqimage.png)
    
    The **Adding New Group** window will appear with the following options:
    
    <table border="1" style="border-collapse: collapse; width: 100%; height: 136.438px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><thead><tr style="height: 34.1094px;"><td class="align-center" style="height: 34.1094px;">**Options**</td><td class="align-center" style="height: 34.1094px;">Info</td></tr></thead><tbody><tr style="height: 34.1094px;"><td style="height: 34.1094px;">**1. Group Name**</td><td style="height: 34.1094px;">The Group Name is how you set the name of a group.</td></tr><tr style="height: 34.1094px;"><td style="height: 34.1094px;">**2. Module** </td><td style="height: 34.1094px;">The Module is where you can set the purpose of the group.</td></tr><tr style="height: 34.1094px;"><td style="height: 34.1094px;">**3. Admin Members**</td><td style="height: 34.1094px;">The Admin Members is the area in which you can add admin members to the group</td></tr></tbody></table>
4. When you are finished click the **Save Group** button. You will see your group added to the bottom of the Administrator Groups.

##### <span style="text-decoration: underline;">Adding Members to a Group</span>

1. Navigate to **System Configuration**, then **Admin Management**, and click on **Manage Groups**.
2. Click the Edit button next to the Administrator Group you wish to edit.
3. Click on the **Admin Members** bar to add more members to the group.
4. When finished, click the **Save Group** button found at the bottom of the Editing Group.

## Using this Feature

1. Go to **Payments**, and click **Payment Reconciliation**.
2. On this page, you can apply filters to refine the payment data displayed:
    
    
    - **Filter by Date Range:** Define the start and end dates for the payments you wish to view.
    - **Filter by Payment Type:** Select the specific payment method(s) you want to include in the results.
    - **Filter by Admin Group:** Filter reconciliation data based on specific admin groups designated for payment reconciliation.
3. Click Search. The results are displayed below the search criteria.
4. Click on any column header to reorder the data.

### System Task (Export Options)

The page offers various export options, shown in green, that allow users to generate files for external use:

- **Copy:** Copies the row data to your clipboard, allowing you to paste it into any program, such as Excel.
- **CSV:** Creates and prompts you to download a CSV (Comma-separated values, `.csv`) file for use in your program of choice.
- **Excel:** Creates and prompts you to download an Excel (Microsoft Excel, `.xls`) file for use in your program of choice.
- **Print:** Prompts your browser to print the current page view.

---

## <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Reconciliation Focus:** The Payment Reconciliation report is the correct tool for comparing system payments with bank/merchant payments.</span>
- <span style="color: rgb(22, 145, 121);">**Avoid Daily Payments Itemized for Reconciliation Tasks:** The **Daily Payments Itemized** report shows received payments, but it is **not recommended for reconciliation** because it may display tax differently and can lead to rounding errors, making dollar-value comparison inaccurate.</span>

# Accepting a Student Account Payment from the Admin Portal

## Accepting a Student Account Payment

To Begin lets select a permit to purchase. In this case the admin is assigning a permit to a student and taking payment via Student Account.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/gWVimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/gWVimage.png)

In this example we are purchasing a permit in the General Monthly Lot for Patricia Birch.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/r7Yimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/r7Yimage.png)

Once the lot has been selected, the admin can then choose a permit to assign to the user. Click on **Purchase this Permit** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Xjyimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Xjyimage.png)

The payment due page will appear. Click on **Proceed to Payment** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Z8Yimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Z8Yimage.png)

The screen will refresh and the admin will be presented with the **Payment Selection** section of the process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/1DZimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/1DZimage.png)

In this case we have selected a **Student Account** payment. Click **Submit Payment** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/iCnimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/iCnimage.png)

The screen will refresh and the admin will be presented with the Payment Selection section of the process. In this case we have selected a cash payment. Click **Submit Payment** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/atYimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/atYimage.png)

The **Transaction Details** screen will appear. There are three choices available.

- Process Manually which will complete the transaction
- Cancel and Keep which will terminate the transaction but return the locker to awaiting payment status
- Cancel and Release which will also terminate the transaction and release the locker back into the pool of available lockers to rent.

IN our example we will select Process Manually to complete the transaction.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/tpbimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/tpbimage.png)

The payment will be processed and the **Transaction Details** screen will display a receipt. Because the payment method is **Student Account** the item will be marked as paid by student account.  
A report can be run of daily payments filtered by Student Account. This report can be provided to the financial department to allow finance to retrieve the funds from the student account.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/fcnimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/fcnimage.png)

# Payment for a locker from the Admin Portal

## Paying for a locker.

To begin click on the **Lockers** menu item in the user's profile on the admin portal.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0imimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0imimage.png)

The locker registration page appears with a list of buildings with lockers available.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/XQ8image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/XQ8image.png)

The locker selection page will open allowing the admin to chose the locker area within the building chosen. In this case we are looking for a locker in the women's locker room.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/1jHimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/1jHimage.png)

The admin may then select the specific locker number they wish to assign to the user. Click on **Reserve Locker** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/upJimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/upJimage.png)

The confirm **Locker Registration** page will open where the admin can verify the information about the locker being assigned. Click on **Confirm Info** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/4q2image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/4q2image.png)

The payment due page will appear. Click on **Proceed to Payment** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/cL2image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/cL2image.png)

The screen will refresh and the admin will be presented with the Payment Selection section of the process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0Phimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0Phimage.png)

In this case we have selected a **Cash** payment. Click **Submit Payment** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/lSfimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/lSfimage.png)

The transaction Details screen will appear. There are three choices available.

- Process Manually which will complete the transaction
- Cancel and Keep which will terminate the transaction but return the locker to awaiting payment status
- Cancel and Release which will also terminate the transaction and release the locker back into the pool of available lockers to rent.

IN our example we will select Process Manually to complete the transaction.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2UGimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2UGimage.png)

The payment will be processed and the Transaction Details screen will display a receipt.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xUrimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xUrimage.png)

# Admin Portal Permit Purchase with Credit Card

## The Permit

We begin by going to a user's dashboard on the admin portal and proceeding to the Parking tab.  
In our example we are issuing and paying for a permit on behalf of user over the phone.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/hkyimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/hkyimage.png)

We then get taken to the Confirm Parking Permit Registration page where the admin can choose either the next permit available or select a specific permit number.  
Click on Purchase this Permit to Continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/HEZimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/HEZimage.png)

The Payments Due screen will open listing items that require payment.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/YX4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/YX4image.png)

## The Payment Type

From the payment Due screen the admin can choose a payment method to be used for this purchase. In our example we choose a payment provider.  
Click on Submit Payment Information to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/LuYimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/LuYimage.png)

  
A confirmation Screen will appear listing the payment type. Click on Submit Payment Information button to proceed to the payment gateway.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/7Zjimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/7Zjimage.png)

You will be directed to the payment provider's input form. Fill out the form and click Make Payment to complete the purchase.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/fLZimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/fLZimage.png)

A transaction record will appear. This information is stored and can be accessed form the user's payment history or you can search for the Confirmation Number in various search tools.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/UMJimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/UMJimage.png)

# Daily Payments - Itemized

The Daily Payments - Itemized page can be found under Payments -&gt; Daily Payments - Itemized.

[![2024-08-08_15-15-19.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/2024-08-08-15-15-19.png)](https://opscom.wiki/uploads/images/gallery/2024-08/2024-08-08-15-15-19.png)

On this page your can filter for submitted or processed payments based on a date range and payment type:

[![2024-08-08_15-18-09.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/2024-08-08-15-18-09.png)](https://opscom.wiki/uploads/images/gallery/2024-08/2024-08-08-15-18-09.png)

Two options for excel export exist:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/yZximage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/yZximage.png)

- **Export to Excel (Group)**: payment items such as permits, deposits, violations, lockers, etc that are part of the same payment are grouped together.  
    Example:  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/lJIimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/lJIimage.png)
- **Export to Excel (Line)**: payment items such as permits, deposits, violations, lockers, etc that are part of the same payment are listed on separate lines/rows.  
    Example:  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/MPeimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/MPeimage.png)

After clicking "List Payments" results will then be displayed below the search criteria, grouped by day:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/nYrimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/nYrimage.png)

Additionally along the bottom of the page a table breakdown of daily processed orders is shown:[![image.png](https://opscom.wiki/uploads/images/gallery/2024-08/scaled-1680-/Nucimage.png)](https://opscom.wiki/uploads/images/gallery/2024-08/Nucimage.png)

# Admin Portal Cash, Cheque or Debit Payment

## Purchasing a Permit

To begin let's have a look at purchasing a permit for the admin portal. Select the **Parking Tab** and the click the **Standard Permit** button to access the permit purchase screen.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/HNqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/HNqimage.png)

The **Confirm Parking Permit Registration** page appears. An admin can simply use the next permit available or select a specific permit to assign to the user.  
The cost of the permit will show in this interface. Click on **Purchase this Permit** to proceed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/9ekimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/9ekimage.png)

This will then take you to the **Confirm Parking Permit Registration** page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Xykimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Xykimage.png)

If everything looks good as far as what you expect the payment to be you may then select the payment type you wish to use.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/3wGimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/3wGimage.png)

In our example we will choose **Cash** however **Cheque, Money Order** and **Debit Card** work in the same manner.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/WQiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/WQiimage.png)

Once the payment type is selected you will be directed to the **Payment Due** screen where you will see the important information of what you are paying for and what payment type was selected.  
Click **Submit Payment** Information to proceed with the purchase.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/SA9image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/SA9image.png)

The screen will refresh with three choices that can be made at this point.  
  
**Process Manually** - which will process the payment. It is at this point you would collect the cash, cheque, money order, or debit card to process.  
**Cancel and Keep** - This will terminate this transaction but keep the permit in awaiting payment status.  
**Cancel &amp; Release** - This will terminate this transaction and release the permit back into the pool of available permits.  
  
In our example we will select Process Manually to complete the transaction.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xgiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xgiimage.png)

The screen will refresh with a confirmation screen record of the purchase.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/gR8image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/gR8image.png)

# Paying for a Violation from the Admin Portal

## Searching for a Violation

There are two methods to searching a violation. You can place the violation number in the **quick search** bar and click on the resulting drop down.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Tv2image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Tv2image.png)

Or... Alternately you can use the **Violation Search** from the **Violations** menu.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Fffimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Fffimage.png)

Enter the **ticket number** or **plate number** in the **Search Text** box and click on **Search Using Only Text** to retrieve a list of violations.  
Click on the **ticket number** to proceed.  
*Note: Using the Ticket Number will list the specific ticket. Using the Plate Number will list all tickets associated with the plate.*

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/jFoimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/jFoimage.png)

## Choosing an Action

The **Violation Information** window will pop up. Click on **Action** to proceed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/d8ximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/d8ximage.png)

A list of possible actions will appear. Click on **Make Payment** to access the payment screen.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/iMlimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/iMlimage.png)

## The Payment Screen

The payment screen will display any item that is awaiting payment. This could include **Violations, Permits,** and **Deposits**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/vWAimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/vWAimage.png)

You may opt to pay for all items or decide to pay for the specific violation by toggling off the items you wish to pay for at another time.  
*Note: If items are past due you will be required to pay for them and will not be able to toggle them off.*

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ZtMimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ZtMimage.png)

Click **Proceed to Payment** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/CxJimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/CxJimage.png)

## Choosing a Payment Type

Select the payment type you wish to use. In this case we are using **cash** as a payment type. You may also select **cheque** or **debit card** payment here.  
*Note: As an admin you may choose any payment type available in your system. If the payment was being made from the user portal you can see only **Credit Card** in this case would be available as a payment type.*

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/wj6image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/wj6image.png)

In our example we are choosing **cash**. Click on **Submit Payment** Information to proceed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/es5image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/es5image.png)

A confirmation screen will appear noting the payment method. Click on **Submit Payment Information** once again to proceed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/cTqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/cTqimage.png)

## Making the Payment

The **Transaction Detail** screen will appear. You may wish to update the **Comment** at this point.   
*Note: You may also cancel the transaction at this point if there is reason to do so. Be aware that canceling a payment for a violation simply places the violation back into awaiting payment status.*  
*For a permit you may opt to cancel the transaction yet keep the permit in awaiting payment status (**Cancel and Keep**) or you may **Cancel and Release** the permit.*

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/scximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/scximage.png)

In our example we will **Process the payment manually** and accept the cash payment.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/PsUimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/PsUimage.png)

## The Final Transaction Detail Screen

The **Transaction Detail** page will refresh showing the details of the purchase.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/U9pimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/U9pimage.png)

# Payment Data Export via Banner SFTP

# Configuration

There are several items that must be configured in order for the right information to display in the exported CVS file.

# User Profile

In the user profile, a **unique user ID** must be configured.

This information will likely be populated by a user data import.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/XOEimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/XOEimage.png)

# Lot Administration

Each lot requires a unique **banner detail code**.

To set the banner detail code, go to **Lot Administration** and click on **Pricing &amp; Lot Admin**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/AWoimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/AWoimage.png)

Select the lot you wish to add the detail code to. Click on the **lot name** to access the configuration screens.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/K1pimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/K1pimage.png)

Once you are in the lot configuration tool, select the **Additional** tab.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/X5Aimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/X5Aimage.png)

Enter the **Lot Detail Code**. (These codes are established in the preliminary planning phase of the project)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/64Eimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/64Eimage.png)

# Ticket Categories

From the **Options Menu**, hover over **Violations** and select **Manage Ticket Categories**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Hb9image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Hb9image.png)

Click **Edit** on the **Category** you wish to configure.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/tgCimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/tgCimage.png)

Enter the detail code for the ticket category.

In this case, the Detail Code is **PRKB** for the **Boot Fee** category.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/h12image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/h12image.png)

# Sales Window 

On the sales window configuration page, we need to enter a <span class="legacy-color-text-default">**Term Code** used for **Permits** only.</span>

<span class="legacy-color-text-default">To do so go to the **Permits** Menu and select **Sales Windows**</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/pXJimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/pXJimage.png)

<span class="legacy-color-text-default">To access the configuration screen, click on **EDIT.**</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Qzwimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Qzwimage.png)

<span class="legacy-color-text-default">Here you will enter the **Term Code** for the selected **Sales Window** that you want to appear on the permit purchases export.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/cl1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/cl1image.png)

<span class="legacy-color-text-default">  
</span>

# <span class="legacy-color-text-default">Activate Script to Run on a Schedule</span>

You must now ensure the **System Task** is set to active and has an active schedule set.

In the **Options** menu, click on **View System Task Logs**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/5eEimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/5eEimage.png)

In this example, the Task is set to run at 2:00 am Nightly

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/bBeimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/bBeimage.png)

# <span class="legacy-color-text-default">The User Portal</span>

<span class="legacy-color-text-default">You are now set to make a payment on the user portal. In this example, we will purchase a permit.</span>

<span class="legacy-color-text-default">Go to the user portal and click on the **Permits** menu item.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/3kCimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/3kCimage.png)

<span class="legacy-color-text-default">Select the Lot you wish to purchase a permit in.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/BtDimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/BtDimage.png)

<span class="legacy-color-text-default">Click **Reserve Permit**</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/9DBimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/9DBimage.png)

<span class="legacy-color-text-default">**Continue to Checkout** to view your **Cart**.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0QZimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0QZimage.png)

<span class="legacy-color-text-default">Select **Banner Payment** as your **Payment Type.**</span>

<span class="legacy-color-text-default">This can be configured so that Banner Payment is your only selection available.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/KGCimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/KGCimage.png)

<span class="legacy-color-text-default">Click **Submit Payment.**</span>

<span class="legacy-color-text-default">The screen will refresh to show the **Confirm Payment** page.</span>

<span class="legacy-color-text-default">Click on **Confirm Payment.**</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/6Xgimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/6Xgimage.png)

<span class="legacy-color-text-default">Once the payment is processed, you will get an online receipt.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/32Iimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/32Iimage.png)

Some additional information on how the Banner export process works:

Export to Banner will run whenever the system task is set to, and gathers any violations that can be sent to banner that haven't been exported yet. When a violation has been exported by the system task, it has a flag put on it that marks it has been exported to Banner.

It will export the violations it found into a new file, and does not affect any previously output files, meaning it doesn't create a cumulative file that gets more added each day. Rather, it creates a new file every time it runs; this isn't necessarily daily, it runs at whatever interval the client has decided for it.

This would mean if they missed a day, there would be more than one new file in the output folder for them to process in Banner.

# Search Payments

## Accessing the Report

From the Payments menu click on **Search**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/eUTimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/eUTimage.png)

The page will refresh with the **Payments Reporting** search form that gives you the ability to search by **Confirm Code, Transaction ID, Order ID**, as well as a number of present search items below.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2O2image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2O2image.png)

Here is an example of searching based on the **confirm code 7d444zbcdffe54b50bde**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/EGEimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/EGEimage.png)

Provided the confirm code exists in the system the screen will refresh with the **Transaction Details** for that purchase.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/wEwimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/wEwimage.png)

## Pre-Configured Searches

The search tool also has a number of additional pre configured searches that will help you find information quickly.  
Some of the reports will have the ambility to set a date range where others do not require a specified range.

**List Cheque Refunds**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/vorimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/vorimage.png)

**List unprocessed Cash, Cheque and Money Order payments**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/o5jimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/o5jimage.png)

**List unprocessed Credit Card payments**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/6RRimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/6RRimage.png)

**List unprocessed Payroll Deduction payments**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/kS7image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/kS7image.png)

  
**List unprocessed Internal payments**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/IMnimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/IMnimage.png)

  
**List ALL unprocessed payments**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/mB9image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/mB9image.png)

  
**List ALL unprocessed adjustments**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/wS1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/wS1image.png)

  
**List ALL Processed Payroll Deductions**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/iXMimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/iXMimage.png)

  
**List All Processed Violations (by date range)**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Ddfimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Ddfimage.png)

  
**List Daily Processed/Submitted Payments (by date range)**

You may search for submitted payments as well as Processed payment in this report. The search criteria screen will look like this:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/lKUimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/lKUimage.png)

The resulting report will have two sections to it. One that lists the payments in detail.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/KErimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/KErimage.png)

...And one that lists a daily summary.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/XpLimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/XpLimage.png)

# Banner Report

## Generating the Report

To begin look for the **Banner Report** menu item under the **Payments Menu**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/qxFimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/qxFimage.png)

The screen will refresh and display the **Banner Report Search** page.

On this page you select:

**User Types:** Select the User Type you wish to report and pay for.   
**Choose Item Type:** Select the item you wish to pay for. In our example we are paying for yearly permits.  
**Up To and Including:** Select the end date of the period you wish to pay for.  
**Banner Code:** Enter the payment or identifying code that you wish to apply to this record in Banner. (Code 100)  
**Detail Code:** Enter the code that represents the item you are paying for. In our case it will be a yearly permit for 2020. (YP2020)  
**Admin Code:** Enter your admin ID number to track who is making this payment report.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/3CXimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/3CXimage.png)

There are two functions you can perform here. **Mark as Paid** or **Export to Excel**.

## Exporting to Excel

The export to Excel functionality allows the admin to export a spreadsheet of names and payments that will be made.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/uNBimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/uNBimage.png)

Here is a sample of an exported spreadsheet. This report can then be imported into Banner to facilitate payment through a Student or Staff account.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/gwAimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/gwAimage.png)

## Mark Items as Paid

To mark these reported items paid in OPSCOM Select Mark as Paid.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/NjFimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/NjFimage.png)

A popup window will appear for the admin to confirm the transaction.

 Click **Confirm** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/al4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/al4image.png)

A confirmation screen will appear displaying the **transaction code** for the payment.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2ioimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2ioimage.png)

If you searched the transaction code you would see this return. Note: All three items here are now paid for,

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ehtimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ehtimage.png)

# Flex Payments

## Configuring a Lot For Flex Payments

To begin create a **Flex Payment Lot** and added 10 permits to it (FLX001...FLX010)

To do so first go to **Lot Administration** and select **Pricing &amp; Lot Admin.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/oLKimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/oLKimage.png)

Name the lot **Flex Payment Lot** or something you consider appropriate.  
Set the cost at **$0.00**  
Set the **Usertype** to the users who will be using Flex Payments. In our example we are using **Full Time Staff**.  
  
**Note: the lot does not have to be set to visible to users as this functionality will only be used on the Admin Portal**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/sGGimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/sGGimage.png)

  
Set the **Sales Window** to **Yearly**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/npAimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/npAimage.png)

## Adding Flex Permits to the Lot

Go to **Allocate** and add your ten permits.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/oiJimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/oiJimage.png)

## <span data-colorid="upfdfy7soj">Testing Flex Payments</span>

To test find a **Full Time Staff** user with a vehicle in our example we are using **John Doe**.  
Click on the **Parking** tab to begin the purchase process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/rOpimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/rOpimage.png)

  
  
Purchase a permit from the **Flex Payment Lot**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/hZjimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/hZjimage.png)

Process it as if it were a **zero dollar cash purchase**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/pznimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/pznimage.png)

The **Payments Due** screen will open. Select **Proceed to Payment** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/gy2image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/gy2image.png)

On the very last confirmation screen click on **Adjust** to bring up the adjustment screen.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2YDimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2YDimage.png)

Set a -200.00 value (credit). Added a comment (Flex Payment Adjustment) and clicked on **Add Adjustment**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/zycimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/zycimage.png)

## How the credit is displayed on the user Portal

Do not process the credit yet as it will appear as a credit on the users account.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/JZiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/JZiimage.png)

This credit can now be applied to a permit purchase.

# Payroll Deduction Workflow

## Purchasing a permit using Payroll Deduction

  
In this scenario Patricia Birch will purchase a permit via Payroll Deduction. We will cover the purchase process on both admin and user side.

## <span data-colorid="dktrf3yocv">From the Admin Web App</span>

Here is the payment listed in the payments screen. Click on **Proceed to Payment**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/LJuimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/LJuimage.png)

The screen will refresh with the payment type selection tool. Select Payroll Deduction as the payment type and click on Submit Payment Information to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/gobimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/gobimage.png)

The confirmation screen appears. Please check the information to ensure it is correct. Then click Confirm Payment Information to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/klAimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/klAimage.png)

The screen will refresh with the Transaction Detail screen. To complete the purchase click on Process Manually to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/4pwimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/4pwimage.png)

The screen will refresh with the final screen in the purchase process. The system considers the permit purchased at this point.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/nvgimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/nvgimage.png)

To collect on Payroll Deduction purchases, use the Payroll Deduction Report to help track purchases.

# Admin Portal Violation Payments with Credit Card

## <span data-colorid="gu8gufsr33">Paying a Violation with Visa</span>

Log in with your admin credentials on the admin side.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/rvvimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/rvvimage.png)

 Navigate under the violations tab to the search tab.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/oUTimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/oUTimage.png)

Type the ticket number into the search text box.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Vudimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Vudimage.png)

 In this case we looked up ticket TT-10016 and found that it belongs to user jsmith with a plate that is ABC123.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/DB4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/DB4image.png)

 Click the Ticket # and you will be brought to the Violation Information tab

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/etyimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/etyimage.png)

Afterwards click on the actions tab and click on Make Payment.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/5bkimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/5bkimage.png)

 This will bring you to the user's payment page so you can process said violation.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/17fimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/17fimage.png)

 In this case you want to deselect any other objects that are not being paid for at the moment (in this case the permit) and click proceed to payment.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ulhimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ulhimage.png)

 This brings you to the checkout page where you have three ways you can handle this detailed below.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/HOaimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/HOaimage.png)

Click on the drop down menu in order to pick Credit Card, MasterCard or Visa. In this case we're going to use Visa.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/BNyimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/BNyimage.png)

 It will bring up the proper options for you to enter in credit card information and click 'Submit Payment Information'

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0YGimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0YGimage.png)

This will bring you to a payment type confirmation page, to continue press the 'Confirm Payment Information' button

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/1Zfimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/1Zfimage.png)

 The payment processes.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/6yQimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/6yQimage.png)

Then you get brought to a transaction details page

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/o2Iimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/o2Iimage.png)

## Paying with Visa (External)

This payment type is used when the customer chooses to pay by credit card at the parking office where a pin pad or cash register is used.

# Failed Payments Report

1. To access the report go to the **Payments** drop down menu and select **Search Failed Payments**.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2U9image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2U9image.png)
2. The **Failed Payments Report** screen will open. Enter a date range you wish to report on and click **Search**.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ZX0image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ZX0image.png)
3. The screen will refresh with a list of failed payment for that date range. In our example we are looking at **October 1st, 2018** to **October 15th, 2018.**  
    During that time period there were **5 failed payments**. The list shows the pay Id, confirmation code, amount of the payment, the date of the failed payment and the user name associated with the payment.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/u6Mimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/u6Mimage.png)
4. To drill down further click on the **Confirmation Code** button to access the transaction record.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/iBuimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/iBuimage.png)
5. The transaction record screen will open where you can see details about the failed transaction.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/tqYimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/tqYimage.png)
6. Some payment providers will return detailed information with an explanation as to why the payment failed, while other providers will simply supply an error code.  
    In this case note that there is a response code of **481** indicated in the information.  
    <span data-colorid="farrccez1i">  
    </span>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/jGAimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/jGAimage.png)
    
    <span data-colorid="farrccez1i">  
    A **481** code indicates there is an error in the information provided. U<span data-colorid="duzydrw3xj">sually an incorrect expiration date or an incorrect billing address.  
    The definition for these codes are easily found in a web search. In this case a search for **Credit card response code 481** provided the explanation.  
      
    </span></span>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/cbaimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/cbaimage.png)
    
    <span data-colorid="farrccez1i"><span data-colorid="duzydrw3xj">  
    </span></span>

# Mark Items as Paid

## Marking Items Paid Menu Option

Hover over **Payments** and click **Mark Items Paid**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/B0zimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/B0zimage.png)

Select Items to Mark Paid

The **Mark Outstanding Items Paid** screen displays. You can select different parameters such as user type, item type and time period.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/OI5image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/OI5image.png)

As an example, this setting will mark all locker rentals for **Full Time Staff**, purchased before April 1st, 2018 as paid.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/zCGimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/zCGimage.png)

## Bulk Mark Violations Paid

In cases where violations have been sent for collection, the admin would get a list back from the collection agency as to what payment have been retrieved.

The admin would then be able to mark these violations as paid.

To do so click on **Bulk by Number** beside Violations.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/9Ajimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/9Ajimage.png)

Enter the violations in the tool separated by a line return.

Keep in mind that you should not include the PIN with the violation number.

eg. 2-001345-**92** (92 is the PIN in this case)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/u4Uimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/u4Uimage.png)

Select **Violations Paid Through Collection** from the drop-down list.

Click on **Mark Listed Paid** to complete the process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/uHcimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/uHcimage.png)

# Payment Adjustments

## Releasing a Permit.

1. If you know the permit number perform a permit search. If you do not know the permit number, go to the user profile for whom you wish to release a permit.  
    Click on the permit number on the user dashboard.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/zPaimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/zPaimage.png)
2. From the permit detail click on the permit number  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/67zimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/67zimage.png)
3. You will be taken to permit search where you can released the permit  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/aSDimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/aSDimage.png)
4. It is advisable to leave a comment in order to track the reason the permit was released. Click release this permit.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Sazimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Sazimage.png)
5. A pop up window will appear. Click OK to confirm the release of the permit.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Xl2image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Xl2image.png)
6. A confirmation message will app\[ear.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/BAwimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/BAwimage.png)
7. Now when you search the permit it will appear as available.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Btzimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Btzimage.png)

## Refunding a Violation

1. Once a user has paid a violation it can be refunded and placed back in awaiting payment status.
2. Go to the user's history and search for the violation you wish to refund. Click on the work Processed to access the transaction details.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/lqCimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/lqCimage.png)
3. Click on the Refund button to begin the process of refunding the violation  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/nzMimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/nzMimage.png)
4. A Refund payment Record window will open. It is advisable to enter a comment as to the reason the refund is being given.   
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xjjimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xjjimage.png)
5. Click on OK in the resulting pop up confirmation screen to complete the process.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Gaiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Gaiimage.png)
6. The adjustment Information window will appear. Click on Process This Adjustment.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/l4Rimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/l4Rimage.png)
7. The transaction screen will refresh indicating "<span class="legacy-color-text-red2">The associated transaction was dropped or refunded; any refund details will appear below.<span class="legacy-color-text-blue1">"</span></span>  
    <span class="legacy-color-text-blue1">Notice the refund appears as an adjustment in the transaction record.  
    </span>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/hzximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/hzximage.png)
8. <span class="legacy-color-text-blue1">If you were to look at the user's history you will see the violation is back to requiring a payment.  
      
    </span>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/p1gimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/p1gimage.png)

## Refunding a Locker

1. To refund a locker, find the locker in the user's profile history. Click on the process date to access the transaction detail.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/z7simage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/z7simage.png)
2. Refund the locker by clicking the refund button.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/3y8image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/3y8image.png)
3. The refund payment record window will open. It is advisable to enter a comment as to why the locker is being refunded.  
    Click Refund Payment Record  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/CUvimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/CUvimage.png)
4. A confirmation screen will open. Click OK to continue.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/gSNimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/gSNimage.png)
5. the adjustment Information screen will open. Click on Process This Adjustment to complete the process.
6. In the user's history the locker now shows as released.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/x5nimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/x5nimage.png)
7. In the list of lockers in the building area the locker will appear as available after this process.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/vMiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/vMiimage.png)

## Refunding a Temp Permit

1. Buy a Temp Permit
2. Pay Temp Permit
3. Refund Temp Permit
4. Temp Permit is Released

## Refunding a Violation and a Permit

1. Buy Permit
2. Get Violation
3. Pay for Violation and Permit
4. Refund Payment
5. Violation needs to be paid, permit is now available

## Adjusting a violation to $0

1. CAN'T BE DONE
2. Well I guess it can be done but the process is rough
3. Create a Payment with a permit and a violation
4. Adjust permit to cover the violation as well as the permit
5. Release the permit

# Electronic Fund Transfer Configurations

# Setup by Tomahawk

If you will be using EFT as a payment method, you must provide Tomahawk with the client number. This is provided by the Royal Bank and will be the identifier they use to deposit to your account.

This information can be setup under the Payments section of the Manage System Settings page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/wv1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/wv1image.png)

# Creating EFT Files to Send to your Bank

Once the subscription is set up and you have performed a rollover, you can export the flat file that contains the EFT information. This file can be sent to your bank for processing. For details about submitting this to your bank, please contact your representative at the Royal Bank of Canada.

1. Go to the payments menu and select **EFT Export.** This will generate the file you need to send to your banking institution.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/oT1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/oT1image.png)

# **Marking EFT Items as Paid**

1. Once the payment has been processed at the bank, a report will be made available to you by your Banking institution. This report will contain information about what payments you submitted were successful. You can update the OPSCOM system and mark these as paid or NSF. To do this go to the Payment Menu and select **EFT Process.**  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/U0simage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/U0simage.png)
2. The **Electronic Funds Transfer Process** window opens. Here you have the ability to select three states for the payments:  
    **- Waiting -** This is the default status of the payment. If the payment has not been processed at the bank leave the payment record in Waiting status. **- Paid -** Toggle this state by clicking on the **Paid** checkbox.  **- Failed -** Select this checkbox if the payment failed for any reason. This will return the item to the user's profile as awaiting payment and archive the record.  
      
    Once you have completed this process click **Mark as Indicated** to finalize the process.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/fquimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/fquimage.png)

# Paying a Violation Anonymously on the Administrator Interface

To begin, go to the **Violations Menu** and select **Search.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/8X1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/8X1image.png)

Enter either the ***Ticket Number*** or the ***License Plate*** number in the Search Text Field and click on **Search** **using only text**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/twdimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/twdimage.png)

This will return a listing of violations.

Note that the **Plate Number** has been found. (1)  
By clicking on the Ticket Number (2) you will bring up the **Violation Information** pop up screen.  
Click on the **Make Anonymous Payment** button to proceed to the Payment Entry process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/lX1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/lX1image.png)

The **Payments Due** window will open allowing you to check to select the ticket you wish to pay. (4)  
Click **Proceed to Payment** (5) in order to advance to the payment due window.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/KL4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/KL4image.png)

In the **Payment Due** window, you can select the method of payment. (6)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/nL4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/nL4image.png)

Note the list of payment types. Click **Submit Payment** to continue to process the payment.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/33himage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/33himage.png)

The screen will refresh, listing the transaction you are about to process. Click **Confirm Payment Information** (7)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/i8vimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/i8vimage.png)

The payment will process and the screen will refresh with the **Transaction Detail** Window. At this point the transaction is complete.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/B7Ximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/B7Ximage.png)

Once the transaction is complete, you can search the violation and see that it is marked as "**PROCESSED**"

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Y2limage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Y2limage.png)

# Permit Purchase by an Admin

## Purchasing a Permit

1. To begin go to **pbirch's** user profile and click on the **Parking** menu item.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/XaPimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/XaPimage.png)
2. The screen will refresh with the following option screen. You may purchase a **Standard Permit**, a **Temporary Permit** or **Associate an Access Card with the User** from this screen.   
    In our case we will select a Standard Parking Permit.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/N3fimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/N3fimage.png)
3. The screen will refresh with the lot selection tool.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/F87image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/F87image.png)
    
      
    The drop down allows the admin to select various lots that are available for this user based on user type. In this scenario lots available to staff members can be selected.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/o9Vimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/o9Vimage.png)
    
      
    As suggested we will select the **Yearly After 4PM lot**. Notice the number of available spaces in each lot is displayed here as well.
4. The screen will refresh with a confirmation screen that displays the purchase details.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/vP1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/vP1image.png)
    
      
    The system will bring up the next available permit in sequence by default, however if there were a requirement to have a specific permit issued to the user, the admin may expand the **permit #** drop down to select a specific permit.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/r6Yimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/r6Yimage.png)
    
      
    Once the permit is selected Click on **Purchase this Permit** to proceed.
5. The screen will refresh with the **Payments Screen** listing the permit as well as any other payment that would be due at this time. Click **Proceed to Payment** to continue.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/gvgimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/gvgimage.png)
6. The screen will refresh with the **Payment Type** selection tool.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/S0Uimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/S0Uimage.png)
    
      
      
    The admin may select whatever payment type they wish to process this payment with from the drop down list.  
    In our case we will select **cash** as the payment type. Click **Submit Payment Type** to proceed.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/IO4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/IO4image.png)
7. The screen will refresh with a confirmation screen showing the payment details with totals. Click on **Confirm Payment Information** to proceed.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Hloimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Hloimage.png)
8. The screen will refresh with the **Transaction Details** screen. There are several sections on this screen that display specific information about your transaction.  
      
    1- The **Confirmation Number** for this transaction.   
    2- The **Submit Date** along with a **View Snapshot** link which allows you to see the payment information for this purchase, however, it does not allow you to drill into the details of each transaction from the snapshot (In the example below, Permit No. 60). It will only display the total of all items and the value of each item individually.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/FN7image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/FN7image.png)

  
3- The **Payment Method** which can actually be changed at this point if needed.   
4- Three options are available:  
**Process Manually** which will complete the purchase  
**Cancel &amp; Keep** which will cancel the transaction but keep the transaction details and reserve the permit so that you can process the payment at another time.  
  
Click on **Process Manually** to complete the purchase.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/7z9image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/7z9image.png)

1. The screen will refresh with the final Transaction Detail screen. This information screen can be accessed in the future from the user's history in order to view this information.  
    The admin has the option from this screen to perform a refund if needed.   
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/U0qimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/U0qimage.png)

## Payment Notes

<span class="legacy-color-text-blue3">Payment Notes allow Admins to annotate refunds and other payment anomalies. These notes are private and not visible to the end user.  
  
</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/X7bimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/X7bimage.png)

<span class="legacy-color-text-blue3">  
</span>

# Transact Campus/CashNet Hosted Payment Setup

## <span data-colorid="kaca6tcb66">Setting up the Payment Page</span>

- Details you will have to provide to OPSCOM support:

<div class="table-wrap" id="bkmrk-setting-details-merc"><table class="wrapped confluenceTable" style="width: 100%;"><colgroup><col style="width: 11.7937%;"></col><col style="width: 88.2063%;"></col></colgroup><thead><tr><th class="confluenceTh">Setting

</th><th class="confluenceTh">Details

</th></tr></thead><tbody><tr><td class="confluenceTd">merchant

</td><td class="confluenceTd">The merchant code we will be submitting items against. This is the Merchant Code on the clients system.

</td></tr><tr><td class="confluenceTd">item code

</td><td class="confluenceTd">They need to set up an item and give us the code. The item will need to be allowed to change the value. See below for the screen. These codes need to match exactly what the client has configured or the transactions will fail.

</td></tr></tbody></table>

</div>## <span data-colorid="wgigebyk91">Payment Page</span>

- Found in Store Settings.
- Details OPSCOM will give to clients:

<div class="table-wrap" id="bkmrk-setting-value-sign-o"><table class="wrapped confluenceTable"><colgroup><col></col><col></col></colgroup><thead><tr><th class="confluenceTh">Setting

</th><th class="confluenceTh">Value

</th></tr></thead><tbody><tr><td class="confluenceTd">Sign-out &amp; Complete payment

</td><td class="confluenceTd">`https://hostedpayments.parkadmin.com/hook/cashnet/CLIENTS-UNIQUE-HOSTED-ID/?a=r` (example)

</td></tr><tr><td class="confluenceTd">Sign-out &amp; Incomplete

</td><td class="confluenceTd">`https://hostedpayments.parkadmin.com/hook/cashnet/CLIENTS-UNIQUE-HOSTED-ID/?a=f` (example)

</td></tr><tr><td class="confluenceTd">Pass information to calling system

</td><td class="confluenceTd">Append Data using GET

</td></tr></tbody></table>

</div><p class="callout info">Please replace the sample "CLIENTS-UNIQUE-HOSTED-ID" in the URLs above with the one provided to you by CashNet.</p>

## Found in Notifications

<div class="table-wrap" id="bkmrk-setting-value-succes"><table class="wrapped confluenceTable"><colgroup><col></col><col></col></colgroup><thead><tr><th class="confluenceTh">Setting

</th><th class="confluenceTh">Value

</th></tr></thead><tbody><tr><td class="confluenceTd">Successful &amp; Failed Transactions

</td><td class="confluenceTd">`https://hostedpayments.parkadmin.com/hook/cashnet/CLIENTS-UNIQUE-HOSTED-ID/?cb=TO-BE-DETERMINED` (example)

</td></tr><tr><td class="confluenceTd">Select format for HTTP content

</td><td class="confluenceTd">Name Value Format (POST)

</td></tr></tbody></table>

</div>## Store Settings

- Under Store Settings, you will need to configure the following settings based on the URLs supplied by OPSCOM:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/PgLimage.png)](https://opscom.wiki/uploads/images/gallery/2024-05/PgLimage.png)

## Configure CashNet "HTTP Notifications" Section

- Go to the "HTTP Notifications" configuration with CashNet.

##### HTTP Notifications

- If you would like HTTP notifications, enter the URL next to each category. If you leave the field blank you will not receive notifications for that category.
- New outbound connections from [CASHNet.com](http://cashnet.com/) will not work until they are allowed through the CASHNet firewall.
- Please contact CASHNet Client Support if you need to enable a new connection.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/wRCimage.png)](https://opscom.wiki/uploads/images/gallery/2024-05/wRCimage.png)

## Setting Item codes

- On the item code itself, we need this set the following:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-05/scaled-1680-/f4pimage.png)](https://opscom.wiki/uploads/images/gallery/2024-05/f4pimage.png)

# TouchNet (uPay) Hosted Payments

##### Credentials Required:

Your TouchNet Account Manager can provide you with the following information:

- **uPay Site ID**: Usually a 3 digit number for example 013
- **uPay**: A secure URL that uniquely identifies your account
- **T-Link web service**: Another secure URL that uniquely identifies your account

These credentials will be given to you for both a Sandbox (Test) and a Production (Live) environment.

Please provide these details to your OPSCOM Account Manager. Charges for setup may apply.

##### T-Link Web Service:

OperationsCommander's parent company Tomahawk Technologies is a [TouchNet ready partner](https://partners.touchnet.com/english/directory/partner/1512039/tomahawk-technologies). When configuring the T-Link in your TouchNet account you maybe asked to select a TouchNet ready partner from a dropdown, please select "Tomahawk Technologies".

If you don't have the ability to configure a T-Link web service URL and your TouchNet Account Manager hasn't supplied one, you may need to request TouchNet setup a "uPay" site for you which supports T-Link web services.

##### GL (General Ledger) Codes:

OperationsCommander's TouchNet integration currently supports multiple GL (General Ledger) codes. One code can be specified for parking permits, another for all other payments (violations, lockers, etc). The GL code can also be the same for all purchases. If using GL codes please let your OPSCOM Account Manage know the GL code name(s) you setup in your TouchNet account.

# SchoolPay

<p class="callout info">OPSCOM supports [SchoolPay](https://www.schoolpay.com/) hosted payment integration. This means your OPSCOM users can use SchoolPay to pay for items in OPSCOM such as permits, lockers, violations, etc.</p>

## Add a new Payment Type:

You can create a new payment type by selecting **System Configuration** → **Payments** → **Setup Payment Types** →**Add Type.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/rldimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/rldimage.png)

If you don't see "Setup Payment Type" as shown above you may need to give your <u>[role the permission](https://wiki.OPSCOM.com/x/B4DjAQ)</u> to do so.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Wq2image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Wq2image.png)

<span class="legacy-color-text-blue3">Select "</span>**SchoolPay - Hosted**<span class="legacy-color-text-blue3">" as your provider → </span>**Next Step**<span class="legacy-color-text-blue3">.</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Tb7image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Tb7image.png)

## Edit Payment Type User Types:

<span class="legacy-color-text-blue3">You should now be brought to the "</span>**Edit Payment Type**<span class="legacy-color-text-blue3">" page:</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/VPuimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/VPuimage.png)

**Type Name:** The type name can be whatever you want it to be, though please note this will also be the name displayed to users when using payment checkout and selecting a payment method. You can reference the specific hosted payment provider such as SchoolPay or something more generic such as "Online Credit Card Payment", "Online payment", "Credit Card", etc. Really it's up to you and what you think makes most sense to your site users when making a payment, also might depend on what payment methods your SchoolPay account supports.

**Enabled for User Types**: Select the <u>User Types</u> you wish this new Payment Type to be visible to so they can select it during payment checkout. You can change these user types at any time

## Edit Payment Type Settings:

There are additional required configuration fields in the **Settings** area:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0ZKimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0ZKimage.png)

<span data-colorid="nflxva7i3c">**Enable for Text2ParkMe**: This payment setting isn't currently supported using OPSCOM SchoolPay integration.</span>

<span data-colorid="ixsco91rob">**Enable for Permit Renewal Payments**: This payment setting isn't currently supported using OPSCOM SchoolPay integration.</span>

<span data-colorid="a67mvje4ni">**Enable for Guest Payments**: if you aren't using this feature leave the button unchecked.</span>

<span data-colorid="tenq6h9k3p">**Prompt Information**: Only "Email Address" is supported with SchoolPay Hosted Payments at this time.</span>

<span data-colorid="vwwmb4zr4u">**Credentials**:</span>

- **Username**: Obtained from SchoolPay.
- **Password**: Obtained from SchoolPay.
- **Item ID**: Obtained from SchoolPay.
- <span data-colorid="yfjt9al2da">**Production/Sandbox**: Select whether you are using your SchoolPay Production/Live credentials or Sandbox/Testing credentials. Additionally, although not required you may find your OPSCOM preview space helpful for testing Sandbox/testing credentials, this way you can keep your production/live OPSCOM data (permits, users, payments, violations, etc) clean/separate during any testing.</span>

Don't forget to save your new payment type by clicking the "Update Payment Type" button along the bottom of the page:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Cxqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Cxqimage.png)

Nothing further needs to be done, however if you are curious what the user process looks like when purchasing something in OPSCOM using SchoolPay a number of screenshots are below to show this.

## User flow screenshots:

User selects SchoolPay payment type in OPSCOM and supplies an email address for identification and email receipt:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/RKPimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/RKPimage.png)

User confirms payment in OPSCOM:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xeiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xeiimage.png)

User is then redirected to SchoolPay's secure system for payment details and processing:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Unkimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Unkimage.png)

User confirms payment details and selects "Finish" at which point their payment method is charged for the transaction:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/KISimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/KISimage.png)

If the payment is successful users will be automatically redirected back to OPSCOM checkout with a payment confirmation:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/LMIimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/LMIimage.png)

Email receipts will also be sent from SchoolPay and OPSCOM to the user supplied email address.

# PayPal

## Step #1: Create a PayPal Account

Configure OPSCOM with your PayPal email address, selected currency and whether you are configuring for production use.

## Step #2: Add credentials to OPSCOM

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/yGTimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/yGTimage.png)

Supply appropriate credentials.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/mEwimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/mEwimage.png)

# OpenEdge Hosted Payments

#### Sign up for your new OpenEdge Account Here: [OPSCOM / OpenEdge](https://lp.globalpaymentsintegrated.com/referrals/OPSCOM/).

On the sign up form you will be asked for **Representative Information.** Here is the correct information to enter:

- **Rep First Name**: Phil
- **Rep Last Name**: MacCallum
- **Rep Email**: [phil.maccallum@ops-com.comcom](mailto:phil@ops-com.comcom)
- **Rep Phone**: <span class="legacy-color-text-default">855.410.4141 x 224</span>

#### Credentials Required:

Your OpenEdge Account Manager can provide you with the following information:

- **Auth Key**: a multi-digit string key
- **Terminal ID**: a 8 digit numeric key
- **X-Web ID**: a 12 digit numeric key

This will be given to you for both a Sandbox and a Production environment.

### <span data-colorid="toy83ug2ln">Create OpenEdge Payment Type:</span>

You can create a new payment type by selecting **System Configuration** (<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://OPSCOM.atlassian.net/wiki/download/thumbnails/766855/image-2023-6-29_12-36-16.png?version=1&modificationDate=1688042177000&cacheVersion=1&api=v2&width=35&height=28)</span> icon in the OPSCOM admin side menu ) → **Payments** → **Setup Payment Types** →**Add Type.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/AIIimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/AIIimage.png)

Select "**EdgeExpress - Hosted**" as your provider → **Next Step**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/D7Ximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/D7Ximage.png)

You should now be brought to the "**Edit Payment Type**" page:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/vOmimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/vOmimage.png)

**Type Name:** The Type name can be whatever you want it to be, though please note this will also be the name displayed to users when using payment checkout and selecting a payment method. You can reference the specific hosted payment provider such as OpenEdge/Edge Express or something more generic such as "Online Credit Card Payment", "Online payment", "Credit Card", etc. Really it's up to you and what you think makes most sense to your site users when making a payment, also might depend on what payment methods your OpenEdge/EdgeExpress.

**Enabled for User Types**: Select the User Types you wish this new Payment Type to be visible to so they can select it during payment checkout. You can change these user types at any time

There are additional required configuration fields in the **Settings** area:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/CGTimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/CGTimage.png)

<span data-colorid="w2wr7v718f">**Enable for Text2ParkMe**: if you aren't using this module leave the button unchecked.</span>

<span data-colorid="v9bh8x3vuw">**Enable for Permit Renewal Payments**<span data-colorid="dp6mm4oppx">: if you aren't using this feature leave the button unchecked.</span></span>

<span data-colorid="np8ylan13f"><span data-colorid="c8m1xj6jbu">**Enable for Guest Payments**: if you aren't using this feature leave the button unchecked.</span></span>

<span data-colorid="p33r8z9kbm"><span data-colorid="npe70tmgif">**Prompt Information**: Only "Email Address" is supported with OpenEdge Hosted Payments at this time.</span></span>

<span data-colorid="dr4lcw7mqr"><span data-colorid="sad1496whj">**Credentials**:</span></span>

- <span data-colorid="ajz88ft2a4">**Production/Sandbox**: Select whether you are using your OpenEdge Production/Live credentials or Sandbox/Testing credentials. Additionally, although not required you may find your OPSCOM preview space helpful for testing Sandbox/testing credentials, this way you can keep your production/live OPSCOM data (permits, users, payments, violations, etc) clean/untouched during any testing.</span>

<span data-colorid="x7yp9h54nh">As referenced above, your OpenEdge Account Manager can provide you with the following credentials:</span>

- **Auth Key**: a multi-digit string key.
- **Terminal ID**: a 8 digit numeric key.
- **X-Web ID**: a 12 digit numeric key.

Don't forget to save your new payment type by clicking the "Update Payment Type" button along the bottom of the page:

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://OPSCOM.atlassian.net/wiki/download/thumbnails/766855/image-2023-6-29_13-54-43.png?version=1&modificationDate=1688046883000&cacheVersion=1&api=v2&width=172&height=31)</span>

Done, the new OpenEdge/Edge Express hosted payment type has been added to your OPSCOM system and you should be ready to test the payment/checkout process using this new payment type.

To test: Using a test user, add a vehicle if none already present, then purchase a $1.00 permit or violation using the new payment type. Complete and pay for the transaction. Once complete the test user will receive an email receipt showing the successful payment. Confirm that your company has received the payment into your bank account to verify that the setup is working correctly.

For some additional reference/clarification this is what the OpenEdge hosted payment page looks like to website users during the checkout/payment process:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/4nkimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/4nkimage.png)

# Moneris Checkout

<p class="callout info">This article provides OPSCOM system admins with a comprehensive guide to setting up and configuring Moneris Checkout as a payment provider. Moneris Checkout is a full-service partner that allows you to support a wide range of payment options within OPSCOM.</p>

---

## Setup and Configuration

Properly configuring Moneris Checkout involves two key stages: configuring the settings within your Moneris merchant account and then mirroring the appropriate settings within OPSCOM. **We recommend using the pre-auth settings in both Moneris and OPSCOM for the most reliable payment process.**

**See this gif image, which shows what setting to change on the Moneris Merchant Resource Center, in order to switch from purchase to pre-authorization. (shown in the image below, beside capture method)**

[![2026-02-24_14-33-17.gif](https://opscom.wiki/uploads/images/gallery/2026-02/2026-02-24-14-33-17.gif)](https://opscom.wiki/uploads/images/gallery/2026-02/2026-02-24-14-33-17.gif)

### Information Required for Setup

![embedded-image-8c6xeq2r.png](https://opscom.wiki/uploads/images/gallery/2026-02/embedded-image-8c6xeq2r.png)

Before beginning the configuration, you must create a profile in your Moneris account. From there, you will need to obtain the following credentials from within the Moneris account. OPSCOM will require these details to connect to the service.

- store\_id: store#
- api\_token: xxXXXXX
- checkout\_id: xxxxxxxxStore#
- Hosted\_token\_id (Generated by you, later on in this document)

&lt;div class="info-box"&gt; You must also determine if your Moneris security settings, such as Address Verification Service (AVS), will require your customer's billing address to be collected. This decision affects which fields OPSCOM will prompt the user to complete.

&lt;/div&gt;

### Moneris Portal Configuration

1. Log in to the Moneris Merchant Resource Center and navigate to the configuration area.

![](https://opscom.wiki/uploads/images/gallery/2025-11/embedded-image-61c6pvfc.png)

2. Click Admin in the main menu and select Moneris Checkout Config.
3. Locate your checkout profile (e.g., MOC-SPO) and click to edit it.

![](https://opscom.wiki/uploads/images/gallery/2025-11/embedded-image-1kv55n4a.png)

From there, you can change any of the settings:

![](https://opscom.wiki/uploads/images/gallery/2025-11/embedded-image-vgj6uuhk.png)![](https://opscom.wiki/uploads/images/gallery/2025-11/embedded-image-yayvnvgz.png)

#### Checkout Type

**Select;**

“I have my custom order form and want to use Moneris simply for payment processing.”

This ensures that Moneris provides the payment fields embedded within your existing OPSCOM order form.

#### Multi-Currency

This feature can be enabled if you need to process payments in multiple currencies.**![](https://opscom.wiki/uploads/images/gallery/2025-11/embedded-image-iconzmmn.png)**

<p class="callout warning">**Feature Limitations:** with Multi-Currency Enabling Multi-Currency will disable support for Recurring Billing, Gift Cards, 3-DSecure 1.0, and Google Pay.</p>

#### Payment

This section defines transaction rules and security options.

- **This is where you can control whether or not you wish to use a pre-authorize or payment capture model, the benefits of which are described above.**
- **Payment Security:** It is your decision whether to enable security features like AVS and CVV. **If you enable these, you must configure OPSCOM to collect the full billing address from users**. Note that if Multi-Currency is active, 3D Secure is not supported.
- **Transaction Type:** You can set this to either preauthorize, or purchase. **THE PAYMENT TYPE IN OPSCOM MUST ALSO BE CONFIGURED THE SAME WAY.**
- **Tokenize Card:** Ensure the Tokenize Card option is ***disabled***. Card tokenization for recurring payments is handled by the **Moneris Vault**, which is configured separately.

<p class="callout info">The purchase model (current) requires a client's connection be stable. Should anything interrupt that, javascript errors, spotty connection, etc., the callback will not reach OPSCOM. With the new pre-auth model, the capturing of the funds now happens server to server meaning neither the client, the app, nor spotty connections can interfere with processing the payment. The Preauthorize Capture model provides a more reliable payment process.</p>

#### Branding and Design

To ensure the payment form integrates smoothly with the user experience:

- Disable the Enable Fullscreen checkbox. This prevents the checkout form from taking over the entire screen.

The rest of the branding and design decisions can be configured to your liking.

#### Order Confirmation

Configure Moneris to redirect the user back to OPSCOM after a payment attempt.

- Select the option “Use Own Page” for the order confirmation. This allows OPSCOM to display the final success or failure receipt.

---

### OPSCOM System Configuration

Payment Types Setup

Please click this [hyperlink](https://opscom.wiki/books/setup-configuration-for-admins/page/managing-payment-types) to be redirected to our Payment Types Setup documentation, and then finish the remaining steps after that has been finished.

Create a new section for setting up Hosted providers. We currently have only three:

- [OpenEdge](https://opscom.wiki/books/the-opscom-admin-portal/page/openedge-hosted-payments)
- [Moneris Checkout ](https://opscom.wiki/books/the-opscom-admin-portal/page/moneris-checkout)
- [Bambora Checkout](https://opscom.wiki/books/the-opscom-admin-portal/page/bambora-checkout)

---

##### Moneris Vault for Stored Payments

![](https://opscom.wiki/uploads/images/gallery/2025-11/embedded-image-peemycxa.png)

Moneris Vault is a complementary service used for tokenizing and storing credit cards for future use, such as with parking rollovers or Text2ParkMe. This functionality requires one additional piece of information during setup:

- hosted\_token\_id: This ID is generated from the Hosted Tokenization page within the Moneris portal.

If you encounter an "Invalid credentials" error when attempting to tokenize a card, it is likely due to a missing hosted\_token\_id or because the token's "Source URL" authentication does not match the domain you are using. For testing, you can use a profile without Source URL authentication.

---

## <span style="color: rgb(22, 145, 121);">Best Practices and Troubleshooting</span>

### <span style="color: rgb(22, 145, 121);">Common Billing and AVS/CVV Errors</span>

<span style="color: rgb(22, 145, 121);">The most common issue during setup is a mismatch between Moneris's expectations and the data OPSCOM provides.</span>

<span style="color: rgb(22, 145, 121);"> If Moneris is configured to require and validate billing details (AVS is enabled), but OPSCOM is only configured to ask for an email address (promptFor is set to anonymous), all transactions will fail. You must ensure the OPSCOM configuration matches the security requirements you set in the Moneris portal.</span>

# Moneris Hosted Paypage

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://OPSCOM.atlassian.net/wiki/download/thumbnails/761893/Moneris_R_MD_BIL_RGB_2016.png?version=1&modificationDate=1524134847000&cacheVersion=1&api=v2&width=200&height=63)</span>

## Setting up Moneris Gateway

**\[Step 1\]** - Login to your Moneris account:

**Development**/Testing Login: [https://esqa.moneris.com/mpg/](https://esqa.moneris.com/mpg/)  
**Production**/Live Login: [https://www3.moneris.com/mpg](https://www3.moneris.com/mpg)

**\[Step 2\]** - Once logged into your Moneris account select **Admin** &gt; **Hosted Paypage Config**.

**\[Step 3\]** - Along the top of the Hosted Paypage Configuration you should see your **ps\_store\_id** and **hpp\_key**. Please copy these details and send them to your **<span class="legacy-color-text-red2">Operations</span>Commander (OPSCOM) contact.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/PTRimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/PTRimage.png)

**\[Step 4\]** - On the Hosted Paypage Configuration page select the settings shown in the below screenshot.

**\*<span class="legacy-color-text-red2">Note</span>**: We will send you the correct **Approved URL** and **Declined URL** to use. That being said, the URLs are listed below. If you do not know what URLs to use (**Development** or **Production**) please consult your **<span class="legacy-color-text-red2">Operations</span>Commander (OPSCOM) contact.

**Development**/Testing:  
Approved URL: [https://hostedpayments.**preview**.parkadmin.com/hook/moneris/](https://hostedpayments-dev.parkadmin.com/hook/moneris/)  
Declined URL: [https://hostedpayments.**preview**.parkadmin.com/hook/moneris/](https://hostedpayments-dev.parkadmin.com/hook/moneris/)

**Production**/Live:  
Approved URL: [https://hostedpayments.parkadmin.com/hook/moneris/](https://hostedpayments.parkadmin.com/hook/moneris/)  
Declined URL: [https://hostedpayments.parkadmin.com/hook/moneris/](https://hostedpayments.parkadmin.com/hook/moneris/)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/bWvimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/bWvimage.png)

**\*<span class="legacy-color-text-red2">Note</span>**: The following **\[Steps\]** are related to the additional configuration pages along the bottom of the main Hosted Paypage Configuration:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/XYQimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/XYQimage.png)

**\[Step 5\]** - **Paypage Appearance**

These are all optional settings related to the appearance of your Moneris Hosted Paypage. There is a preview button that allows you to view changes. This will be the page that your customers see when supplying their payment details during the checkout process through **<span class="legacy-color-text-red2">Operations</span>Commander (OPSCOM).

**\[Step 6\]** - **Response/Receipt Data**

Select the settings shown in the below screenshot.

**\*<span class="legacy-color-text-red2">Note</span>**: We will send you the correct **Async Response URL** to use. That being said, the URLs are listed below. If you do not know what URLs to use (**Development** or **Production**) please consult your **<span class="legacy-color-text-red2">Operations</span>Commander (OPSCOM) contact.

**Development**/Testing:  
Async Response URL: [https://hostedpayments.**preview**.parkadmin.com/hook/moneris/](https://hostedpayments-dev.parkadmin.com/hook/moneris/)

**Production**/Live:  
Async Response URL: [https://hostedpayments.parkadmin.com/hook/moneris/](https://hostedpayments.parkadmin.com/hook/moneris/)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/RVdimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/RVdimage.png)

**\[Step 7\]** - **Security Features**

Select the settings shown in the below screenshot.

**\*<span class="legacy-color-text-red2">Note</span>**: We will send you the correct **Response URL** to use. That being said, the URLs are listed below. If you do not know what URLs to use (**Development** or **Production**) please consult your **<span class="legacy-color-text-red2">Operations</span>Commander (OPSCOM) contact.

**Development**/Testing:  
Response URL: [https://hostedpayments.**preview**.parkadmin.com/hook/moneris/](https://hostedpayments-dev.parkadmin.com/hook/moneris/)

**Production**/Live:  
Response URL: [https://hostedpayments.parkadmin.com/hook/moneris/](https://hostedpayments.parkadmin.com/hook/moneris/)

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Qyfimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Qyfimage.png)

**\[Step 8\]** - **Email Receipts**

These are optional settings related to sending customers email receipts. **<span class="legacy-color-text-red2">Operations</span>Commander (OPSCOM) doesn't currently send email receipts so you may wish to enable this functionality. By default **<span class="legacy-color-text-red2">Operations</span>Commander (OPSCOM) will display a receipt back to users after a successful or failed transaction and allow successful payments to be reviewed at a later date under the users account history.

## Moneris Test Credit Cards

Moneris provides a list of credit card numbers you may use to test against during your penny testing

## Payments Declined

If you are having payments declined issue after you have set up please make sure that you are checking your total against the penny value simulator. This chart allows you to force certain callback responses based on the amount paid by the test visa gateway: [https://developer.moneris.com/en/More/Testing/Penny%20Value%20Simulator](https://developer.moneris.com/en/More/Testing/Penny%20Value%20Simulator)

# Chase E-xact Hosted Payments

<p class="callout info">Unlike the Direct Post Method, E-xact uses Hosted Payment Page (HPP) integration with Relay Response. The customer is redirected to E-xact's secure payment form, and transaction results are posted back to our webhook endpoint.</p>

## Setting up Chase E-xact Payments

In order to configure the client OPSCOM site to use Chase E-xact Hosted Payments the client must supply the following credentials:

- Company Name
- Their exacted
- The password used to access the account

# Bambora Checkout

<p class="callout info">To properly configure your Bambora/Wordline payment type in OPSCOM you will require two separate "Authorization Headers". These headers will be referenced below as:  
<span style="color: rgb(0, 0, 0); background-color: rgb(45, 194, 107);">**<span style="text-decoration: underline;">  
Payment</span> Authorization Header**</span>  
**<span style="background-color: rgb(241, 196, 15);"><span style="color: rgb(0, 0, 0);"><span style="text-decoration: underline;">Profile</span> Authorization Header</span>  
  
</span>**The process to generate the two different encoded headers is similar in that both require your Bambora Merchant ID + API access passcode, and both are encoded at the same link, however the API access passcode is different for each and shown on different pages in Bambora (order settings vs payment profile configuration).</p>

## Bambora Configuration:

### Order Settings:

<table border="1" id="bkmrk-login-to-your-bambor" style="border-collapse: collapse; width: 100%; height: 29.7969px; border-width: 0px;"><colgroup><col style="width: 46.9048%;"></col><col style="width: 53.0952%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px; border-width: 0px;">[![2024-10-28_13-30-48.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/o7e2024-10-28-13-30-48.png)](https://opscom.wiki/uploads/images/gallery/2024-10/o7e2024-10-28-13-30-48.png)</td><td style="height: 29.7969px; border-width: 0px;">Login to your Bambora account, then on the left navigation select **Administration** → **Account Settings** → **Order Settings.**</td></tr></tbody></table>

#### API access passcode (**<span style="background-color: rgb(45, 194, 107);"><span style="text-decoration: underline;">Payment</span> Authorization Header</span>**):

On the Order settings page scroll down to "**API access passcode**". If there is nothing in the API access passcode field click the "**Generate New Code**" button. After generating your API access passcode make sure to scroll down to the bottom of the page and click "Update" to save your changes.

#### Merchant ID (MID):

<table border="1" id="bkmrk-your-merchant-id-can" style="border-collapse: collapse; width: 100%; border-width: 0px; height: 122.391px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 122.391px;"><td style="border-width: 0px; height: 122.391px;">[![2024-10-28_13-44-08.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-28-13-44-08.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-28-13-44-08.png)</td><td style="border-width: 0px; height: 122.391px;">Your Merchant ID can be found in the top right of your Bambora account.</td></tr></tbody></table>

#### Encode API Passcode (**<span style="background-color: rgb(45, 194, 107);"><span style="text-decoration: underline;">Payment</span> Authorization Header</span>**):

<table border="1" id="bkmrk-now-that-you-know-yo" style="border-collapse: collapse; width: 100%; height: 1090.39px; border-width: 0px;"><colgroup><col style="width: 44.7619%;"></col><col style="width: 55.2381%;"></col></colgroup><tbody><tr style="height: 442.125px;"><td style="height: 442.125px; border-width: 0px;">[![bambora updated image.png](https://opscom.wiki/uploads/images/gallery/2026-01/bambora-updated-image.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-28-13-50-39.png)</td><td style="height: 442.125px; border-width: 0px;">Now that you know your **API access passcode** and **Merchant ID** [go here.](https://docs.na.worldline-solutions.com/plan-your-integration/create-a-test-account/encode-api-passcode "Encode API Passcode") Copy and paste your Merchant ID (1) and API access passcode (2) into the appropriate fields, then click "**Encode**"(3).

Copy/record the <span style="color: rgb(0, 0, 0); background-color: rgb(45, 194, 107);">**<span style="text-decoration: underline;">Payment</span> Authorization Header**</span> shown. This will be needed later when you setup the Bambora Checkout payment type in OPSCOM. It will be referenced further down this page as the <span style="color: rgb(0, 0, 0); background-color: rgb(45, 194, 107);">**<span style="text-decoration: underline;">Payment</span> Authorization Header**</span>. You should temporarily paste this into a program such as Notepad for easy access later since you will need it later during the OPSCOM configuration.

<p class="callout info">You will want to make sure to copy only the following section returned (excluding quotation marks):  
  
"Passcode \_\_\_\_\_\_"  
  
For example, select/copy as shown in the highlighted example below, starting at the P on Passcode. We want to exclude/not copy "Authorization:"[![bambora-image-2.png](https://opscom.wiki/uploads/images/gallery/2026-01/scaled-1680-/kDXbambora-image-2.png)](https://opscom.wiki/uploads/images/gallery/2026-01/kDXbambora-image-2.png)  
</p>

</td></tr><tr style="height: 109.625px;"><td colspan="2" style="border-width: 0px; height: 109.625px;">---

<p class="callout info">Similar to the above process for encoding your <span style="color: rgb(0, 0, 0);">**<span style="background-color: rgb(45, 194, 107);"><span style="text-decoration: underline;">Payment</span> Authorization Header</span>**</span>, we will be going through a similar process for encoding your <span style="color: rgb(0, 0, 0);">**<span style="background-color: rgb(241, 196, 15);"><span style="text-decoration: underline;">Profile</span> Authorization Header</span>**</span>.</p>

### Payment Profile Configuration:

</td></tr><tr style="height: 205.391px;"><td style="border-width: 0px; height: 205.391px;">[![2024-10-29_14-52-45.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-29-14-52-45.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-29-14-52-45.png)</td><td style="border-width: 0px; height: 205.391px;">Login to your Bambora account, then on the left navigation select **Configuration** → **Payment Profile Configuration.**

</td></tr><tr style="height: 123.828px;"><td colspan="2" style="border-width: 0px; height: 123.828px;">#### API access passcode (**<span style="background-color: rgb(241, 196, 15);"><span style="text-decoration: underline;">Profile</span> Authorization Header</span>**):

Under Security Settings make sure "API access passcode:" is selected. If there is nothing in the API access passcode field click the "**Generate New Code**" button. After generating your API access passcode make sure to scroll down to the bottom of the page and click "Update" to save your changes.

</td></tr><tr style="height: 90.2344px;"><td colspan="2" style="border-width: 0px; height: 90.2344px;">#### Merchant ID (MID):

</td></tr><tr style="height: 29.7969px;"><td style="border-width: 0px; height: 29.7969px;">[![2024-10-28_13-44-08.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-28-13-44-08.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-28-13-44-08.png)</td><td style="border-width: 0px; height: 29.7969px;">Your Merchant ID can be found in the top right of your Bambora account.

</td></tr><tr style="height: 29.7969px;"><td colspan="2" style="border-width: 0px; height: 29.7969px;">#### Encode API Passcode (<span style="background-color: rgb(241, 196, 15);">**<span style="text-decoration: underline;">Profile</span> Authorization Header**</span>):

</td></tr><tr style="height: 29.7969px;"><td style="border-width: 0px; height: 29.7969px;">[![bambora updated image.png](https://opscom.wiki/uploads/images/gallery/2026-01/bambora-updated-image.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-28-13-50-39.png)</td><td style="border-width: 0px; height: 29.7969px;">Now that you know your **API access passcode** and **Merchant ID** [go here.](https://docs.na.worldline-solutions.com/plan-your-integration/create-a-test-account/encode-api-passcode "Encode API passcode"). Copy and paste your Merchant ID (1) and API access passcode (2) into the appropriate fields, then click "**Encode**"(3).

Copy/record the Authorization Passcode returned. This will be needed later when you setup the Bambora Checkout payment type in OPSCOM. It will be referenced further down this page as the "<span style="color: rgb(0, 0, 0); background-color: rgb(241, 196, 15);">**<span style="text-decoration: underline;">Profile</span> Authorization Header**</span>". You should temporarily paste this into a program such as Notepad for easy access later since you will need it later during the OPSCOM configuration.

<p class="callout info">You will want to make sure to copy only the following section returned (excluding quotation marks):  
  
"Passcode \_\_\_\_\_\_"  
  
For example, select/copy as shown in the highlighted example below, starting at the P on Passcode. We want to exclude/not copy "Authorization:"  
  
[![bambora-image-2.png](https://opscom.wiki/uploads/images/gallery/2026-01/kDXbambora-image-2.png)](https://opscom.wiki/uploads/images/gallery/2024-10/E4Cimage.png)</p>

</td></tr></tbody></table>


---

## OPSCOM Configuration:

<table border="1" id="bkmrk-login-to-your-ops-co" style="border-collapse: collapse; width: 100%; border-width: 0px; height: 1707.56px;"><colgroup><col style="width: 50.7747%;"></col><col style="width: 49.2253%;"></col></colgroup><tbody><tr style="height: 73.4375px;"><td colspan="2" style="border-width: 0px; height: 73.4375px;">#### Create new Payment Type in OPSCOM:

</td></tr><tr style="height: 342.5px;"><td style="border-width: 0px; height: 342.5px;">[![2024-10-28_15-47-13.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-28-15-47-13.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-28-15-47-13.png)</td><td style="border-width: 0px; height: 342.5px;">Login to your OPSCOM system with an administrator account that has permission to edit payment types.

In the OPSCOM menu select **System Configuration** → **Payments** → **Setup Payment Types** → **Add Type**.

Select "**Bambora - Checkout**" from the Provider list, then click "**Next Step**".

</td></tr><tr style="height: 73.4375px;"><td colspan="2" style="border-width: 0px; height: 73.4375px;">#### Edit Payment Type - Enabled for User Types:

</td></tr><tr style="height: 382.047px;"><td style="border-width: 0px; height: 382.047px;">[![AsXimage.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/asximage.png)](https://opscom.wiki/uploads/images/gallery/2024-10/asximage.png)</td><td style="border-width: 0px; height: 382.047px;">**Type Name:** The Type Name can be whatever you want it to be, though please note this will also be the name displayed to users during payment checkout when they are prompted to select a payment method.

You can reference the specific hosted payment provider or something more generic such as "Online Credit Card Payment", "Online payment", "Credit Card", etc. Really it's up to you and what you think makes most sense to your site users when making a payment.

**Enabled for User Types**: Select the User Types you wish this new Payment Type to be visible to so they can select it during payment checkout. You can change these user types at any time.

Once done make sure to click the "**Update Payment Type**" button at the bottom of this page.  
  
</td></tr><tr style="height: 73.4375px;"><td colspan="2" style="border-width: 0px; height: 73.4375px;">#### Edit Payment Type - Settings:

</td></tr><tr style="height: 732.906px;"><td style="border-width: 0px; height: 732.906px;">[![2024-10-28_16-35-53.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-28-16-35-53.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-28-16-35-53.png)

</td><td style="border-width: 0px; height: 732.906px;"><span data-colorid="w2wr7v718f">**Enable for Text2ParkMe**: if you aren't using this module leave the button unchecked.</span>

<span data-colorid="v9bh8x3vuw">**Enable for [Permit Renewal Payments](https://opscom.wiki/books/the-opscom-admin-portal/page/feature-overview-rolloverrenew-permits)**<span data-colorid="dp6mm4oppx">: if you aren't using this feature leave the button unchecked.</span></span>

<span data-colorid="np8ylan13f"><span data-colorid="c8m1xj6jbu">**Enable for [Guest Payments](https://opscom.wiki/books/OPSCOM-user-portal/page/quick-easy-guest-payments)**: if you aren't using this feature leave the button unchecked.</span></span>

<span data-colorid="p33r8z9kbm"><span data-colorid="npe70tmgif">**Prompt Information**: This depends on whether or not you're enforcing AVS (Address Verification Service) in your Bambora account. This is set in Bambora under **Administration** → **Account Settings** → **Order Settings → Transaction Reversal Options Conditions.** If using AVS you will require the Prompt for to have "Billing Details" selected, which will prompt users to supply their billing address information during checkout so AVS can pass. Otherwise if AVS isn't required in your Bambora account you can select Email Address in which case no address information will be required from users making payments.</span></span>

<p class="callout info"><span data-colorid="p33r8z9kbm"><span data-colorid="npe70tmgif">If using AVS Bambora recommends enabling only the “AVS Postal/Zip Code Mismatch” option as the Street Mismatch is extremely sensitive and may result in a high decline rate.</span></span></p>

##### **Production Credentials:**

**Profile Authorization Header**: Copy and paste the <span style="color: rgb(0, 0, 0); background-color: rgb(241, 196, 15);">**<span style="text-decoration: underline;">Profile</span> Authorization Header**</span> into this field as detailed in the steps above.

Example:

> Passcode MzAwMjZ0NDVxOkY0NRg0MkRDQkM4QTQxNTJCMTM1MUE4OAZxN0NCM4ND

**Payment Authorization Header**: Copy and paste the <span style="color: rgb(0, 0, 0); background-color: rgb(45, 194, 107);">**<span style="text-decoration: underline;">Payment</span> Authorization Header**</span> into this field as detailed in the steps above.

Example:

> Passcode BVSTYjZ0NDVxLkY0NRg0MURDQkM5QTQxNTJCMTM1HUE3OBQxN0NBN8VC

##### Other Settings:

**Validate Card when adding subscriptions**: Optional setting related to when/if users add a subscription method in OPSCOM for this payment type and whether or not the card is validated by the payment provider when first added as a subscription method. If left unchecked the card will only be validated when/if used for a payment.

**Phone Number Field**: Usually hidden, but some payment providers may require a phone number for payments depending on your fraud detection settings. Recommend leaving hidden unless otherwise stated by your payment provider or if you check a setting in Bambora to require a phone number.

</td></tr><tr style="height: 29.7969px;"><td style="border-width: 0px; height: 29.7969px;"></td><td style="border-width: 0px; height: 29.7969px;">Make sure to click the "**Update Payment Type**" button at the bottom of the page.

</td></tr></tbody></table>

# Authorize.Net

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ofiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ofiimage.png)

Development: [https://sandbox.authorize.net/](https://sandbox.authorize.net/)

This space is primarily for development against the Authorize.Net API. The sandbox area ensures no transactions are accidentally pushed through a "real" payment processor.

Production: [https://account.authorize.net/](https://account.authorize.net/)

The production space is the portal to access transactions and live account settings.

## Production (or Testing) Setup

There are several places where setup is required. The hosted payments page will need to be updated to present a consistent look for the end user. This can be done under the "Payment Form" option under the "Account" area as noted below.

As well, it should be noted that the receipt page and response details do not need to be completed. As part of the payment protocol OPSCOM supplies this information to Authorize.Net

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/G9limage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/G9limage.png)

Please be aware your Authorize.net merchant account needs to have the following settings:

Product Type: **Card Not Present (CNP)**

Market Type: **eCommerce**

These settings are usually setup by your Authorize.net contact on the initial account creation. If you want to confirm the correct settings go to Account &gt; Merchant Profile. Under the Business Information heading it will show your product and market type.

### API Credentials

API credentials are required for communication between OPSCOM and Authorize.Net. You will need 3 pieces of unique identification, one of which (API Login ID) is defined at the time of the account creation.

OPSCOM will need the following ID's

- API Login ID
- Transaction Key
- Signature Key

*Where to obtain these values is noted below.*

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2uYimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2uYimage.png)

In the above screen shot we have chosen to generate a new Transaction Key. Upon selecting Submit, the new transaction key is presented.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0ENimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0ENimage.png)

NOTE

The generated **Transaction Key** and **Signature Key** together with the **API Login ID** need to be supplied to Tomahawk Technologies Inc. to complete the OPSCOM setup.

### Payment Form

You can style the payment form and add additional details to the hosted payment input page. As well, fields such as shipping address can be hidden on the payment form to remove any confusion for the end user.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Zzximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Zzximage.png)

Suggested payment form options:

Note

Personal details can also be removed from the form since OPSCOM will automatically connect the payment to a user. Since users will often use credit cards that are not their own (spouse, parents, corporate) adding the additional fields is suggested.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/zdjimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/zdjimage.png)

AVS (Address Verification Service)

If AVS is enabled please make sure to set the following address fields required:

See [https://support.authorize.net/knowledgebase/Knowledgearticle/?code=000001490](https://support.authorize.net/knowledgebase/Knowledgearticle/?code=000001490) for additional information on AVS

## Site Testing

Testing

This page includes ways to generate failure states: [http://developer.authorize.net/hello\_world/testing\_guide/](http://developer.authorize.net/hello_world/testing_guide/)

# Hosted Payments

- [OpenEdge Hosted Payments](https://opscom.wiki/books/the-opscom-admin-portal/page/openedge-hosted-payments)
- [Bambora/Worldline Hosted Payments](https://opscom.wiki/books/archive/page/bambora-hosted-payments)
- [Bambora/Worldline Checkout ](https://opscom.wiki/books/the-opscom-admin-portal/page/bambora-checkout)
- [Moneris Hosted Payments](https://opscom.wiki/books/the-opscom-admin-portal/page/moneris-hosted-paypage)
- [Paypal Hosted Payments](https://opscom.wiki/books/the-opscom-admin-portal/page/paypal)
- [SchoolPay ](https://opscom.wiki/books/the-opscom-admin-portal/page/schoolpay)
- [TouchNet uPay](https://opscom.wiki/books/the-opscom-admin-portal/page/touchnet-upay-hosted-payments)
- [Transact Campus/CashNet](https://opscom.wiki/books/the-opscom-admin-portal/page/transact-campuscashnet-hosted-payment-setup)
- [Authorize.Net - Limited Support](https://opscom.wiki/books/the-opscom-admin-portal/page/openedge-hosted-payments)
- [Chase Exact - Limited Support](https://opscom.wiki/books/the-opscom-admin-portal/page/chase-e-xact-hosted-payments)

# Technical Schematic - Step #1

<span data-colorid="v3v49j6bg3">Setting Up </span>

1. Send an email to the offenders primary driver that they have a new violation. Generally you would issue the ticket on the same day as the violation.
2. Set a flag in preparation for collections. (If the violation is older than AutoNoticeDays) 
    1. If the violations connected user is primary driver and has an email address 
        1. send an email and flag appropriately (**AutoNotice** = 1)
        2. set **Violation.AutoNotice** to 1
    2. If the violations attached to the user are for the primary driver and they have no email 
        1. set flag to be added to the Letter Report (2)
        2. set **Violation.AutoNotice** to 2
3. 30 days after items are tagged with either 1 or 2 **Violation.AutoNotice** and that have an associated Violation Notice will appear on the "send to collections" report 
    1. that report allows the administrator to select who/which items will be sent to collections

# Automatic Violation Notice

The Automatic Violation Notice Script sends New and Past Due violation notice emails to ParkAdmin users.

For a Lucid Chart Diagram See: Technical Schematic - Step #1

## OPSCOM Settings to be Confirmed:

<div class="columnLayout single" data-layout="single" id="bkmrk-notice-related-setti"><div class="cell normal" data-type="normal"><div class="innerCell"><div class="table-wrap"><table class="wrapped confluenceTable tablesorter tablesorter-default" role="grid"><colgroup><col></col><col></col></colgroup><thead><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Notice related settings are set under System Config > Notice Literature:: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="text-align: left; border: 1px solid var(--ds-border,#ddd); vertical-align: top; min-width: 8px; background: var(--ds-background-accent-gray-subtlest,#f0f0f0) center right no-repeat; font-weight: bold; color: var(--ds-text, #172b4d); cursor: pointer; user-select: none; padding: 7px 15px 7px 10px !important;" tabindex="0">Notice related settings are set under System Config &gt; Notice Literature:</th><th aria-disabled="false" aria-label="Violation days until due is set in Tomahawk Options > System Settings:: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="padding: 7px 15px 7px 10px; text-align: left; border: 1px solid var(--ds-border,#ddd); vertical-align: top; min-width: 8px; background: var(--ds-background-accent-gray-subtlest,#f0f0f0) center right no-repeat; font-weight: bold; color: var(--ds-text, #172b4d); cursor: pointer; user-select: none;" tabindex="0">Violation days until due is set in Tomahawk Options &gt; System Settings:

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd">[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/qbximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/qbximage.png)

</td><td class="confluenceTd">[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/f81image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/f81image.png)

</td></tr></tbody></table>

</div></div></div></div>There are additional settings that will affect whether or not all unpaid violations will be added to the letter or if the selected violations will only be included when it comes time to create the letter report. These settings are found under **System Settings →** **Collections** → **Include All Unpaid Violations.** As mentioned this will allow you to select a single violation in the list and generate a report for all violations associated with that user. Keep in mind that means it will also remove the associated violations from the pick-list on the <span class="legacy-color-text-blue3">Printable Violation Notice Report page even if you only have one of the violations selected.   
</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/TT9image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/TT9image.png)

<span class="legacy-color-text-blue3">  
</span>

## Notice/Email Summary:

In total there are 4 different types of emails that will be sent once the above is setup:

<div class="columnLayout single" data-layout="single" id="bkmrk-user-overdue-account"><div class="cell normal" data-type="normal"><div class="innerCell">- **User overdue account notice** (lets normal users know they have a violation(s) past due in OPSCOM).
    
    <div class="expand-container conf-macro output-block" data-hasbody="true" data-macro-id="6873fa8c-5dcd-435f-8eb9-9b2c1489437a" data-macro-name="expand" resolved=""><div class="expand-control" id="bkmrk-%C2%A0view-email"><span class="expand-control-icon icon"> </span><span class="expand-control-text">View email</span></div><div class="expand-content expand-hidden">  
    </div></div>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/GF3image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/GF3image.png)
    
    <div class="expand-container conf-macro output-block" data-hasbody="true" data-macro-id="6873fa8c-5dcd-435f-8eb9-9b2c1489437a" data-macro-name="expand" id="bkmrk--3" resolved=""><div class="expand-content expand-hidden" id="bkmrk--4"></div></div>
- **User new violation notice** (lets normal users know they have a new violation issued to them the day of, \*note: it seems this will NOT notify older violations once enabled, e.g. violation that is 3 days old vs 1 day old, would only notify the 1 day old user since it's "new").
    
    <div class="expand-container conf-macro output-block" data-hasbody="true" data-macro-id="6d65472f-ca1b-41bd-9c1b-a9582ccc7e76" data-macro-name="expand" resolved=""><div class="expand-control" id="bkmrk-%C2%A0view-email-1"><span class="expand-control-icon icon"> </span><span class="expand-control-text">View email</span></div><div class="expand-content expand-hidden">  
    </div></div>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/iwTimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/iwTimage.png)
    
    <div class="expand-container conf-macro output-block" data-hasbody="true" data-macro-id="6d65472f-ca1b-41bd-9c1b-a9582ccc7e76" data-macro-name="expand" id="bkmrk--5" resolved=""><div class="expand-content expand-hidden" id="bkmrk--6"></div></div>
- **Admin new violation report notice** (emails the OPSCOM administrator telling them how many new violation emails were sent).
    
    <div class="expand-container conf-macro output-block" data-hasbody="true" data-macro-id="4c15ff67-d181-45fa-bc21-c532224481e6" data-macro-name="expand" resolved=""><div class="expand-control" id="bkmrk-%C2%A0view-email-2"><span class="expand-control-icon icon"> </span><span class="expand-control-text">View email</span></div><div class="expand-content expand-hidden">  
    </div></div>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/IO1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/IO1image.png)
    
    <div class="expand-container conf-macro output-block" data-hasbody="true" data-macro-id="4c15ff67-d181-45fa-bc21-c532224481e6" data-macro-name="expand" id="bkmrk--7" resolved=""><div class="expand-content expand-hidden" id="bkmrk--8"></div></div>
- **Admin past due violation report notice** (emails the OPSCOM administrator telling them how many users were emailed past due violation emails AND also how many users couldn't be emailed because they didn't have an email address in the system. These users are added to the "letter report", more info below).
    
    <div class="expand-container conf-macro output-block" data-hasbody="true" data-macro-id="da8d2bd4-b2da-4953-bd56-73efe0082006" data-macro-name="expand" resolved=""><div class="expand-control" id="bkmrk-%C2%A0view-email-3"><span class="expand-control-icon icon"> </span><span class="expand-control-text">View email</span></div><div class="expand-content expand-hidden">  
    </div></div>[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/vvDimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/vvDimage.png)
    
    <div class="expand-container conf-macro output-block" data-hasbody="true" data-macro-id="da8d2bd4-b2da-4953-bd56-73efe0082006" data-macro-name="expand" id="bkmrk--9" resolved=""><div class="expand-content expand-hidden" id="bkmrk--10"></div></div>

</div></div></div>## The NIC Letter

As part of the MTO process an admin can set up a **N**otice of **I**mpending **C**onviction (NIC) letter that can be sent to users who have outstanding violations that will be collected through Ontario courts.  
To configure this letter go to System Messaging and edit the Notice Letter found in the Messages tab.

You can read more about Notice Letters/NIC on this page.

<span data-colorid="mu7sfkl00h">Letter Report:</span>

Users who couldn't be emailed their overdue violations are added to the letter report, which is accessible under Violations &gt; Letter report on the OPSCOM Website. The letter report was created so that OPSCOM administrators can print and mail out overdue violations if they so choose.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/GYAimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/GYAimage.png)

Note: When arriving at this page the results can fall into two categories: Printable Violation Notices and Unprintable. The Unprintable means that there is an incomplete mailing address.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Otfimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Otfimage.png)

## Resending a NIC Letter

Once a NIC letter has been sent it is stored with the associated violation. If for any reason you wish to resend or re-output the letter you can do so from the ticket detail. Search for the ticket or locate it on the user's profile then click on the ticket number to view the ticket detail. From here you will see the Overdue Letter button. By clicking on this button you will be able to view and resend the notice.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Mzdimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Mzdimage.png)

# Collections Module

## Accessing the Collections Module

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Serimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Serimage.png)

There are several steps leading up to a collection since often notification of a user is all that may be needed to collect on overdue funds.

The collections module is currently tied to the Violations menu, but may in the future work with all modules in the system. Originally the implementation worked around the idea that people parking on campus may be unknown users. By having a collection module (and the MTO lookup functionality) unknown user details can be determined from a vehicle tag (plate, province, etc.). Students and staff users can be dealt with in a different manner but can also be sent to collections. In the case of a student, they can be denied graduation if their account is not paid in full.

## Collection Module Operation

In this particular case, the items related to MTO lookup are based on a data format for the Ministry or Transportation Ontario, but could be adjusted to match requirement in any area.

- ### **Vehicle Lookup Export**
    
    
    - allows an administrator to export data in a MTO friendly format. This export can be imported to the MTO terminals by MTO staff (or automation) and the result is an MTO Lookup Report.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/w3oimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/w3oimage.png)

- ### **Import from Lookup (MTO)**
    
    
    - allows an administrator to import the unknown user details back into the system and populate address and contact fields.
- ### **Known Report**
    
    
    - allows an administrator to query and package accounts (as an Excel export) that should be sent to a collection service provider
    - Internally it sets the "SentToCollections" flag on the associated violations so that future queries will not duplicate listings

logic around this report is defined as follows:

- **If**<span data-colorid="urkl0iqvr6"> (the user has an email and an **overdue notice** *(details below)* that was sent more than 30 days ago)   
    </span> **OR**<span data-colorid="lbotnc5tq1"> (the user does not have an email and the violation is past due date)</span>**Then**<span data-colorid="eeec5p2n2r"> include them on the report based on the supplied parameters (user type and days overdue)</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/g2nimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/g2nimage.png)

- ### **Send to Known &amp; Unknown Report**
    
    
    - generates a report of the accounts "SentToCollections" based on the date and user type
    - the report includes details related to payment where applicable

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/R95image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/R95image.png)

## <span class="confluence-anchor-link conf-macro output-inline" data-hasbody="false" data-macro-id="2520ee8c-2ca6-4e4d-9525-f16e72bec285" data-macro-name="anchor" id="bkmrk--6"><span class="confluence-anchor-link" id="bkmrk--7"></span></span>Overdue Notices

See also: Technical Schematic - Step #1

*This document highlights the first steps leading to a collection.*

As part of system automation, overdue notices on violations can be sent out each night. If this is not enabled on your system, please contact Tomahawk Support to have this feature enabled.

Each night the system will create an email list and send overdue notices to any known users that have emails on the system. Essentially the system looks up overdue violations, then looks up vehicles and users associated with those vehicles. From that information it may be able to obtain an email address and formulates a message for delivery to the user.

When the message is sent, the violation field "AutoNotice" is flagged in the database.

In the event a user does not have an email address, or the users are unknown, a report is compiled containing that information and is sent to the system administrator.

An overdue sample message follows:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/dEbimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/dEbimage.png)

# What does a refund look like in the system?

##### What does a Refund do in OPSCOM?

Think of a refund as hitting the "undo" button for a completed transaction. When you process a refund:

- <span style="background-color: rgb(34, 34, 34); color: rgb(170, 170, 170);">Money Back: The customer gets their payment reversed.</span>
- Item Released: The item(s) they purchased become available again in our inventory, ready to be sold to someone else.

<p class="callout warning">**Important Note:** When you refund an entire transaction, **all items within that transaction will be reimbursed, and all of them will be released back into inventory.** If only one item needs to be reimbursed, **<span style="text-decoration: underline;">do an adjustment</span>** and release the item separately.</p>

1\. Locate the user profile for the user you want to refund for.

<p class="callout info">Note: The top right-hand corner will always identify the name of the user that is being worked on. In our example we will refund **Permit #1** at **$395.50** but keep in mind the process is identical for and refund such as Standard Permits, Temporary Permits, Locker rentals, violations etc.  
</p>

2\. From the **History Tab** select **All Records.**

#### <span style="text-decoration: underline;">For Standard &amp; Temporary Permits or Lockers</span>

3\. Find the permit you want to refund and click on the Processed **date** link.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/HLoimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/HLoimage.png)

#### <span style="text-decoration: underline;">**For Violations**</span>

Click on the word **Processed** to access the transaction details.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0QUimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0QUimage.png)

4\. The **Transaction Details** screen appears. Click on the **Refund** button to begin the refund process.

The **Refund Payment Record** window will pop up. Enter the internal organization **Requisition Code** (optional) and the **Refund Amount** (including taxes). You are required to enter a **comment** in order to proceed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/S4Ximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/S4Ximage.png)

 5. Click the **Refund Payment Record** button to continue. A confirmation pop-up will appear. Click **OK** to continue.

<p class="callout warning">**IMPORTANT**: **By using refund for permits and lockers you will be releasing all items associated with this Confirmation Number. Violations however will simply go back to awaiting payment status.** </p>

6\. The **Adjustment Information** pop-up will display showing the refund details. You have the ability to select the type of refund in this window.

7\. Click on **Process This Adjustment** to proceed. You will return to the **Transaction Detail** window showing the details of the refund. Notice the refund amount of **$-395.50** is listed as an **adjustment**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/4cNimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/4cNimage.png)

8\. To see how this appears in the user's profile on the admin side, go back into the history tab and select **All Records**. In the user history we see the record of the original purchase as well as; (1) **Released** date and a note indicating the permit is **"Released back to system by refund process"** and (2) **w**e can also see the refund under **Adjustment Records.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/7fsimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/7fsimage.png)

#### Refunding to Deal with a NSF Payment

Sometimes, a payment fails (like a cheque bouncing – known as "NSF" for Non-Sufficient Funds). When this happens, we need to "refund" that payment in the system to keep our financial records accurate.

#### Why do we refund a NSF Payment?

It's essentially a bookkeeping task. Imagine a cheque came in and was recorded as a payment. If that cheque then bounces, we need to remove that "incoming" payment from our system. By performing a refund, we create an "outgoing" record that balances out the initial "incoming" record of the failed payment. This way, our system accurately reflects that the money never actually arrived.

After you process the refund for an NSF payment, reports (like the Processed Payment Report) will show both the initial "payment" and the subsequent "refund." This is perfectly normal and correct! It records the *attempt* to pay, and then the removal of that payment due to the NSF.

**Key Tips for NSF Refunds:**

- **Payment Type:** When you process the refund for an NSF, be sure to select the **same payment type** (e.g., "Cheque") as the original failed payment. This makes sense for anyone reviewing your accounting.
- **Clear Notes:** It's super important to leave **clear and detailed notes** documenting the failed payment and the exact reason for the refund. This helps everyone understand the situation later on!

# Cancel Transaction

### Cancelling

On the **Transaction Details** screen you can see the different options available. You can choose to **Cancel &amp; Keep** or **Cancel &amp; Release**.

- **Cancel &amp; Keep**<span class="legacy-color-text-blue3"> will cancel the transaction but keep the transaction details and reserve the permit so that you can process the payment at another time.</span>
- **Cancel and Release**<span class="legacy-color-text-blue3"> will cancel the payment and release the permit back into the system</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Qtjimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Qtjimage.png)

A pop-up message will ask that you confirm. Click OK to confirm the cancellation of the transaction.

# Adjustments

## Making an Adjustment as an Admin

1\. Note that the top right-hand corner will always identify the name of the user file that is being worked in.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ncfimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ncfimage.png)

2\. For this example, when finished going through the payment process, on the **Transaction Details** screen, select the **Adjust** link.  
(Note the process is the same if you select the adjustment link before a transaction is completed.)

This will bring up the **Create Adjustment Record** pop-up screen. Enter in the internal organization **Requisition Code**, change the amount sign to positive if you are charging the user more or change the amount sign to a negative if you are reimbursing the user, enter the dollar amount of the adjustment, enter any comments to be associated with the adjustment and select the **Add Adjustment** button at the bottom of the screen. This will bring you back to the **Payment Details** screen with the adjustment listed below the original transaction. Note, at this point, the adjustment is not processed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/FtFimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/FtFimage.png)

3\. Select the **Not processed** link. This will bring up the **Adjustment Information** pop-up screen where you verify the adjustment details are correct.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/QgFimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/QgFimage.png)

4\. If the adjustment details are correct, select the **Process this Adjustment** button at the bottom of the screen. You will notice the **Payment Status** line will change from **Not Processed** to **Submitted** and the date. This completes the adjustment process, altering the dollar amount associated with the item. Note, no items are released back into the inventory system using the adjustment process. If an item needs to be released back into the inventory, this will need to be done separately.

## **Adjusting a Violation Before Payment**

<iframe class="youtube-player conf-macro output-block" data-hasbody="false" data-macro-id="8b465cdd-03ac-4820-9143-162a57ab7c15" data-macro-name="widget" frameborder="0" height="307" src="https://www.youtube.com/embed/Zodi8a4C94M?wmode=opaque" style="width: 616px; height: 307px;" width="616"></iframe>

# Adjusting a violation to zero dollars

## Adjusting the fine amount by editing the ticket:

1. To adjust the fine amount on the ticket go to the user's profile and locate the **violation** you wish to reduce.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/d1Simage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/d1Simage.png)
2. Click on the **ticket number** to access the **Violation Information** detail screen.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Sa9image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Sa9image.png)
3. Click on the **Edit** button in the upper right corner to access the **Edit Violation Information** page.  
    Halfway down the page you will see the offence listed as well as the amount of the violation.  
    Edit the dollar value of the fine to **$0.00.**   
    Click on **Update this Violation** to save your changes.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/qu6image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/qu6image.png)
4. The violation will now appear in the user profile as a zero dollar fine.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/YUBimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/YUBimage.png)

## Cancelling a fine by changing the ticket to a warning:

An admin can change a ticket to a warning which will result in cancelling the fine amount.

1. To do so **edit** the ticket as described above.
2. Check the box next to the word **Warning** to change the state of the ticket. Click on **Update this Violation** to save your changes.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/C9wimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/C9wimage.png)
3. The ticket will appear as follows in the user history. (Captured here from the admin side.)  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/i5Himage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/i5Himage.png)
4. This is how it would appear on the user side:
    
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/l6vimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/l6vimage.png)

## Adjusting the fine amount by processing an adjustment:

This scenario is slightly different as adjustments to fines are done **after** the initial fine has been paid for.

1. To begin, go to the user's history and locate the violation you wish to zero out.  
    In our example we are using Ticket number **TT-10011.**  
    Click on the **Adjust** link on the left.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/7HRimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/7HRimage.png)
2. The **Create Adjustment Record** window will open.   
    Enter the amount you wish to reduce the fine by. In this case the current fine is $*40.00* (the violation had a fine of $*50.00,* but was paid within the widow where the discount of *$10.00* applied)  
    It is advisable to enter a comment as to why the fine is being reduced.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Jw2image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Jw2image.png)
3. This method will place an adjustment on the user's account. This is what it will look like in the payments tab.  
    This adjustment can be applied to a future payment or be processed as a refund.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Uj5image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Uj5image.png)

## Adjusting the fine through the appeals process

A fine can be adjusted or reduced to zero through the appeals process.

# Types of Reimbursement

## Cancel Transaction

- To cancel a transaction<u> **before**</u> a payment is processed

**When would you cancel a transaction?**

- User decides not to follow through on a promise to pay

**Note:**

- Items in the transaction are released back to the system
- The promise to pay is removed from the user (user no longer owes money)

## Adjustments

- Alter the cost of an item<u> **before**</u> it has been paid for
- Alter the value of a transaction<u> </u><u>**after** </u>it has been paid for

**When would you apply an adjustment?**

- User was charged too much or too little for an item
- User is being refunded part of a transaction (ie. not longer using item; pro-rated refund)
- Adjustments can be positive or negative 
    - Can also be considered refunds, but full transaction refunds are a different option

**Note:**

- Items are not released back to the system

## What does a refund look like in the system?

- Item is (or items are) returned <u>**after** </u>it has been paid for
- Transaction needs to be cancelled<u> </u><u>**after**</u> it has been paid for

**When would you give a refund?**

- User has decided against the purchase
- Transaction is totally incorrect and it is easier to start over
- A refund can be used to **reverse** the transaction

**Note:**

- Transaction items are released back to the system
- If there is more than one item in the transaction, all items will be reimbursed and all items are released back to the system. If only one item needs to be refunded/reimbursed, do an adjustment and release the item separately.

# Payment Processing Models

## Using a Gateway

This is being phased out as the method for handling payments.

## Using Hosted Payments

This is the preferred method for handling payments.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/G8Yimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/G8Yimage.png)

# Payments and Transaction Flow

The flow is a 3 step process, which includes:

1. User/Admin link item to user
2. User makes payment promise
3. Admin processes payment

## Step #1:

A user or an administrator links a permit to the user. At this point, there is no payment link and the item is "**Awaiting Payment**" since the user has not selected a payment method (*made a promise of payment*). As well, items (permits) are not accessible to any other system user. *There is a midnight clearing list which can automatically release permits linked to users that do not have promises for payment.*

## Step #2:

User or admin links a **payment type** (ie. cheque, cash, etc.) This puts the user on the **Unprocessed Payments** list, and that list needs to be checked regularly. This allows a user to mail in a cheque or to stop by the office to make payment. In these cases, a user has "promised" to pay. We suggest that permits be released (Drop Payment) after 2 weeks since that offers users enough time to make payment.

## Step #3: 

Once payment is received (cheque is received in the mail, or the user stops by the office to make a payment) the transaction is marked as **processed** and the user is linked to the item. At this point, the item is marked processed and is actually (completely) linked to the user.

# OPSCOM Company Manager and Invoicing - FinanceAdmin

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Re-Sending an Invoice

### Re-Sending an Invoice

In some cases, it may be necessary to re-send an invoice.

For example, if the client mistakenly deleted the email, the admin can search up the original invoice and send it again.

There are two different methods through which this can be done.

- Through the user's history.
- Through the search invoice page.

### Through User Search

The user search can be found under the menu tree:

- **User Management -&gt; User Search**

Once on the user search page, enter the user information and search the user.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/jJ9image.png)](https://opscom.wiki/uploads/images/gallery/2024-09/jJ9image.png)

In the results section, click on the **username** to access the user's profile.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/nCbimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/nCbimage.png)

Once on the user's profile, hover over **History** and navigate through the menu **History -&gt; All Records** to access the list of this user's transactions.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/C86image.png)](https://opscom.wiki/uploads/images/gallery/2024-09/C86image.png)

Locate and click on the **invoice number** that needs to be re-sent.

This will open the invoice preview page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/Kmsimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/Kmsimage.png)

Once in the invoice preview page, locate the **Re-send Email** button.

Click on this button to re-send the invoice.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/7B8image.png)](https://opscom.wiki/uploads/images/gallery/2024-09/7B8image.png)

The invoice email will be re-sent to the user.

The title will indicate that it is an invoice that has been re-sent.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/HiLimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/HiLimage.png)

### Through Invoice Search

The other way to locate an invoice to re-send is using the **Invoice Search** tool.

The page can be found under the menu tree:

- **Permits -&gt; Invoice Search**

This will open the invoice search page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/cPNimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/cPNimage.png)

Enter the search criteria and click search.

Locate the invoice number within the results and click on it.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/BORimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/BORimage.png)

Like with the previous method, this will open the invoice preview where the re-send email button can be found.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/Kb1image.png)](https://opscom.wiki/uploads/images/gallery/2024-09/Kb1image.png)

This will re-send the invoice email to the user.

### Printing From Emailed PDF

A PDF of the invoice can be printed from the email that was sent.

First navigate to the invoice email in the client email and find the where attachments are stored.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/nEnimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/nEnimage.png)

In this example, the attachments are located in the top right.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/dD1image.png)](https://opscom.wiki/uploads/images/gallery/2024-09/dD1image.png)

Download the PDF when prompted.

After the file has been downloaded, the PDF will automatically open, likely in the web browser.

Printing directly from this page will result in the printout being cut-off. To prevent this, first download the PDF to your computer disk.

The save button will be located in the top right.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/IUDimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/IUDimage.png)

Save the file to the preferred location and open it with any PDF reader.

From here, print the PDF like a normal document while ensuring that the print scale is set to 100%.

This will prevent the printout from being cut-off.

<div class="notranslate" id="bkmrk--12" style="all: initial;"></div>

# Cancelling an Invoice

### <span data-colorid="oz48a8x1s8">Cancelling an Invoice</span>

If a company would like users removed or changes made after the invoice has been issued, the invoice must first be cancelled from the **Invoice Search** page.

The page can be found under the menu tree:

- **Permits -&gt; Invoice Search**

If not removed using this page, the invoice will appear twice as revenue for the month it was issued and both invoices will be due for payment. Invoices cannot be removed directly from the user's payment tabs.

To cancel an invoice, first find the invoice using the invoice search page and click the cancel button next to the invoice record that should be cancelled.

Invoices cannot be cancelled if they have already been paid for. To cancel an invoice that has already bee paid for, the payment must be cancelled first.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/g0eimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/g0eimage.png)

This will open a confirmation prompt in a pop-up window.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/nuoimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/nuoimage.png)

Confirm the invoice should be cancelled to mark it as cancelled.

The invoice will now appear as cancelled on the invoice report.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/DTZimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/DTZimage.png)

Make any changes required to the permits and users, and re-issue the invoice through the prepare invoices page. The company should be listed as an option to re-issue the invoice as long as the changes made are not further back than a year.

# Invoice Search

### Searching for an Invoice

First, navigate to the invoice search page.

The page can be found under the menu tree:

- **Permits -&gt; Invoice Search**

This will open the invoice search page.

There are a list of search criteria presented that can be used to filter the results returned. Additional search options can be found by clicking the toggle button in the top right of the menu.

[![cPNimage.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/cpnimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/cpnimage.png)

Press the search button to find invoices matching the entered search criteria.

Click on the invoice number listed within the results to view that invoice.

[![BORimage.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/borimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/borimage.png)

This will open a copy of the invoice sent to the user.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/HeIimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/HeIimage.png)

The search results can also be exported to an Excel document using the button next to the search button.

The exported document will display the revenue for a selected date range by lot.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/5WBimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/5WBimage.png)

# Permit Invoicing

### <span data-colorid="hxeosncora">Invoice Preparation</span>

Before invoices can be prepared, there must first be an invoice number set.

Locate the invoice number settings on the settings page.

The settings page can be found under**:**

- **System Config** &gt; System Settings**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/SyZimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/SyZimage.png)

The invoice settings can be found under the **Payments** menu option.

The starting invoice number can be set here.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/image.png)](https://opscom.wiki/uploads/images/gallery/2024-09/image.png)

The permit invoice template must also be setup from the templates page.

Decide if unpaid permits will be allowed to rollover to the next period.

### Setting Invoice Contacts

Different flags must be set to ensure that companies and individuals that require invoices will receive them.

First, navigate to the company edit screen. This can be found by going to the company search page, found under the menu items:

- **User Management -&gt; Companies**

From this page, enter the search criteria and bring up the company that invoices will be set up for.

The edit button can be found next to the company information.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/NCOimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/NCOimage.png)

Clicking on this will bring up the company edit page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/nGGimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/nGGimage.png)

The relevant field here is invoice emails.

To ensure invoices are received by the correct recipients, populate the 'Invoice Emails' field on the company edit screen with the email addresses of the recipients.

These addresses can be separated by colons ( : ) or commas ( , ).

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/T3Dimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/T3Dimage.png)

### User Configuration

A user can be set as part of a company from the user's profile.

After configuring a user as part of a company, additional configuration options will appear in their profile.

[![2024-09-13_16-01-29.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/2024-09-13-16-01-29.png)](https://opscom.wiki/uploads/images/gallery/2024-09/2024-09-13-16-01-29.png)

For Company Members, an admin must designate a member to act as Company Billing Manager. This will be the company member that receives invoices.

Note: The Billing Manager does not need to be a Company Manager, though they are often assigned both roles. While there can be multiple Company Managers, there should only be one Company Billing Manager.

Designating a Billing Manager is required to activate invoicing.

#### Invoicing Individuals

[![2024-09-13_16-04-45.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/2024-09-13-16-04-45.png)](https://opscom.wiki/uploads/images/gallery/2024-09/2024-09-13-16-04-45.png)

For individual users who are not part of a company but need to receive invoices, edit their user profile and check both the 'Individual' and 'Receives Invoice' checkboxes.

### Creating Permit Invoices

To start creating a permit invoice, first navigate to the page under the menu:

- **Permits -&gt; Prepare Invoices**

The prepare invoices page will be displayed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/f3Cimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/f3Cimage.png)

In sale windows where there are outstanding permits, a button will appear for prepare invoices.

Click on prepare invoices to start the invoicing process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/IV0image.png)](https://opscom.wiki/uploads/images/gallery/2024-09/IV0image.png)

Note - Currently, only permits for user types that are not Student or Staff will be shown as available for invoicing.

#### Setting Invoice Billing and Due Dates

A list of invoices will be displayed for the sale window. All invoices will be selected by default, but specific invoices can be excluded by toggling them off.

As part of the process, the the Billing Date and Due Date for the invoices can be set.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/GuNimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/GuNimage.png)

Click **Send Invoices** to schedule the invoices for sending.

The following message will appear:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/iEoimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/iEoimage.png)

The invoicing task will appear under the calendar icon.

When clicked, the status of the task will be displayed; in this case, it shows as complete.

The task can be cleared by clicking the blue X button.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/l27image.png)](https://opscom.wiki/uploads/images/gallery/2024-09/l27image.png)

#### Emailing

At this stage, the invoices will be emailed to the companies selected.

The invoice will contain a list of users as well as the permit numbers being purchased.

By default, the email will be formatted as follows:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-09/scaled-1680-/fxPimage.png)](https://opscom.wiki/uploads/images/gallery/2024-09/fxPimage.png)

Note the dates:

- The billing date is the date the invoice was sent.
- The due date is the date the invoice is expected to be paid by.

<div class="notranslate" id="bkmrk--39" style="all: initial;"></div>

# Sending Invoices in Advance of Payment

1. To begin, start a regular rollover process, by going into the **Permits** menu and selecting **Active Sales Window.** Click on **Rollover Users** to enter the rollover wizard.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/dfqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/dfqimage.png)
2. By **deselecting** the preferred payment method here you can perform a rollover that will not process automated payments.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/JQximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/JQximage.png)
3. By clicking **Rollover Permits,** the system will enter these permits in a state of awaiting payment and allow for an invoice to be created.  
    To access the invoicing tool, go into the **Payments Menu** and select **Prepare Company Invoices**.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xi4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xi4image.png)
4. The **Prepare Invoice** window will open showing the users who have been set up for invoicing through the rollover process.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/RIUimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/RIUimage.png)
5. By clicking on **Prepare Invoice**, the system will generate an email with the invoice as the body of message.

# Re-Sending an Invoice  
  


When do we use this?

It is also possible to change the email and **re-send** or just resend an invoice if the client requests a second copy sent.  
If for example the client mistakenly deleted the email, the admin has the ability to search up the original invoice and send it again.

In our sample here we are looking for an invoice for **Voula Costa**.

1. To do so there are two different methods. You can find the invoice in the **user's profile under History** or you can search for the invoice through the **Search Invoice** utility.
2. Firstly let's search the user in question: In this case using the last name **Costa**.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/8lXimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/8lXimage.png)
3. Click on the **username** to access the user's profile.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/czwimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/czwimage.png)
4. Once in the user's profile hover over **History** and click on **All Records** to access the list of this user's transactions.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/JLrimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/JLrimage.png)
5. Locate and click on the **invoice number** that you wish to resend.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/tyZimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/tyZimage.png)
6. Once in the invoice preview you will notice the **Re-Send Email** button. Click on this button to re-send the invoice.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/MDqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/MDqimage.png)
7. The invoice will be re-sent. In the sample below there is an original invoice send as well as a re-send. Notice the email title for the re-send has a prefix added indicating this is a **Re-sent** invoice.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0uwimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0uwimage.png)
8. As mentioned above you can also find the invoice you wish to resend using the **Invoice Search tool**. To do so access the tool under the **Permits** menu.  
    Hover over **Permits** and click on **Invoice Search** in the drop down menu.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/A8ximage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/A8ximage.png)
9. In the search criteria window enter the **Invoice Number** in question and click search. In this case **Invoice Number 1018**.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/MwOimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/MwOimage.png)
10. From the resulting search result click on the **Invoice Number** to access the **Invoice Preview Window**.   
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/CMpimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/CMpimage.png)
11. The process after this point is identical to **step 6 and 7** **above**.
12. The Re-Sent Invoice will look identical the original invoice format:  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xpYimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xpYimage.png)
13. It is important to note that in order to print this PDF document you should follow these next steps
14. You must first navigate to the aforementioned email where you will find an attachments link circled below  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/hJfimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/hJfimage.png)
15. After opening the attached PDF file you will be brought to the file opened in the web browser.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/RQbimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/RQbimage.png)
16. If you print form here you will receive a cut off version of this PDF. In order to prevent this you should download the file by pressing this button:  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/tkGimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/tkGimage.png)
17. Save it to your preferred location and open it with the PDF reader of your choosing  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2Lzimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2Lzimage.png)
18. From here you just print the invoice like you would a normal document ensuring that the print scale is set to 100%  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/lRJimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/lRJimage.png)

# Company Setup and Invoices

**Scenario:** An admin for ABC Parking must create a company entry for ACME in OPSCOM.

### Creating a company

- Hover over **User Management**, and click **Companies**.
- The Company Search page displays. Click the **Create New Company** button.
- The Company Edit page displays. For this example, the admin will enter the following information about the ACME company: 
    - **Account Number:** 19380688
    - **Company Name:** ACME Incorporated
    - **Receives Invoice:** Checked
    - **Address (Company):** 2946 Jerome Avenue
    - **Invoice Emails:** James.Rockwood@ACMEINC.com
    - **Contact Name:** James Rockwood
    - **Address (Contact):** 4777 Ersel Street
- Click the **Add New Company** button to save the information. A green confirmation message displays that the company has been added.

### Assign users to the Acme company

- Search for the user profiles of the users you wish to add to the company. Click **User Management**, then **User Search**.
- **Edit** the User profile and indicate if the user is an individual or a company member. In this case, they are a Company Member for Acme Company.
- To designate a Company Manager, enable the **Company Manager** and **Company Billing Account** checkboxes. In this example, James Rockwood is the company manager; he is the person who will pay for invoices for all users assigned to ACME.
- Click the **Submit Registration Information for Processing... button to save.

In this example, we added user **Colby** to the company as well. They are regular users. These user accounts that are created for the Company will not be used by the end user and are only for the Company Manager to use.

### Manage the Company Account

The company manager (**John Doe Welch**) logs into the **OPSCOM** user portal. Now he can manage permits for his user Colby.

- Click on the **Company Users** icon.

James wishes to purchase a permit for **Colbin.** He must login as the user to do so.

- Click the **Login as User button to the right of the user's name.

A blue message appears telling **John Doe Welch** that he is logged in as another user.

- Click the **Parking icon to buy a permit for the user.

In this example, we selected a Standard Parking permit in **Red Student Lot West.** If the company is planning to pay for the permit through the user side (not using invoices), then **John Doe Welch** *(the company manager)* would select the **Proceed to payment** button. In this example, the ACME company is using invoices to purchase permits. John Doe Welch would log out of the User Portal at this point.

### Prepare Invoices

<p class="callout warning">If you have not assigned a **BILLING MANAGER** and **COMPANY MANAGER** you will not be able to prepare invoices for a company. Each company needs both of the above.</p>

The admin user at ABC Parking must create the invoice for the company.

- This is done by hovering over the **Allocations** menu and clicking **Prepare Invoices**.
- Click the **Prepare Invoices** button beside the active sales window. The number of invoices that can be prepared for that time frame show as a number to the left of the button.

The invoice for the ACME company will be displayed, including one permit (the one created for the user **Joseph Callaghan**).

- Click the **Send Invoices button to send the invoice to the ACME company.

<p class="callout info">**Note:** An invoice email template must already be in place prior to being able to prepare invoices. The email template can be modified by the Admin by going to **System Config** &gt; **Email Templates**.</p>

A green confirmation message is displayed indicating the invoice is scheduled.

There will be an icon on the top right of the menu bar that will indicate the progress of the invoices being created. Once completed, it will then be sent to the **Company Billing Account** designate.

In the event of an error, the admin may opt to cancel the invoice, correct the error and then reissue the invoice.

### Paying an Invoice as a Company Manager

Once the company manager at ACME receives the invoice, they must log in to the **OPSCOM** user portal and click the **Payments** icon. **Joseph Callaghan's** permit now available for payment.

The Company Manager can **Continue to Checkout** and submit the payment in the method they prefer. This completes the cycle.

# OperationsCommander Vehicle and People Alarms

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Generic Alarms

<p class="callout info">**Generic Alarms** in OPSCOM provide a flexible notification system for various non-specific alerts, often stemming from external system integrations or unknown user/vehicle IDs. This article details how to configure administrator permissions to view these alarms, explains how generic alarms are triggered and rolled up into dispatch logs, and guides administrators on viewing and clearing them from their dashboards.</p>

### Setup &amp; Configuration

##### <span style="text-decoration: underline;">System Settings</span>

There are a number of system settings you can change on the **Alarms** tab.

- **Generic Alarm Append Threshold -** the number of minutes before an alarm will create a new dispatch log entry instead of appending to an existing one.
- **Generic Alarm Dispatch SubID -** You can set the subID for consistency.
- **Allowed Alert Emails** - You enter the addresses of the systems that will be populating alerts into OPSCOM. To add recipients of alerts, use the [setting in this wiki article. ](https://opscom.wiki/books/setup-configuration-for-admins/page/email-alert-list-Nbx)

To enable administrators to view and manage alarms, proper dispatch permissions must be configured for their roles.

##### Setting up Alarm Permissions

1. 1. Click **System Configuration, Admin Management** and click **Manage Roles**.
    2. Select the administrative role you wish to modify by clicking its **Permissions** button.
    3. Within the **Editing Permissions** screen, under the **Dispatch** category, select the permissions related to alarms (e.g., **View Alarms**, **Clear Alarms**, **Add Alarm Comment**).
    4. Click **Save Permissions** at the bottom of the page when you are finished.

---

### Using this Feature

##### <span style="text-decoration: underline;">How Generic Alarms Get Pushed to the System</span>

Generic alarms can be triggered by several mechanisms:

- **Unknown Student/Staff Number**: If a People Alarm is sent to the system with a student or staff number that does not exist in the OPSCOM database, the alert will be categorized as a generic alarm. The message will include details from the access point or any other provided information.
- **ITS-Networking Alerts Systems**: Some clients integrate their ITS (Information Technology Services) or networking alert systems with OPSCOM. In this scenario, an email alert is pushed from the external system to OPSCOM, which then parses it and issues a generic alert. Clients often utilize this for stolen device alerts, where the external system provides the incident and MAC Address.

<p class="callout info">This specific integration with ITS-Networking Alert Systems must be set up and configured by the OPSCOM Team before it can be used. There may be setup and recurring fees associated.</p>

##### <span style="text-decoration: underline;">Dispatch Logs and Alert Rollups</span>

To prevent the system and administrators from being overwhelmed by a large volume of alerts, OPSCOM implements an alert rollup feature.

- **Dispatch Logs**: Once an alert is received, the system automatically creates a **dispatch report**. If a valid incident was passed to OPSCOM with the alert, the incident will be automatically linked to this dispatch log.
- **Alert Rollups**: If the same alert (e.g., for the same MAC address or incident) is triggered multiple times within a **30-minute timeframe** of the first alert, all subsequent log records for that alert will be **rolled up and added to a single dispatch log record / alert**. This keeps the alert feed concise and actionable.

##### <span style="text-decoration: underline;">Clearing/Viewing Alarms</span>

Administrators have the ability to manage the alerts displayed on their personal dashboard.

1. To view active alarms, hover over the **bell icon** at the top-right of your screen. This will display a list of current alerts.
2. From this list, you can select a specific alert. You will then see two options: 
    - **Go To Entry**: Clicking this will take you directly to the **Dispatch Log Report** and search for the specific alert, allowing for detailed review.
    - **Clear Alarm**: Clicking this will remove the alert icon from the top-right of your screen, indicating that you have acknowledged it. **Note**: Clearing an alarm only removes the alert for **your account**. Other administrators will continue to see the alert until they clear it for themselves.

<p class="callout warning">Clearing an alarm from the dashboard does **not** remove the corresponding dispatch log record. The dispatch log remains accessible for historical tracking and reporting.</p>

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Integration with External Systems**: If integrating with ITS-Networking Alerts Systems, ensure clear communication with the OPSCOM Team during setup to define alert types, data formats (e.g., MAC Address, Incident ID), and desired actions.</span>
- <span style="color: rgb(22, 145, 121);">**Monitor Generic Alarms**: Regularly check the generic alarms section, as these can indicate unprofiled activity or system-level issues that require attention.</span>
- <span style="color: rgb(22, 145, 121);">**Consistent Alerting Protocols**: Develop internal protocols for how different types of generic alarms should be responded to by your administrative team.</span>
- <span style="color: rgb(22, 145, 121);">**Utilize Dispatch Logs for Analysis**: Leverage the Dispatch Log Report to analyze trends in generic alarms, identify recurring issues, or review responses over time.</span>
- <span style="color: rgb(22, 145, 121);">**Awareness of Rollup Feature**: Understand that the 30-minute rollup window is designed to prevent notification fatigue. If multiple similar events occur in quick succession, they will appear as a single alert on the dashboard.</span>

# People Alarms

<p class="callout info">**People Alarms** in OPSCOM provide a critical safety and monitoring feature by allowing administrators to flag specific user profiles with alerts. When an event associated with a flagged user occurs, the system triggers a visual alarm, notifying relevant administrators to take appropriate action. This article outlines how to set up alarm permissions, add people alarms to user profiles, and view/clear these alarms.</p>

### Setup &amp; Configuration

##### <span style="text-decoration: underline;">System Settings</span>

There are a number of system settings you can change on the **Alarms** tab.

- **People Alarm Append Threshold -** the number of minutes before an alarm will create a new dispatch log entry instead of appending to an existing one.
- **People Alarm Dispatch SubID -** You can set the subID for consistency.
- **Allowed Alert Emails** - You enter the addresses of the systems that will be populating alerts into OPSCOM. To add recipients of alerts, use the [setting in this wiki article. ](https://opscom.wiki/books/setup-configuration-for-admins/page/email-alert-list-Nbx)

Before administrators can effectively use the alarm system, the necessary dispatch permissions must be assigned to their administrative roles.

##### <span style="text-decoration: underline;">Setting up Alarm Permissions</span>

1. Click **System Configuration, Admin Management** and click **Manage Roles**.
2. Select the administrative role you wish to modify by clicking its **Permissions** button.
3. Within the **Editing Permissions** screen, under the **Dispatch** category, select the permissions related to alarms (e.g., **View Alarms**, **Clear Alarms**, **Add Alarm Comment**).
4. Click **Save Permissions** at the bottom of the page when you are finished.

##### <span style="text-decoration: underline;">Adding People Alarms to Users</span>

People Alarms are configured directly within a user's profile.

1. Click **User Management, User Search**
2. Search for and select the user to whom you wish to add a People Alarm.
3. Click the **Edit** button next to their **Basic Profile Information** section.
4. This will take you to the **Edit User Profile** window.
5. Locate the option to toggle the **People Alarm**.
6. **Toggle this option On**. Once toggled, you will gain the ability to add an **Alarm Comment** in the provided field.

<p class="callout info">Note: The **License Plate Alarm** and **Plate Alarm** messages will both share this same comment.</p>

- - Even if a user's profile does not have alarms explicitly toggled on or an alarm comment associated, the system will still be alerted if an API call for a specific student/staff number triggers an alarm.

---

### Using this Feature

##### <span style="text-decoration: underline;">Viewing People Alarms</span>

Administrators can view active alarms and dispatch logs directly from the top-right panel on the admin side of OPSCOM.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/cicimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/cicimage.png)

- All alarms associated with a specific user profile or license plate are consolidated into a single **Dispatch Log** entry if the alarm is triggered within 30 minutes of the first alarm related to that profile/plate. This prevents a large number of individual alarms from flooding the system. If more than 30 minutes pass, a new dispatch record will be created.
- If an API call for a person alarm is triggered with an **unknown student/staff account number**, it will be routed to the **generic alarms** section. This is typically indicated by a **bell icon** next to the people and plate alarms section. These generic alarms will also continue to be rolled up into the same dispatch log within 30 minutes of the first alarm.

##### <span style="text-decoration: underline;">Clearing Alarms</span>

You can clear an alarm from your view if you no longer need to be notified about it.

- To clear an alarm, locate it in the alarms panel and select the clear option.

<p class="callout warning">**Important**: Clearing an alarm only removes the alert from the **administrator who cleared it**. The alarm will remain visible for other administrators until they choose to clear it for themselves.</p>

- Even after an alarm is cleared from active view, it can still be accessed and reviewed from the [**Dispatch Log Report**](https://opscom.wiki/books/the-opscom-admin-portal/page/dispatch-logs) for historical reference.

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Clear Alarm Comments**: Use concise and actionable alarm comments (e.g., "Student requires escort," "High-risk individual"). This ensures rapid understanding and appropriate response from administrators.</span>
- <span style="color: rgb(22, 145, 121);">**Role-Based Notifications**: Ensure that administrators who are responsible for responding to people alarms have the correct dispatch permissions configured.</span>
- <span style="color: rgb(22, 145, 121);">**Timely Clearing**: Encourage administrators to clear alarms once they have been addressed. This helps keep the active alarm panel relevant and reduces notification fatigue.</span>
- <span style="color: rgb(22, 145, 121);">**Integration with Protocols**: Integrate the use of People Alarms with your organization's emergency or response protocols. Ensure all relevant staff know what actions to take when an alarm is triggered.</span>
- <span style="color: rgb(22, 145, 121);">**Regular Review of Dispatch Logs**: Periodically review the **Dispatch Log Report** to monitor alarm trends and ensure response effectiveness.</span>

# Plate and Vehicle Alarms

<p class="callout info">OPSCOM's alarm system provides critical real-time notifications for specific events, such as a flagged vehicle being scanned or a user triggering a security alert. This article guides administrators on setting up the necessary permissions to view these alarms, as well as how to attach, manage, and clear **Plate Alarms** and **Vehicle Alarms** for both profiles with and without associated user accounts.</p>

### Setup &amp; Configuration

##### <span style="text-decoration: underline;">System Settings</span>

There are a number of system settings you can change on the **Alarms** tab.

- **Vehicle Alarm Append Threshold -** the number of minutes before an alarm will create a new dispatch log entry instead of appending to an existing one.
- **Plate Alarm Dispatch SubID -** You can set the subID for consistency.
- **Allowed Alert Emails** - You enter the addresses of the systems that will be populating alerts into OPSCOM. To add recipients of alerts, use the [setting in this wiki article.](https://opscom.wiki/books/setup-configuration-for-admins/page/email-alert-list-Nbx)

To enable administrators to view and manage alarms, proper dispatch permissions must be configured for their roles.

##### Setting up Alarm Permissions

1. 1. Click **System Configuration,** then **Admin Management,** and click **Manage Roles**.
    2. Select the administrative role you wish to modify by clicking its **Permissions** button.
    3. Within the **Editing Permissions** screen, under the **Dispatch** category, select the permissions related to alarms 
        - View License Plate alarms
        - Receive License Plate alarms via email
        - View People alarms
        - Receive People Plate alarms via email
    4. Click **Save Permissions** at the bottom of the page when you are finished.

---

### Using this Feature

#### Understanding Plate Alarms

**Plate Alarms** are triggered whenever a license plate with an associated alarm is scanned or read by the system. This includes:

- **Fixed Cameras**: Entrance and exit cameras.
- **Handheld Violation Entries**: By officers in the field.
- **LPR Camera Reads**: Mobile and static LPR systems.

When a Plate Alarm is triggered, a "ding" sound is typically made (for mobile LPR units), and an alert appears in the OPSCOM system. You can also configure an email address to send alarm details to. If a fixed camera triggers the alarm, the camera's name will be listed.

<p class="callout warning">Manually **Chalking Vehicles** from the handheld does **not** trigger an alert.</p>

#### Attaching an Alarm to a Plate Without a Profile

Plates can exist in the system without a full user profile if they are initially entered via:

- Issuing a **New Violation**, **Violation Warning**, or **Chalking Record** through the handheld or admin side.
- Linking the plate to an **Incident** from the admin side.

If you search for a plate on the handheld that doesn't exist in the system, you'll see a **black plus symbol** indicating the vehicle is new. On the admin side, when issuing a violation or creating an incident, you'll have an option to add a new vehicle and its information, which is where the alarm can be added.

<p class="callout warning">To add an alarm to a plate without a profile, there must be an existing incident, violation, or warning associated with the plate. If a plate only has a chalking record, you will need to issue a violation to it or link it to an incident to access the vehicle information fields required to add an alarm. Chalking records alone do not provide a direct option to view or edit vehicle details.</p>

##### <span style="text-decoration: underline;">Steps to Add an Alarm to a Plate Without a Profile</span>

1. **Find the Plate**: 
    - Click **Violations,** then **Vehicles,** and click **Search by Plate**.
    - Enter the **Plate** you wish to add the alarm to (e.g., "JROCK").
    - Click the **Vehicle Info** icon next to the search result.
2. **Add the Alarm to the Plate**: 
    - The **Vehicle Information** window will open. Click **Edit Vehicle**.
    - Toggle the **Vehicle Alarm** checkbox to **On**. You'll see a checkmark appear.
    - Once toggled, you can add an **Alarm Comment** in the provided field. This comment will be visible to officers and administrators when the alarm triggers.
    - Click **Update Vehicle** to apply the alarm correctly.

When this plate is subsequently scanned by LPR (mobile or fixed cameras), a "ding" sound will be made, alerting officers and allowing them to write a dispatch report if needed.

##### <span style="text-decoration: underline;">Adding Plate Alarms to Specific Plates (with User Profile)</span>

If you know the user associated with the plate you wish to alarm:

1. Go to **User Management,** then **User Search**.
2. Search for and select the user's profile.
3. Click the **Vehicles** tab within their profile.
4. You'll see a list of vehicles and their associated plates. Click the **target plate** you wish to alarm. This will bring up a new window with **Vehicle Information**.
5. Follow **Steps 1-3** from "Adding the Alarm to the Plate" (above) to toggle the **Vehicle Alarm**, add a comment, and **Update Vehicle**.

##### <span style="text-decoration: underline;">Adding a Plate Alarm to All Vehicles on a User's Profile</span>

You can apply a Vehicle Alarm to all vehicles associated with a user's profile directly from their basic profile information.

1. Go to **User Management,** then **User Search**.
2. Search for and select the user's profile.
3. Click **Edit** next to the **Basic Profile Information** section.
4. On the user's profile page, you should see two checkboxes: **Plate alarm** and **People alarm**.
5. Toggle the **Plate alarm** checkbox to **On**.
6. Add a **comment** that will be used for this alert.
7. Click **Update** to apply the alarms.

<p class="callout info">The **People Alarms** and **License Plate Alarms** for this user will share the same message if both are toggled on the user's profile.</p>

---

### <span style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations</span>

- <span style="color: rgb(22, 145, 121);">**Clear and Concise Alarm Comments**: Use brief, actionable comments that convey essential information quickly to officers and administrators (e.g., "DO NOT APPROACH - WARRANT," "LOST/STOLEN PERMIT," "CONTACT OWNER").</span>
- <span style="color: rgb(22, 145, 121);">**Permission Management**: Ensure that only authorized personnel have the ability to set and clear alarms due to their critical nature.</span>
- <span style="color: rgb(22, 145, 121);">**System Settings for Alarms**: Review global alarm settings under **System Settings** (e.g., `Alarm Duration`, `Email Address` for alerts, `Generic Alarm Append Threshold`) to ensure they align with your operational needs.</span>
- <span style="color: rgb(22, 145, 121);">**Understanding Alarm Roll-Up**: Be aware that multiple alarms for the same plate/profile will be rolled up into a single dispatch log entry within a 30-minute window to avoid flooding the system with redundant notifications.</span>
- <span style="color: rgb(22, 145, 121);">**Manually Triggered vs. Automated**: Understand that manual chalking does not trigger alerts, but LPR reads and violation entries do.</span>
- <span style="color: rgb(22, 145, 121);">**Regular Review**: Periodically review active alarms and dispatch logs to ensure timely responses and to clear alarms that are no longer relevant to keep the system efficient.</span>

# The Differences Between Alerts, Plate and Vehicle Alarms and DNTT

Alarms and DNTT states are similar in regards to be able to put a flag so to speak on a vehicle.  
  
Do Not Ticket or Tow has a specific meaning and convention to it as it was used in police force jargon for years. The acronym is readily recognizable and therefore pretty straight forward. DNTT has the added feature of being able to set a start date and end date for the DNTT privilege to be valid. You can also specify a location in the DNTT.  
  
If a DNTT is in place a red exclamation mark will appear on the handheld read of the plate but no audible alarm will sound.  
  
On the other hand the alarms and alerts on vehicles are not scheduled or associated to a specific location. They are general alarms.  
This will trigger an alarm whenever that plate it scanned by the handheld or seen by an LPR camera. These alarms can then be turned into dispatch logs and can be actioned by your Security team.

# IncidentAdmin

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Active Dispatch Logs (BETA)

#### **When do we use this?**

Dispatch Logs allows administrators/dispatchers to record and track all inquiries that come into the office through alerts or another system. These dispatch logs can be linked to incidents for further tracking if the alert that triggered the dispatch log did not already have a valid incident attached. The Dispatch Log also provides administrators with a summary of all open dispatch entries. Some systems such as Cisco Prime or ITS-NetworkingAlerts can push the incident number with an alert that creates a dispatch log with the associated incident assuming it exists.

## Reviewing Dispatch Logs:

Hover over the **Incidents** icon, **Dispatch**, and select **Active Dispatch Logs**.

[![2024-10-16_16-56-12.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-16-16-56-12.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-16-56-12.png)

This will bring up the **View/Edit Dispatch Logs** page. Here administrators/dispatchers can view all open logs that still need to be followed-up on.

[![2024-10-16_17-00-42.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-16-17-00-42.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-17-00-42.png)

#### Creating new Dispatch Log Record:

To create a new log record click the "Add Log" button in the top right of your screen:

[![2024-10-16_17-00-421.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-16-17-00-421.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-17-00-421.png)

This will bring up the **Add New Log Record** screen:

[![2024-10-16_17-13-35.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-16-17-13-35.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-17-13-35.png)

Select the appropriate **Source** and **Category** from the drop-down menus and type in any details that need to go with the log in the ***Note section.*** Depending on whether or not you want the dispatch log to be closed, click **Save Log** or **Save Log &amp; Close.** If **Save Log** is clicked the information will be saved and the log will show at the top of the listing of Dispatch Log Records.

#### <span data-colorid="zylxidfrd1">Adding Additional Log Notes:</span>

If dispatchers want to add a separate log that is attached to the first log, click the blue plus icon under actions:

[![2024-10-16_17-21-36.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-16-17-21-36.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-17-21-36.png)

This will bring up an **Add New Log Note** screen where dispatchers can include the **Source** of the information, the **Category** and any notes that need to be included:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/prnimage.png)](https://opscom.wiki/uploads/images/gallery/2024-10/prnimage.png)

 To save the log click the **Save Log** button. **OR** To save the log and to also close the log, if it is completed, click **Save Log &amp; Close** button at the bottom:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/zYiimage.png)](https://opscom.wiki/uploads/images/gallery/2024-10/zYiimage.png)

#### Viewing Additional Notes / Rolled-Up Alerts

The dispatcher can view all of the available log records associated with the dispatch log on the **View/Edit Dispatch Logs** page by clicking a log that has additional notes/alerts associated to it. This is indicated by a blue number (the number being how many notes are linked to the log in question):

[![2024-10-16_18-00-31.gif](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-18-00-31.gif)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-18-00-31.gif)

#### Assigning a log to an incident report:

If dispatchers want to assign an admin user to act on the log or if they want to attach an incident report, select the **Assign** button under actions:

[![2024-10-16_17-30-03.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-16-17-30-03.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-17-30-03.png)

The **Assign an Incident Report** window will open. The dispatcher can either assign the log to **A new incident** or **An existing incident:**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/UCOimage.png)](https://opscom.wiki/uploads/images/gallery/2024-10/UCOimage.png)

IF **A new incident** is selected and assigned to an admin user a new incident will be created.  
IF **An existing incident** is selected a new Incident Number field will appear. The dispatcher can either search incidents already assigned to an admin user OR enter in an incident number:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/1e0image.png)](https://opscom.wiki/uploads/images/gallery/2024-10/1e0image.png)

When an assignment is made, the incident number will appear in the listing of Dispatch Log Records. This link can be selected to gain access to view/edit the incident report if the admin account viewing the dispatch page has permissions to view and/or edit incidents:

[![image.png (2).png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/image-png-2.png)](https://opscom.wiki/uploads/images/gallery/2024-10/image-png-2.png)

#### Close Dispatch Logs:

To close a log once it has been dealt with, click the red X icon under actions:

[![2024-10-16_18-02-23.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-16-18-02-23.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-18-02-23.png)

The **Confirm Closing Log** window will open with a **Confirm** button that can be clicked.

[![2024-10-16_18-04-09.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-16-18-04-09.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-18-04-09.png)

#### Search Contacts:

Depending on the width of the admin/dispatch users **View/Edit Dispatch Logs** page the **Search Contacts** area will either be located on the right side of the screen (for wide monitors/windows):

[![2024-10-16_18-11-55.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-16-18-11-55.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-18-11-55.png)

**OR** along the bottom of the **View/Edit Dispatch Logs** page:

[![2024-10-16_18-13-16.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-16-18-13-16.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-18-13-16.png)

When Search Contacts Button is clicked the Search Contact History window will appear:

[![2024-10-16_18-15-04.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/2024-10-16-18-15-04.png)](https://opscom.wiki/uploads/images/gallery/2024-10/2024-10-16-18-15-04.png)

#### Miscellaneous buttons:

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-10/scaled-1680-/DZrimage.png)](https://opscom.wiki/uploads/images/gallery/2024-10/DZrimage.png)

**Refresh**: The dispatch page will automatically refresh every minute by default. The Refresh number indicates how long until the page will automatically refresh. Some actions will stop the page refresh from occurring such as adding notes or assigning an incident.

**Limit To Recent**: Limit Dispatch logs to recent logs only. Toggle this setting to view older dispatch logs in addition to recent ones.

**View Classic Logs**: This will redirect the admin/dispatcher to the old dispatch logs view, this is a temporary feature that exists until the old dispatch log view is completely removed.

# Viewing an Incident

You can get to the view incident screen from multiple areas. Searches, reports, links from other places.

Once there, you can view something similar to this:

[![view-image1.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/view-image1.png)](https://opscom.wiki/uploads/images/gallery/2024-07/view-image1.png)

### Viewing Permissions

To view the page, you must have one of the following permissions:

- View All Incidents
- View Incidents - Self
    
    
    - AND you must be one of the following:
        
        
        - The reporter
        - Primary Investigator
        - Case Manager
        - Be on a task group that’s assigned in the tasks
        - Be assigned directly to a task.

The edit option is only available if you have one of the following permissions:

- Custom Permission - Open All
- Edit Incidents
- View Incidents - Self
    
    
    - AND you are the reporting admin
    - AND the incident is Open

[![view-image2.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/view-image2.png)](https://opscom.wiki/uploads/images/gallery/2024-07/view-image2.png)

- If the incident is locked and the admin has the permission "incident\_admin" - Incident Administrator, then they can view the lock reason.
- If the admin has the permission "View/Edit Confidential Information," they can see a Confidential Info section near the bottom above files.

### **Dispatch Logs**

Anyone who can view the incident can view the dispatch logs. To add or drop dispatch logs from this incident, the admin must have the permission “Add/Drop Dispatch Logs.”

Linking dispatch logs can be done from either the dispatch entry screen or from the link Log button:

[![view-image3.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/view-image3.png)](https://opscom.wiki/uploads/images/gallery/2024-07/view-image3.png)

Dropping a log can be done from the Dispatch Logs tab. It will prompt the admin prior to dropping the log:

[![view-image4.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/view-image4.png)](https://opscom.wiki/uploads/images/gallery/2024-07/view-image4.png)

### **Linking People**

[![view-image5.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/view-image5.png)](https://opscom.wiki/uploads/images/gallery/2024-07/view-image5.png)

The show more section will show all the extended details about a user that isn’t on the screen above:

[![view-image6.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/view-image6.png)](https://opscom.wiki/uploads/images/gallery/2024-07/view-image6.png)

### **Linking Other Items**

Linking other items such as vehicles, missing property and violations can also be done from here. There’s less information to show than with users.

Related incidents can be viewed here.

[![view-image7.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/view-image7.png)](https://opscom.wiki/uploads/images/gallery/2024-07/view-image7.png)

Useful for when several incidents are all related in some way. How these are linked and managed are done elsewhere.

### **Checklists**

Some incidents require a checklist to be filled out prior to closing or requesting the incident be closed. The subcategory is what defines this requirement:

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-09/scaled-1680-/eihimage.png)](https://opscom.wiki/uploads/images/gallery/2025-09/eihimage.png)

[![image8.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/image8.png)](https://opscom.wiki/uploads/images/gallery/2024-07/image8.png)

To view the checklist, the admin must have one of the following permissions "View All Incidents or Incident Administrator."

When the issue is still open, a warning will appear:

[![image9.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/image9.png)](https://opscom.wiki/uploads/images/gallery/2024-07/image9.png)

Then they can fill out the details and depending if they have the right permission, close or request the incident be closed:

[![image10.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/image10.png)](https://opscom.wiki/uploads/images/gallery/2024-07/image10.png)

### **Tasks and assignment**

[![image11.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/image11.png)](https://opscom.wiki/uploads/images/gallery/2024-07/image11.png)

#### **Case Manager assignment**

To assign an incident to a case manager, the admin editing the report must have the permission “Assign Incident To Case Manager” or they must already be the case manager.

Further to this, to be able to be the case manager, only the admins with the permission “Is Incident Case Manager” or “Is Incident Shift Manager” will be available.

In the above example, Maximillion Smith is not the case manager, nor do they have the assign permission so they can only view who is assigned the case manager role.

#### **Primary Investigator assignment**

Similarly with Primary Investigator, the admin must meet one of the following criteria:

- **Permission:** Edit Incident Tasks
- **Permission:** Is Incident Shift Manager
- **Permission:** Assign Incident To A Different Investigator
- **Role:** Is the case manager for this incident
- **Scenario:** No Primary Investigator is selected and they have the permission Assign Incident to An Investigator

Only admins with the permission “Be Assigned Tasks Directly” will be available.

In the above example, Max has the permission Edit Incident Tasks and therefore can change the primary investigator.

#### **Editing Tasks and Comments**

If the admin is:

- **Permission:** Edit Incident Tasks
- **Permission:** Is Incident Shift Manager
- **Role:** Is the primary investigator or case manager

They can add and edit tasks. They can also edit the text in the task.

[![image12.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/image12.png)](https://opscom.wiki/uploads/images/gallery/2024-07/image12.png)

If the admin does not have the permission, but is assigned to a task either directly or they are part of the task group, they get the reassign option as indicated above.

### **Use of Force Forms**

The use of force form is available for clients in the province of Ontario as this is a Government of Ontario form as indicated below. It requires the setting for Use of Force to be enabled.

On the view incident page, the use of force forms are read only.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-07/scaled-1680-/L1Jimage.png)](https://opscom.wiki/uploads/images/gallery/2024-07/L1Jimage.png)

### **Side Buttons &amp; Permissions**

1\. The first button is available and visible if the admin has the Open Incidents permission. It will either be in a state of open or close depending on the current open/close status.

2\. The second button can either be View, Edit, Edit Summary, or hidden. If the admin meets one of the following requirements:

- **Permission:** Custom Permission - Open All
- **Permission:** Edit Incidents
- **Permission:** Edit Incident Summaries
- **Permission:** View Incidents - Self
    
    
    - AND you are the reporting admin

What the button does will depend on other states:

- If the admin also has the **Incident Admin permission**: 
    - AND the incident is open, the admin can edit the incident.
    - AND the incident is closed, the link will take the admin to the edit summary screen.
- If the admin has the **Edit Incident Summaries permission**: 
    - AND the incident is locked, they can edit the summary.
    - AND the incident is unlocked, they can edit the incident.
- If the incident is **open**: 
    - They can edit the incident.
- If none of the scenarios above match, the admin is not able to edit this incident, nor the summary.

3\. The Distribute &amp; Email buttons are only available to admins with the Incident Admin permission.

4\. The download incident only requires the admin can view the incident at all.

5\. The toggling of read status will switch the state of the read status back and forth between read and unread.

6\. If the admin has the Delete Incident permission, then they can see the next button.

<p class="callout info">If the Incident can be deleted, a delete option will appear. [Refer to this wiki article for more details about Purging Incidents.](https://opscom.wiki/books/setup-configuration-for-admins/page/purging-incidents)</p>

# Filling out the Incident Form (WIP)

Here is a sample of what the Incident report looks like. Basic information describing what occurred can be registered here in the overview. This includes what one might consider the essential information about the incident.

- Description
- Status
- Time
- Place
- Any related information or events

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/DQaimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/DQaimage.png)

The incident report also allows the admin to record details:

- Dispatch Logs
- People Involved
- Vehicles Involved
- Missing Property if any
- Tasks to be completed
- Checklist (A Custom form that can be generated)
- Related issues or incidents
- External (Follow-Up Items)
- Related Violations

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/dslimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/dslimage.png)

# Incident Checklist

### Accessing the Checklist

To access the checklist go into any incident and click on the **Checklist tab**. To access the form click on **Open Checklist**.

The checklist form will open.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xTTimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xTTimage.png)

#   
  
Checklist Fields Defined

**CCTV Reviewed:**

Indicate if the closed-circuit television cameras were reviewed. (Yes/No/Not Required) State the reason for what was selected or additional details. E.g. What was found in the footage? Why was the footage not reviewed?

**Other Resources Reviewed:**

Indicate if other resources were reviewed as a part of the incident. (Yes/No/Not Required) State all resources used or additional details. E.g. Social media, Canada 411 or OPSCOM.

**Witness(es) Interviewed:**

Indicate if witnesses were interviewed as a part of the incident. (Yes/No/Not Required) State all witnesses, and their contribution to the incident resolution or additional details. E.g. Mike Lawson - Saw the incident.

**Suspect(s) / Person(s) of Interest Interviewed:**

Indicate if the suspects were interviewed as a part of the incident. (Yes/No/Not Required) State all suspects involved, and their involvement with the incident or additional details. E.g. Sandra Morra - Admitted fault after evidence had been found.

**Statements Obtained:**

Indicate if statements were collected as a part of the incident. (Yes/No/Not Required) State all the statements provided in relation to the incident or additional details. E.g. No other people at the scene to make a statement.

**Other Evidence Collected:**

Indicate if other physical or virtual evidence was reviewed as a part of the incident. (Yes/No/Not Required) State all the evidence collected, where it is stored and important information about it, or additional details. E.g. Beer bottle - given to the police - had fingerprints of the suspect.

**Safe Plan and Community Resources Discussed with Complainant:**

Indicate if a safe plan and community resources were discussed with the complainant. (Yes/No/Not Required) State what specifically was discussed, or additional details. E.g. Complainant was informed that the police were updated on the case and that the complainant's information was given to them.

**Other Departments / Agencies Consulted or Notified:**

Indicate if other departments were notified as a part of the incident. (Yes/No/Not Required) State all departments notified and the reason why, or additional details. E.g. Housing - Students need to be moved to separate buildings.

**Community Notified:**

Indicate if the community was notified as a part of the incident. (Yes/No/Not Required) State how and why the community was notified, or additional details. E.g. Flyers put up on west residence building to inform other students of the case, due to its nature and school policy.

**Security / CPTED Audit Conducted:**

Indicate if security and/or CPTED (Crime Prevention Through Environmental Design) audit was conducted as a part of the incident. (Yes/No/Not Required) State what was audited, any problems found, and steps taken to resolve them, or additional details. E.g. Audit of residence building security shows blind spots in lobby cameras by front desks. Additional cameras were added.

**Recommendations Made to Prevent a Re-occurrence:**

Indicate if recommendations to prevent future incidents were made. (Yes/No/Not Required) State all recommendations, or additional details. E.g. An employee will be posted at the front desk of the residence building at all times, to ensure the safety of all in the main lobby.

**Complainant Notified of Outcome:**

Indicate if the complainant was notified of the outcome. (Yes/No/Not Required) State what the complainant was told, or additional details. E.g. Bob Gant was informed that there would be an employee posted at the front desk, who could help prevent future incidents.

**Documentation Updated &amp; Filed:**

Indicate if documentation was updated and filed for the incident. (Yes/No/Not Required) State what documentation was updated, or additional details. E.g Security audit has been saved to the security network drive and camera layout has been updated for all buildings.

**Status at time of Closing:**

Indicate the status of the incident at the time the case is closed. (Solved/Unsolved/Unfounded)   
  
**Reason For Report Being Closed:**

Indicate the reasons for the report being closed. (Drop down box) E.g Reason beyond the control of service  
  
**Closing Comments:**

Indicate any final comments or details of the case. E.g. Case has been closed, recommendations have been implemented for security and staffing. This type of incident should no longer be possible on the lobby floors of all residence buildings across campus.

# My Incident Tasks

## Accessing your Tasks

To access your tasks, click on **Incidents**, then click **My Tasks**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Epbimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Epbimage.png)

To view tasks, click on the *<span class="legacy-color-text-blue5">blue drop-down menu</span>*, select your **name**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/AsKimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/AsKimage.png)

Click on the **Incident Number** to display the **Incident information** page for more information.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/lhLimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/lhLimage.png)

# View Cameras

1. To view the cameras, go to Incidents icon, and click on View Camera

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/04timage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/04timage.png)

2\. Next, you will see a page that has a button that says "**Launch Cameras**". Click on it

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/as1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/as1image.png)

 3. A new window will open so you can see the Cameras

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/HY3image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/HY3image.png)

# Related Occurrences

1. Click the **'Incidents Menu'** select '**Search Incidents**'.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Rt6image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Rt6image.png)
2. In the Occurrence# field enter the **Incident Number** you wish to relate to another.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/PoDimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/PoDimage.png)
3. The **Incident Information** screen displays. *Note: the tabs along the top of the form,* they provide a quick summary of information.   
    Under the **'Related'** tab we currently see the numeral 0 indicating that there are no incidents related at this time. When you select the **Related** tab, the button to **Track Related Occurrences** will appear.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0QAimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0QAimage.png)
4. Click the **'Track Related Occurrences**' button to display the **'Track Related Occurrences'** screen. The buttons across the top allow different options to search for. The '**Add Related Occurrences**' form is now available, by selecting **New Related List**.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/GOYimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/GOYimage.png)
5. The first step is to **Name** and **Create** the list. In our example, we are naming the list "***Suspicious Activity March 20***". In the notes field, you can add a description of what the purpose of the list is. Click '**Save**' to save the list name and information. The screen will refresh with a **Search** box now showing at the bottom.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/foFimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/foFimage.png)
6. Enter the **Current Incident Number** you are working with. For this example we are using16-0004. Click **'Search.'**  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/iaaimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/iaaimage.png)
7. Click '**Add**' to add this incident to the list entitled ***'Suspicious Activity March 20th'***.
8. Repeat the search process by entering the *Incident number* you would like to relate to the first incident.  
    For example, Incident 16-0004 as 16-0006 and click **'Search'**. Add this incident to the list. The resulting screen will look like this: Note both 16-0004 and 16-0005 are listed.  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/qREimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/qREimage.png)
9. To see the result of this process, search once again for the original Incident 16-0004 from the **Search Incidents** menu. Note the change in the Related Tab now indicates 1 related occurrence.   
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ptRimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ptRimage.png)
10. Click on **Related** to see the **Related Incident Information**. Note: the related incident is now listed. This information will show up on the incident information for both incidents in question.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/dEQimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/dEQimage.png)

# Dispatch Logs

## Reviewing Dispatch Logs

Hover over the **Incidents** icon, **Dispatch**, and select **Dispatch Logs**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/zl2image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/zl2image.png)

This will bring up the **View/Edit Dispatch Log Records** page. Here administrators/dispatchers can view all open logs that still need to be followed-up on.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/UzYimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/UzYimage.png)

## Printing a Dispatch Log

To print the currently selected dispatch logs, select the appropriate source in the list of current dispatch logs followed by **Print Selected** to get a printed list of these logs.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/DwJimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/DwJimage.png)

## Creating new Dispatch Log Records

To create a new log record select one of the options from the **Create New Log Record**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/SuDimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/SuDimage.png)

Once the source contact for the new log has been selected, this will bring up the **Add New Log Record** screen.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/qg1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/qg1image.png)

Select the appropriate **Category** from the drop-down menu and type in any details that need to go with the log in the ***Note section.*** Select the **Add New** button at the bottom of the screen to save the information. Once the information has been saved, the log will show at the top of the listing of Dispatch Log Records.

## <span data-colorid="zylxidfrd1">Adding Additional Log Notes</span>

If dispatchers want to add a separate log that is attached to the first log, select the **Add link** in the **Add column**. This will bring up an **Add Log Note** screen where dispatchers can include the source of the information, the category and any notes that need to be included. To save the log select the **Add** button at the bottom. To save the log and to also close the log, if it is completed, select the **Add &amp; Close** button at the bottom.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/8CXimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/8CXimage.png)

If dispatchers want to assign an admin user to act on the log or if they want to attach an incident report, select the **Assign** link at the far right of the log. When an assignment is made, the incident number will appear in the listing of Dispatch Log Records. This link can be selected to gain access to view/edit the incident report.

## Viewing Additional Notes / Rolled-Up Alerts

We can view all of the available log records associated with the dispatch log In the **View/Edit Dispatch Log Records**, by selecting the **+** symbol to the left of the log.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/a3Fimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/a3Fimage.png)

Dispatchers can add additional information to the initial log by selecting the link for the dispatch number. To close a log once it has been dealt with, select the **"C"** in the Status column to change the status to closed.

## Bulk Closing of Dispatch Logs

It is also possible to close multiple Dispatch Logs in bulk. Select the logs you wish to close by selecting the checkbox associated with the log in question. Once you have selected all the log records you wish to close, click on Close Selected.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/RcjxFhimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/RcjxFhimage.png)

# Incident Distribution Feature

<p class="callout info">This article describes the Incident Distribution feature, which allows dispatchers to email incident details directly to pre-configured user groups. Its primary purpose is to streamline communication and enable faster response times by eliminating the need to manually copy information to external email clients. This guide is intended for OPSCOM administrators and dispatch personnel.</p>

### Setup &amp; Configuration

Before this feature can be used, an administrator must create distribution *departments*. These *departments* define the recipients for incident emails.

- Go to **System Configuration**, then **Distribution**, and click on **Departments and Users**

##### <span style="text-decoration: underline;">Creating a New Distribution Department</span>

- On the Distribution **Department Dashboard** page, click the **List All** button beside for *Departments*. Then click the plus button.
- Enter a descriptive name in the **Department Name** field (e.g., **Patrol Group A**, **Security Supervisors**). This name will be visible to dispatchers.
- Click **Save Changes**.

##### <span style="text-decoration: underline;">Adding a Contact to a Distribution Department</span>

- On the Distribution **Department Dashboard** page, click the **List All** button, but this time for the *Users* menu. Then click the plus button, again.
- Select the *Department* you want this contact to belong to, and then add the contact information, including **email address.**
- Click **Save &amp; Send Invite**

<p class="callout warning">Once you click the button to *save and send*, this email address will receive an invitation with a link inviting them to view internal incident reports. This is why the email address is required. Contacts who are invited to view distributions are not the same as ***parkers***, or ***admin users***. They can only access the incident distribution module.</p>

##### <span style="text-decoration: underline;">Managing Existing Distribution Groups</span>

From the **Distribution Group Admin** page, you can perform the following actions for any existing group:

- Click the **Edit** button to modify the **Group Name** or the list of **Email Addresses**.
- Click the **Delete** button to permanently remove a group.

### Using this Feature

Once distribution groups are configured, dispatchers can send incident details directly from an incident's information page.

##### <span style="text-decoration: underline;">Sending an Incident Email</span>

1. Go to the **Incident Information** page for the relevant incident.
2. Click the **Email Incident** button. A pop-up window will appear.
3. Click the **Select Recipient** drop-down menu and choose the appropriate distribution group.
4. Optionally, add any relevant comments or instructions in the **Comments** text box.
5. Click the **Send Email** button to distribute the information.

**Key Information in Email** The email sent to the distribution group automatically includes the following key details from the incident report:

- Incident Number
- Location
- Time of Incident
- Description of Incident
- Any optional comment<span class="citation-675 citation-end-675">s added by the dispatcher<sup class="superscript" data-turn-source-index="1"></sup></span>
    
    <div _ngcontent-ng-c1914962545="" class="source-inline-chip-container ng-star-inserted"></div>

<span class="citation-675 citation-end-675">The invitation email looks like this:</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-08/scaled-1680-/Ztiimage.png)](https://opscom.wiki/uploads/images/gallery/2025-08/Ztiimage.png)

---

### <span class="citation-674 citation-end-674" style="color: rgb(22, 145, 121);">Best Practices &amp; Considerations<sup class="superscript" data-turn-source-index="2"></sup></span>

- <span style="color: rgb(22, 145, 121);">**Regularly audit your Distribution Groups to ensure the email lists are up-to-date.** Outdated information can lead to delayed or missed incident notifications.</span>
- <span style="color: rgb(22, 145, 121);">**Use clear and intuitive Group Names.** Names like **Day Shift Patrol** or **Weekend Supervisors** are more effective for dispatchers than generic names like **Group 1**.</span>
- <span style="color: rgb(22, 145, 121);">**Remember** the send invited *Department Contacts/Users* a message letting them know about the system, so they do not delete your message, or loose it in the spam folder.</span>

# View Open Incidents

1\. Hover over the **Incidents** icon and select **View Open Incidents.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/NDbimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/NDbimage.png)

2\. This will take administrators to the **Open Incidents Report Page**. Administrators can select the specific ***Incident Number link*** to view/edit that particular incident.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/SToimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/SToimage.png)

# Incident Summary Report by Sub-Location

1\. Hover over the **Incidents icon**, click **Reports** and select **Sub-Location Report**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/vREimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/vREimage.png)

2\. This will bring up the **Search Incidents** page. Select the specific dates that they want to search as well as the specific sub-location that they want to search. Select the **"Search"** button when all criteria have been entered.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/drHimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/drHimage.png)

3\. This will bring up a table at the top of the page that provides an overview of the incidents that have occurred in each sub-location based on the time frame specified (sample below). Administrators can also select the **Details link** to the right of a particular incident to view/edit that particular incident.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/kevimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/kevimage.png)

# Incidents Summary Report by Category

1\. Hover over the **Incidents** icon, click **Reports** and select **Report by Category**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Hocimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Hocimage.png)

2\. This will take you to the **Incidents Summary by Category** screen. Select the selection boxes beside the categories that you want to include in your report, select the dates that you want the report to include, select location and/or select the sub-location. Select the Search Incidents button at the bottom once you have selected all of the criteria that you want to search by. Note, you do not need to select an option in all sections, only the ones that you specifically want information on.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/iPeimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/iPeimage.png)

3.This will bring up a table at the bottom of the page that provides an overview of the incidents that have occurred in each category based off of your search criteria (sample below). From here you can select any of the links listed as a sub-category to get a **Sub-Category Report.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/lE4image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/lE4image.png)

4\. In the **Sub-Category Report,** administrators can sort the table by selecting the column headings. Administrators can select the Details link beside a particular incident to view/edit details within that incident.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/R9Himage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/R9Himage.png)

# Incidents Summary Report

Hover over the **Incidents** icon, click **Reports** then select **Summary Report.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/0fTimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/0fTimage.png)

This will take you to the **Incident Summary Report** page. Here you can get a summary of all incidents that have been recorded within a specified time frame.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/twIimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/twIimage.png)

Enter the ***start date*** and ***end date*** for the report that you want to create and select the button at the bottom for **"Search Incidents**".

If you wish to include incidents that do not have a summary in the results, uncheck the **Show only Items with Summaries** checkbox.

This will bring up the **Incident Summary Report** at the bottom of the screen. You can export this information to an Excel file by selecting the **"Export to Excel"** button.

You can also get the details of an individual incident by selecting the **"Details"** button to the right of the particular incident that you want to review.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/zhQimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/zhQimage.png)

# Recent Incidents Summary Report (Last 30 Days)

1\. Hover over the **Incidents** icon and select **Recent Incidents**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/GNsimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/GNsimage.png)

2\. This will bring up a table of all incidents that have been recorded in the previous 30 days.

You can get the details of an individual incident by selecting the "**View Incidents**" button to the right of the particular incident that you want to review.

You can also sort the table by selecting the column heading to sort by.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/iEKimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/iEKimage.png)

Note: The ability to export this report to excel is now a permission that can be given to admins.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/3KCimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/3KCimage.png)

# Incident Reports

- [Recent Incidents Summary Report (Last 30 Days)](https://opscom.wiki/books/the-opscom-admin-portal/page/recent-incidents-summary-report-last-30-days)
- [Incidents Summary Report](https://opscom.wiki/books/the-opscom-admin-portal/page/incidents-summary-report)
- [Incidents Summary Report by Category](https://opscom.wiki/books/the-opscom-admin-portal/page/incidents-summary-report-by-category)
- [Incident Summary Report by Sub-Location](https://opscom.wiki/books/the-opscom-admin-portal/page/incident-summary-report-by-sub-location)

# Editing Incidents

1. From the **Incident Information** page, select the '**Edit Incident**' button  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/XZuimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/XZuimage.png)
2. Enter or change any new information, then select '**Update Incident Details**'  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/v4Cimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/v4Cimage.png)
3. Select '**View Incident**' to return to the **Incident Information** page  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/fiqimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/fiqimage.png)
4. There are other options listed down the side bar. An explanation for each button is below:  
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/hOXimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/hOXimage.png)
    
      
    Close Incident - Select this button to toggle the incident between Closed and Open.  
    Edit Incident - Select this button to toggle between viewing and editing the incident.  
    Distribute Incident - Select this button to create a distribution report. This locks the incident from being edited.  
    Email Incident - Select this button to generate an email about the incident.  
    Download Incident - Select this button to download a PDF copy of the incident. This locks the incident from being further edited.  
    Toggle Read Status - Select this button to toggle the read status from '**unread**' to '**read**' or '**read**' to '**unread**'

# Incident Entry

1\. Hover over the **Incidents** icon and select **Incident Entry.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ab7image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ab7image.png)

2\. This will take you to the **Opened Incidents** page. Here you can select the link for a particular ***Incident Number*** to view the details of that particular incident or you can select the ***Create a*** ***New** **Incident*** **button**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/QnXimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/QnXimage.png)

3\. When you select the link to **Enter New Incidents**, this will take you to STEP 1: Finding individuals and vehicles related to an incident. Select the appropriate link to search by Users, Vehicles or Missing Property.

If the incident is not associated with a particular user, vehicle or missing property, select the "**Enter Specific Incident Details**" button.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/TgAimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/TgAimage.png)

4\. Once you find the user that you are looking for, select the "**Add User to Incident"** button at the bottom right.

If there is no user found with the information you are searching, you can select the "**Add a New Individual to the Database**" button at the very bottom, in the center.

This will take you to the STEP 1: Quick Registration Form where you can enter all the details that you have on the individual.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/PdSimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/PdSimage.png)

5\. Once the user is selected or added you will be taken to a page where you can identify specifics about the individuals involved in the incident. Fill in all the details that you have. You must fill in the **Relation** field which identifies person's relationship to the incident (e.g. victim, witness, prime suspect, etc.)

Select the "**Save User Details"** button to save the details. Select the "**Search for Additional Individuals**" button to add other individuals involved in the incident. You can also add vehicle details and property details by selecting the appropriate link.

You can also select the **"Enter Specific Incident Details"** button at the bottom right if there are no other details to add related to people, vehicles, and property.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/NgJimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/NgJimage.png)

Sample Vehicle Search

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/V3Rimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/V3Rimage.png)

Sample Missing Property Search

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/sHyimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/sHyimage.png)

6\. Once you select the **"Enter Specific Incident Details"** button you will be taken to STEP 2: Entering Incident Information.

A summary of the people involved, vehicles involved and/or the missing property involved will appear at the top of the page. Next, you will find the **Incident Information** section where you will fill in all information that you have on the incident. (**OPS Number** is an abbreviation for ***Other Police Services Number*** used for tracking the incident. **PON Summons** is an abbreviation for ***<span data-colorid="zdnnvjng32">Provincial Offences Notice Summons.</span>***)

To attach images, select the **"Choose File"** button beside the line for Attach Image, find and select the file that you want to attach and select the **"Open"** button. This will upload the file and attach it to the incident.

When all information is submitted in the Incident Information section, select **"Save Incident"** at the bottom of the page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/e1eimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/e1eimage.png)

7\. Once the incident has been saved you will be taken to the **"Incidents - Last 30 Days"** summary screen. If you need to edit any details, select the **"View Incident"** link to the right of the incident that you want to reopen.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/P2Vimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/P2Vimage.png)

# Search Incidents

1\. Hover over the **Incidents** icon and select **Search Incidents**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/RWtimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/RWtimage.png)

2\. This will take you to the **Search Incidents** screen. Here you can do an Incident Search, People Search or a Vehicle Search.

Fill in the information you want to search by and select the "**Search**" button at the bottom of that particular section.

## Search Criteria

<span data-colorid="zj2uswmw7a">**Occurrence #:** When an incident is created in the system a unique ID number is designated to the incident that can be referenced in this search module.</span>

<span data-colorid="s1s1c1ez2b">**Police Occurrence #:** If you partner with a police force they may have a reference number that can be assigned and searched.</span>

<span data-colorid="e1vscwzai8">**Reported by (Officer):** This search filter will narrow your search to incidents reported by specific officers selected from a drop down pick list.</span>

<span data-colorid="t9zw4gbc20">**Reported Dates**: Enter the date on which the incident was reported.</span>

**Status:** Select from a drop down pick list incidents that have a status of **Open, Closed,** or **Close Requested**

**Summary:** Enter a short description of the incident in question.

**<span data-colorid="c3arkcjgbd">Between Dates: </span>**<span data-colorid="ot14bo8ov9">Enter a date range in which the incident occurred.</span>

**Location** and **Sub-Location:** Select areas where the incident occurred.

**Room Number:** If the incident occurred in a specific room on campus, enter the room number here.

**Category:** Select the general type of incident being searched from a drop down pick list.

**Sub Category:** Select the specific type of incident in relation to the general type being searched from a drop down pick list. The list changes based on which general category is chosen.

<span data-colorid="ych1krht37">**PON/Summons Issued:** Select whether or not a PON (Provincial Offence Notice) or Summons has been issued.</span>

<span data-colorid="eml3iaap28">**Arrest/Apprehension Made:** <span data-colorid="fm3jlbbexs">Select whether or not an arrest or apprehension of an individual was made.</span></span>

<span data-colorid="vvr3ipt35q"><span data-colorid="e4h4xozg9h">**Violence Involved:** <span data-colorid="pe2wr564gd">Select whether or not violence was involved in the incident.</span></span></span>

<span data-colorid="ww9s4xp753"><span data-colorid="beaat1r5bh">**Weapons Involved:** <span data-colorid="g5who3ay32">Select whether or not weapons of any kind were involved in the incident.</span></span></span>

<span data-colorid="d1vvjj0vgm"><span data-colorid="upy8rzv6y3"><span data-colorid="yfqlgxv61x">**Text:** Use this field to enter related key words, descriptions, locations etc. <span data-colorid="teakr7rwlq">This search field searches both the narrative, and location description.</span></span></span></span>

**<span data-colorid="w6v4w15m8g"><span data-colorid="of4oveui3h"><span data-colorid="jbjwegfrq9"><span data-colorid="v7aedqp5f1">Last Updated Between Dates: </span></span></span></span>**<span data-colorid="ru6h2iz0t3"><span data-colorid="is1b4bqgpa"><span data-colorid="iv71y5tndm"><span data-colorid="umulm9uspx">Select a date range of when an update to the incident information might have occurred.</span></span></span></span>

<span data-colorid="eh7anm73a5"><span data-colorid="vskwm1kd74"><span data-colorid="drlo13ncsb"><span data-colorid="sudy6ihjrv">**Has Been Read:** Select yes, no or either. This will select incidents that have been previously reviewed or those that have not.</span></span></span></span>

<span data-colorid="rrjp7jl2tw"><span data-colorid="ud6rgbjsc1"><span data-colorid="p6ykzhay7s"><span data-colorid="l9pwnyogbk">**Case Manager**: Select from a drop down pick list to filter on specific case managers assigned to the incident in question.</span></span></span></span>

<span data-colorid="yhurbdiury"><span data-colorid="u70nhrkd70"><span data-colorid="iprrsn0lfx"><span data-colorid="cca8h2rmsj">**Primary Investigator:** <span data-colorid="yl48zrr75s">Select from a drop down pick list to filter on specific primary investigator <span data-colorid="huhmu62ofr">assigned to the incident in question</span>.</span></span></span></span></span>

<span data-colorid="qops5ivgwz"><span data-colorid="zpwd0525rf"><span data-colorid="j4bjrp2tde"><span data-colorid="iy00z3wphd"><span data-colorid="ilea7uhhi0">**Task Assignments:** <span data-colorid="cxu5peagyw">Select from a drop down pick list to filter on a specific assignee who has been tasked with investigating the incident in question.</span></span></span></span></span></span>

<span data-colorid="qmb4wk10e7"><span data-colorid="u39j1szc84"><span data-colorid="o44qfqfsz0"><span data-colorid="r1fs5a7o9x"><span data-colorid="uslv12n1g3"><span data-colorid="mic1i7c1ym">**Requires a Checklist:** Select whether or not the incident has a related checklist.</span></span></span></span></span></span>

**<span data-colorid="vauldabxxu"><span data-colorid="ddsgm1f2lq"><span data-colorid="nd1shex344"><span data-colorid="fp6tno8f0y"><span data-colorid="ymv5s52m2s"><span data-colorid="wbzqmdzaf4">Include Checklist Details: </span></span></span></span></span></span>**<span data-colorid="fxm1d6epn8"><span data-colorid="hhz2719obp"><span data-colorid="x1x0oa419z"><span data-colorid="z6kddxq19d"><span data-colorid="frhiym64wk"><span data-colorid="uor6k18de5">If the item above it checked as yes or either, check this box if you wish to have the checklist details appear in your search results.</span></span></span></span></span></span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/lbUimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/lbUimage.png)

**People Search:** In this section you can enter typical details about a specific person to perform an incident search on.

**Vehicle Search:** In this section you can enter typical details about vehicles that are involved in the incident being searched.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/K5Vimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/K5Vimage.png)

# Configuring Incidents

Here is the list of items that would have to be set up in the system prior to using the incident module.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/cNbimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/cNbimage.png)

1. **Categories**: Incident Categories are a listings of the types of Incidents that occur. Each **Category** can have multiple **sub categories**.  
      
    Here's an example of a category and it's sub-category items. In this case the category is **Break and Enter**. The subcategories appear on the right.  
      
    [![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/pbPimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/pbPimage.png)
2. **Flags**: <span data-colorid="g80nnhdow9">Incidents may be </span>**flagged**<span data-colorid="yq87bwjjz8"> for information, and/or importance.  
    An example would be: "Was violence involved?" or "Were there weapons involved?"  
    For more information Refer to this Article.  
      
    </span>
3. <span data-colorid="j4e8yxq108">**Ethnicity**: Within incident reporting you have the ability to enter a description of people associated with the incident, whether it be the victim, a related person, the suspect or person who committed the incident.  
    Ethnicity is one of the descriptors typically used in identifying a person related to an incident.  
      
    </span>
4. <span data-colorid="qnqy6keuyv">**Relations**: In this area you can define the relationship/involvement the individual has with the particular incident<span data-colorid="p4thq79m7f">.  
    Examples could be: Complainant, Witness, Victim etc.  
      
    </span></span>
5. <span data-colorid="bdvnel02aw"><span data-colorid="upsooj99ia">**Ext. User Profile Options**: These items are **extended values** used in describing an individual within incident reporting.  
    Examples could be: Physical descriptors such as hair colour, hair style, Body Build Type, Clothing Style etc.  
    (**Note:** These descriptions will only be seen in the incidents module and not in the user's profile.)  
      
    </span></span>
6. **Missing Property Types**<span data-colorid="aosvbuuxn1">: An incident may include theft or damage to property. This item allows you to create </span>**pick lists**<span data-colorid="aglrqa4lxk"> that can describe property involved in an incident.</span>  
    <span data-colorid="d5g2j3ia5j">Examples could be: Vehicles, personal property such as jewelry, computers, electronic devices, money, etc.</span>
7. <span data-colorid="bzycd8k44z"><span data-colorid="lj2aijg4to">**Cameras**: In this section admins can configure input from surveillance cameras that may have captured the incident.  
      
    </span></span>

# IncidentAdmin Workflow

Incidents can be reported in several ways:

- Campus Security may observe violations as they occur
- Individuals may contact campus security to report incidents
- Staff may report incidents on behalf of fellow staff or students
- Requests to investigate may come from campus administration
- Incidents may be caught on surveillance cameras etc.

Initiating the entry of incidents into the system can be done in a couple of ways.

- Dispatch Logs
- Incident Entry

These items can be generated in any order.

Once an incident is recorded in the system **Security Administrators** can track the progress of any resulting investigation or follow-up events related to the incident.  
Tasks can be created and assigned to officers, primary investigators, case workers and security administration through the incidents tool.

Investigators can track their progress from initial discovery through to resolution.  
Steps taken in the process as well as the outcome for individuals involved can be recorded, and in turn reported on through **IncidentAdmin**.  
  
The following subjects are the main highlights in the workflow process in **IncidentAdmin**.

1. Searching, viewing and editing incident records
2. Working with related occurrences and violations
3. Viewing "**My Tasks**" within **IncidentAdmin**
4. Generating reports from records stored in **IncidentAdmin**

## A Word About Reports

There are a number of reports that can be generated in **IncidentAdmin.**

1. **Recent Incidents Summary Report -** Lists the last 30 days of incident records.
2. **Search Repeat Offenders -** Report on individuals involved in multiple incidents
3. **Weekly Stat Report -** Reports on the number of all types of incidents that happened during a specified time span
4. **Calls for Service**
5. **Summary Search -** A<span data-colorid="ugeoquq8yx">llows administrators to get a summary of all incidents that have been recorded within a specified time frame. </span>
6. **Summary Report -** Allows administrators to produce a list in a spreadsheet format of incident summaries based on a date range**.**
7. **Report by Category** - Search for incidents under defined categories within a specific time frame.
8. **Sub Location Report** - Search incidents filtered by sub location.

# Security with OperationsCommander

**OperationsCommander works hard to maintain an up to date product wiki! If you have any questions or if you feel something is missing,** [**post about it in the community.**](https://community.ops-com.com/c/product-support/6)

# Enhanced Admin Security: Multi-Factor Authentication (MFA) with OperationsCommander

<p class="callout info">The OperationsCommander team has added a critical security layer for our Admin users: Multi-Factor Authentication (MFA)! This is Phase 2 of our MFA project; in Phase 1, [we successfully delivered MFA for all user-side accounts](https://opscom.wiki/books/OPSCOM-user-portal/page/multi-factor-authentication-user-portal). Phase 2 provides Primary Admins with three flexible control options (Hidden, Visible, or Required) and enables Admin Users to securely log in using an email-delivered One-Time Password (OTP). This significantly strengthens account protection, addressing a key security request from clients.</p>

MFA is <u>always mandatory</u> for security-sensitive actions:

- Admin Account Creation
- Password Changes

You will receive an MFA email code for these actions, regardless of the system setting. If you don't receive the code, your email address may be missing or incorrect—please contact your administrator system admin for help.

There are 3 settings for the MFA functionality.

1. Hidden (required for security sensitive actions)
2. Visible (admin user's choice to use or not for non security sensitive actions)
3. Required (required for every login, and security sensitive action, **this is the recommended option**)

This setting is currently only configurable with the helps of support. If you wish to change the options on your site, contact <support@ops-com.com>

Here is how the prompt will look for your admin users:

[![image.png](https://opscom.wiki/uploads/images/gallery/2025-11/scaled-1680-/nD8image.png)](https://opscom.wiki/uploads/images/gallery/2025-11/nD8image.png)

<p class="callout info">Note: In OperationsCommander, the MFA email is a required security communication, and will be sent out to all users, even if they have unsubscribed from all email categories, on their user profile.</p>

---

[Originally requested on this community item!](https://support.OPSCOM.com/portal/en/community/topic/multi-factor-email-notification-for-admin-side)

# Resetting an Administrator's Forgotten Password

From the Admin Login page click on **Forgot your Username or Password** to begin the process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/Nttimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/Nttimage.png)

You will be prompted to enter your **valid email address**. This address must match the currently one that exists on the Admin user's Profile.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/YYaimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/YYaimage.png)

Once you have entered the email address click on **Send Reminder** to proceed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/6CNimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/6CNimage.png)

The screen wil refresh and you will get a message indicating an email has been sent with a reset password link included.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ZEHimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ZEHimage.png)

This is a sample of what that email could look look like. This email can be edited and configured in **Email Templates**. See **Lost Passwords.**

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/4EXimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/4EXimage.png)

The email link will take you to an interface where the admin will enter the email address discussed above and a new password.  
The new password is required to be entered twice for confirmation.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/SkQimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/SkQimage.png)

Once a new password is chosen and entered, click on **Reset Password** to complete the process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/ScSimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/ScSimage.png)

The admin will now be able to log in using the new password they entered.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/QMuimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/QMuimage.png)

# Athletics Module

## Accessing the Athletics Module

The athletics module is a stand-alone module that has its own specific URL. It is not found in any of the typical menus.

To access the module, use your typical admin portal URL, but instead of using /admin, use the following URL:

<span class="nolink">https://'client\_ID'.parkadmin.com/**athletics**</span>

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/QSgimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/QSgimage.png)

## Registering an Athletics Member

To register an Athletics Member, click on **Athletics User Registration**. The quick registration form will appear where you can enter the user's information.

Click **Submit Registration Information for Processing** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/NtTimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/NtTimage.png)

A confirmation screen will appear.

If all information is correct, click on **Information Correct** to continue.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/03iimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/03iimage.png)

## Registering the User's Vehicle

The user information will now appear, providing a prompt to associate a vehicle with the user's information.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/9oMimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/9oMimage.png)

Click on 'Associate a vehicle with this user' to add the user's vehicle information.

Once you have filled in the form, click on **Add New Vehicle**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/e3pimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/e3pimage.png)

## Purchasing a Permit

The user's information will be updated with the vehicle, and the admin will now be able to assign a permit to the user.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/OPzimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/OPzimage.png)

In our example, we will issue a permit in the Company Staff Lot.

Click on Purchase this Permit to complete the purchase process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/M9Vimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/M9Vimage.png)

A message confirming the registration will be shown on screen.

The admin may print the user's permit information from this page.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/xUoimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/xUoimage.png)

## Athletics User Search

From within the module, you can search Athletic Users.

Only users who have been assigned the user type Athletics will appear in this search.

Click **Athletics User Search** to begin.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/x9aimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/x9aimage.png)

Enter the search criteria suggested onscreen and click **Search** to proceed.

From this page, several options are available:

- User history can be viewed by clicking on the gold **H.**
- An email can be sent to the user by clicking on the envelope icon.
- Additional information on a user can be viewed by clicking on their username.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/IDbimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/IDbimage.png)

## Permit Printing

It is possible for an admin to print a user's permit information.

To begin, click on **Print Permits**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2LNimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2LNimage.png)

Select the **Permit Lot** and the **Permit Text** (permit number) and click on **Print Selected Hang Tag** to complete the process.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/cNdimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/cNdimage.png)

## List Athletics Users

To get a list of all users who have been assigned the user type Athletics for use in the portal, click on **List Current Athletic Users**.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/2Xwimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/2Xwimage.png)

A list of all current Athletics users will appear.

Further information can been seen on this screen.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/DuMimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/DuMimage.png)

To see a user's details, click on their username.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/pvHimage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/pvHimage.png)

The screen will refresh and display a detailed view of the user's information.

A list of all the vehicles associated to the user can be seen here.

Additional details on a vehicle can be viewed by clicking on the vehicle plate number.

Also from this page:

- A new vehicle can be added to the user's profile.
- Permit hang tags can be printed.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/9M1image.png)](https://opscom.wiki/uploads/images/gallery/2024-06/9M1image.png)

By clicking on the permit number in **Current Athletics Users**, a pop-up will appear with permit details.

[![image.png](https://opscom.wiki/uploads/images/gallery/2024-06/scaled-1680-/R8Simage.png)](https://opscom.wiki/uploads/images/gallery/2024-06/R8Simage.png)

Click "Log Out" to exit the Athletics module.