Deidentify Driver Data
Deidentify Driver Data
Overview
The Deidentify Driver Data utility lets administrators permanently remove a driver's or employee's personally identifying details from their record, while keeping the record itself (and its related assets, liabilities and addresses) in place.
This process is designed to be run annually, or on whatever regular time frame suits your business, with assistance from Catch-e staff. Catch-e will offer a policy recommendation on the retention time, but you can decide your own timeframe and business rules.
When to Use This
Deidentify personal data when:
There is no requirement to keep it for the business.
You want to delete the personal data of a driver or employee who has no linked quotes, items or contracts, and/or whose record hasn't been edited in more than 2 years.
You want to improve system performance by reducing data volume.
Important — Not Reversible
Updates made by a Deidentify Driver Data job cannot be undone. Test and check your updates carefully before running the process in your Live environment.
Where to Find It
Main Page → Workflow → System Administration → System Maintenance → Deidentify Driver Data
This screen has two related views:
Deidentify Driver Data Field List — the reference list further down this article, showing exactly which fields are cleared.
Deidentify Driver Data Query — the selection query that targets which drivers/employees are included in a run, detailed in the Query section below.
Setup Steps
Review the selection query used for this process — detailed on the Deidentify Driver Data Query page.
If you want to change the query to suit your business, contact Catch-e Support to raise a task for your requested changes.
Determine the timing of the update.
Test the process in your Staging and Support environments.
Train staff on the process.
Arrange for the job to be scheduled in Live.
Query
A query has been written for use in a scheduler deidentify job and is available in the [gb_queries] table.
Name: Driver deidentification query
Description: Query to identify drivers that qualify for deidentification
Logic
The query's logic is based on the driver having been inactive for two years. This time frame can be easily updated to suit your needs.
Drivers are excluded if:
They have any contracts where the Suspend Date is blank, OR
They have any items where the Status is 'Active'
Drivers are included if:
The driver record has not been edited in the last two years, AND
Linked quotes, contracts and items have not been edited in the last two years
Standard Query
A 'field alias' for driver_id is required in the query, or it cannot be allocated to the scheduler job. In the query below, the field alias is seen as SELECT d.driver_id as driver_id, d.created,....
# Query Record
select * from gb_queries where name = 'Driver deidentification query'
;
# Query
SELECT d.driver_id as driver_id, d.created, d.last_edit,
date_format(if(d.last_edit = '0000-00-00', d.created, d.last_edit),'%Y-%m-%d') as driver_date,
COUNT(c.contract_id) AS contracts,
COUNT(epi.employee_package_item_id) AS items,
DATE_FORMAT(MAX(st1.last_edit), '%Y-%m-%d') AS last_edit_records
FROM fm_drivers AS d
LEFT JOIN fm_contracts AS c ON c.driver_id = d.driver_id AND c.suspend_date = '0000-00-00'
LEFT JOIN sp_employee_package_items AS epi ON epi.driver_id = d.driver_id AND epi.status_flag IN ('active')
LEFT JOIN
(SELECT q.driver_id, 'quotes' AS origin, MAX(q.last_edit) AS last_edit
FROM qt_quotes AS q
GROUP BY q.driver_id
UNION
SELECT c.driver_id, 'contracts' AS origin, MAX(c.last_edit) AS last_edit
FROM fm_contracts AS c
GROUP BY c.driver_id
UNION
SELECT epi.driver_id, 'items' AS origin, MAX(a.timestamp) AS last_edit
FROM sp_employee_package_items AS epi
INNER JOIN gb_audit AS a ON a.record_id = epi.employee_package_item_id
INNER JOIN gb_audit_fields AS af ON af.audit_field_id = a.audit_field_id
AND af.table_name = 'sp_employee_package_items'
GROUP BY epi.driver_id) AS st1 ON st1.driver_id = d.driver_id
WHERE c.driver_id IS NULL AND epi.driver_id IS NULL
GROUP BY d.driver_id
HAVING driver_date <= DATE_SUB(CURDATE(), INTERVAL 2 YEAR) AND last_edit_records <= DATE_SUB(CURDATE(), INTERVAL 2 YEAR)
OR driver_date <= DATE_SUB(CURDATE(), INTERVAL 2 YEAR) AND last_edit_records IS NULL
; If you want to change the query to suit your business, contact Catch-e Support to raise a task for your requested changes.
How It Works
The scheduler job runs, using the selection query to target drivers/employees for this update.
For each field in the Deidentify Driver Data Field List, the field's value is replaced with un-usable data; numeric fields are set to 0.
An audit record is written for each table updated.
Audit records are themselves updated so that their before/after values are replaced with un-usable data; numeric fields are set to 0.
A driver event records the time of the update.
The driver record is then set as read-only.
Fields Removed by Table
Running Deidentify Driver Data clears the following fields. Fields not listed below are left untouched.
Driver (fm_drivers)
Surname
Given Name
Middle Name
Preferred Name
Gender
Marital Status
Date of Birth
Annual Salary
Driver Licence
Driver Licence Card Number
Home Phone
Mobile
Home Email
Landlord Name
Income — Gross
Income — Net
Income — Spouse Gross
Income — Spouse Net
Income — Rental Net
Income — Government Benefits
Income — Superannuation
Income — Investment
Income — Other
Expense — Mortgage
Expense — Rent
Expense — Household
Expense — Credit Card
Expense — Private Education/Childcare
Expense — Vehicle
Expense — Other
Asset — Bank Accounts
Asset — Resident Property
Asset — Investment Properties
Asset — Other Investments
Asset — Motor Vehicle
Asset — Furniture
Asset — Superannuation
Asset — Shares
Liability — Overdraft
Liability — Mortgages
Liability — Investment Mortgages
Liability — Credit Card Limit
Liability — Rent
Liability — Loans
Liability — Other
Generated Password
Driver Assets (fm_driver_assets)
Amount
Driver Liabilities (fm_driver_liabilities)
Amount
Monthly Payment Amount
Driver Bank Accounts (fm_driver_bank_accounts)
Account Name
BSB
Account Number
Addresses (gb_addresses)
Home Unit No
Home Street No
Address 1
Address 2
Area
State
Audit Trail
Deidentification is itself recorded, not hidden:
A new audit record is created for each affected table to record that deidentification has occurred. This shows in the audit's Field column as
@deidentify.For each individual field that was cleared, its audit history is updated so that its Value Before / Value After entries are replaced with un-usable data; numeric fields are set to 0 — the history isn't deleted, but it no longer carries recoverable personal data.
A driver event records the time of the update.
Once processed, the driver record is set to read-only.