DVR Time Traveler

Agency & MDM Deployment Guide

Complete reference for deploying DVR Time Traveler at scale with Mobile Device Management (MDM) platforms

✔️ Google Workspace ✔️ Microsoft Intune ✔️ VMware Workspace ONE ✔️ MobileIron

Overview

📱

Managed Configuration Support

DVR Time Traveler supports 15 configuration settings that IT administrators can deploy remotely through their MDM console. All settings update in real-time without requiring app restarts.

✔️

What MDM Can Control

  • Feature enable/disable
  • Activation code deployment
  • App behavior defaults
  • Security restrictions
  • Organization logo

What MDM Cannot Access

  • User data (notes, patterns, reports)
  • Device ID (app-generated)
  • Subscription time remaining
  • Usage statistics
  • Investigation details

🔑 Agency Licensing

Setting Type Description
enterprise_license_key String Your organization's activation code (Format: DVRTT-XXXX-XXXX-XXXX)
organization_name String Organization name displayed in Admin Settings

License Type

Agency License

Annual subscription — duration determined at purchase. Contact us for pricing and renewal terms.

Example Configuration
{
  "enterprise_license_key": "DVRTT-1234-5678-90AB",
  "organization_name": "Acme Police Department"
}

🎛️ Feature Control

Setting Type Default Description
disable_notes_feature Boolean false Completely hides the Notes feature
disable_patterns_feature Boolean false Completely hides DVR Pattern storage
disable_in_app_purchases Boolean true Prevents all IAP (required with agency activation codes)

💡 Best Practices

Data Security: Set disable_notes_feature: true if the agency restricts the "Notes" feature
Password Compliance: Set disable_patterns_feature: true if the agency restricts the "PW/Patterns" feature
Cost Control: In-app purchases are disabled by default for MDM-managed devices. Set to false only if your agency uses individual store purchases.

🏢 Agency Mode

Control app terminology and features to match your organization type — law enforcement or investigation

Setting Type Default Description
agency_mode String law_enforcement App persona. Controls terminology, PDF report headers, and multi-agent slot availability.
Values: law_enforcement | investigation

💡 How Agency Mode Works

Law Enforcement (default): Uses "Officer", "Badge Number", "Agency", and "Court Report" terminology. Multi-agent slots (Officer 1 / Officer 2) are enabled for shared patrol devices.
Investigation: Uses "Investigator", "Investigator ID", "Organization", and "Investigation Report" terminology. Multi-agent slots are disabled (one user per device).
Priority: MDM config overrides license policy, which overrides the user's local setting. If set via MDM, users cannot change their mode.
Example — Investigation Firm
{
  "enterprise_license_key": "DVRTT-XXXX-XXXX-XXXX",
  "organization_name": "Acme Investigations Inc.",
  "agency_mode": "investigation",
  "disable_in_app_purchases": true,
  "custom_support_email": "it@acmeinv.com"
}

🖼️ Logo Management

Push organization logos directly to all devices using MDM configuration

Setting Type Description
mdm_logos JSON Array List of logos to push to devices (max 10)
default_logo_id String Auto-select a specific logo on first launch
logo_position_locked Boolean Prevent users from changing logo position
logo_position_value String Enforce position: 'left' or 'right'

Logo JSON Schema

mdm_logos Array Structure
{
  "id": "dept_badge_1",           // Unique identifier
  "name": "Department Badge",     // Display name in app
  "base64": "iVBORw0KGgo..."      // Base64-encoded PNG/JPEG (max 512×512 px)
}

📋 Logo Deployment Process

1
Prepare Logo

PNG or JPEG, max 512×512 pixels recommended

2
Convert to Base64

Use online tool: base64-image.de

Or command line: base64 -i logo.png

3
Configure in MDM

Add logo JSON to mdm_logos array in your MDM console

4
Automatic Sync

App syncs logos in real-time when config is pushed

Complete Logo Configuration Example
{
  "mdm_logos": [
    {
      "id": "dept_badge_1",
      "name": "Department Badge",
      "base64": "iVBORw0KGgoAAAANSUhEUgAA...FULL_BASE64_HERE...CYII="
    },
    {
      "id": "traffic_unit",
      "name": "Traffic Unit Logo",
      "base64": "iVBORw0KGgoAAAANSUhEUgAA...ANOTHER_BASE64...CYII="
    }
  ],
  "default_logo_id": "dept_badge_1",
  "logo_position_locked": true,
  "logo_position_value": "left"
}

⚙️ Report Language Settings

Setting Type Options Default
report_language_locked Boolean true / false false
report_language_value String 'en', 'fr', 'es', 'ar', 'de', 'it' — (follow app)
PDF Generation Language Lock Example (Quebec Agencies)
{
  "report_language_locked": true,
  "report_language_value": "fr"
}

Forces French for PDF report generation. Officers can still change the app interface language.

🔒 Privacy Guarantee: The app never sends user data (notes, patterns, reports) to external servers. All data stays on-device with AES-256 encryption.

📞 Support & Customization

Setting Type Description
custom_support_email String Override support email with your IT help desk
custom_support_url String Custom help desk URL or internal wiki
deployment_notes String Internal notes for IT reference (not visible to users)

📝 Real-World Configuration Examples

Police Department (Full Lock-Down)

{
  "enterprise_license_key": "DVRTT-1234-5678-90AB",
  "organization_name": "Acme Police Department",
  "disable_in_app_purchases": true,
  "disable_patterns_feature": true,
  "mdm_logos": [{
    "id": "dept_patch",
    "name": "Department Patch",
    "base64": "iVBORw0KGgo..."
  }],
  "default_logo_id": "dept_patch",
  "logo_position_locked": true,
  "logo_position_value": "left",
  "custom_support_email": "it@acmepd.gov"
}

Multi-Division Agency

{
  "enterprise_license_key": "DVRTT-XXXX-XXXX-XXXX",
  "organization_name": "Metro Police",
  "disable_in_app_purchases": true,
  "mdm_logos": [
    {
      "id": "traffic",
      "name": "Traffic Division",
      "base64": "iVBORw0..."
    },
    {
      "id": "patrol",
      "name": "Patrol Division",
      "base64": "iVBORw0..."
    },
    {
      "id": "k9",
      "name": "K9 Unit",
      "base64": "iVBORw0..."
    }
  ],
  "logo_position_locked": false,
  "custom_support_email": "support@metropd.org"
}

Officers can choose their division logo. Logo position can be adjusted by user.

Quebec Agency (French PDF Reports)

{
  "enterprise_license_key": "DVRTT-XXXX-XXXX-XXXX",
  "organization_name": "Service de Police",
  "report_language_locked": true,
  "report_language_value": "fr",
  "disable_in_app_purchases": true,
  "custom_support_email": "soutien@servicepd.qc.ca"
}

Enforces French for all PDF reports. Officers may still change the app interface language themselves.

Complete Configuration (All 15 Settings)

{
  "enterprise_license_key": "DVRTT-XXXX-XXXX-XXXX",
  "organization_name": "Acme Police Department",
  "disable_notes_feature": true,
  "disable_patterns_feature": true,
  "disable_in_app_purchases": true,
  "report_language_locked": true,
  "report_language_value": "fr",
  "mdm_logos": [
    {
      "id": "dept_badge",
      "name": "Department Badge",
      "base64": "iVBORw0KGgo...BASE64..."
    }
  ],
  "default_logo_id": "dept_badge",
  "logo_position_locked": true,
  "logo_position_value": "left",
  "custom_support_email": "it@acmepd.gov",
  "custom_support_url": "https://help.acmepd.gov",
  "agency_mode": "law_enforcement",
  "deployment_notes": "Deployed 2026-01 – IT ticket #5234 – Approved by Cpt. Smith"
}

All 15 available settings shown. mdm_logos counts as one array setting and can hold up to 10 logos.

🛠️ Platform-Specific Configuration

📥 Download Configuration Schemas

Import the official managed configuration schema into your MDM console to get field descriptions, validation, and auto-complete when configuring DVR Time Traveler.

Google Workspace

  1. Log in to Google Admin Console
  2. Go to Devices → Mobile & endpoints → Apps → Managed Google Play apps
  3. Select DVR Time Traveler
  4. Click Managed configurations
  5. Paste your JSON configuration
  6. Assign to user/device groups

Microsoft Intune

  1. Open Microsoft Endpoint Manager
  2. Go to Apps → App configuration policies → Add
  3. Platform: Android Enterprise
  4. Select DVR Time Traveler
  5. Configuration format: Use configuration designer
  6. Add configuration keys manually or paste JSON
  7. Assign to groups

VMware Workspace ONE

  1. Navigate to Apps & Books → Applications → Native
  2. Select DVR Time Traveler
  3. Go to App Configuration tab
  4. Paste JSON configuration
  5. Save and push to devices

Test DPC (Testing)

  1. Install Test DPC from Play Store
  2. Set up managed work profile
  3. Install DVR Time Traveler in work profile
  4. Go to Policy Management → App Restrictions
  5. Select DVR Time Traveler
  6. Add configuration JSON
  7. Test settings in app
Download Test DPC

🔄 Replacing a Device (Freeing a Slot)

💺

How agency slots work

Your agency license includes a fixed number of device slots (seats). Each MDM-enrolled device that activates the app consumes one slot. When every slot is in use, a new device will report “License has reached maximum device limit” until a slot is freed.

🔄

Self-service: "Release This Device"

MDM-managed devices now have a “Release This Device” button in the app's subscription screen. When an officer is handing back or replacing a phone, they (or you) can tap it to free its seat instantly — no email to SDTech required. The freed seat is immediately available for the replacement device you enroll in MDM.

This is a soft release: if the button is tapped by mistake, the device simply re-claims its seat the next time the app is reopened — as long as it is still MDM-enrolled. To retire a device permanently, un-enroll it from the app in your MDM console; that withdraws its license key so it can no longer reclaim a seat.

Prefer to keep seat management under IT control only? Self-release can be disabled per license — contact SDTech at license@sdtech.app and we will turn it off for your license. Once disabled, only SDTech can free a seat on your behalf (see Option B below).

Option A — Self-service release (fastest)

  1. Enroll and configure the replacement device in your MDM as usual (push the enterprise_license_key and any managed settings).
  2. On the device being retired, open the app, go to the subscription screen, and tap “Release This Device.” Its seat is freed immediately.
  3. The replacement device activates automatically on its next launch and takes the freed seat.

💾 Back up first: before releasing, the app reminds the officer to export their notes and saved DVR passwords/patterns. This data is stored only on the device and does not move with the seat — back it up via Backup & Restore if it is needed.

Option B — Ask SDTech to free the slot

If self-release is disabled for your license, or you no longer have the old device on hand, we can free the seat for you:

  1. Enroll and configure the replacement device in your MDM as usual.
  2. Email SDTech at license@sdtech.app to release the retired device's slot. Include:
    • Your enterprise_license_key (or organization name).
    • Which device to remove — the old device name/model and the user/officer it belonged to.
  3. SDTech releases the slot from the license dashboard, freeing exactly one seat (or all seats at once for a full fleet re-image).
  4. The replacement device activates automatically on its next launch and takes the freed slot.
✔️

Good to know

  • MDM (agency) licenses are exempt from migration cooldowns and swap limits — device churn from re-imaging is never throttled.
  • If a user simply gets the same device back (same install), it reactivates in its original slot — no action needed.
  • For agencies with frequent turnover, ask us to provision a small buffer of extra slots so routine swaps don't hit the limit, and we can batch-clean retired devices periodically.
  • Remind users to export/back up their case data before a device is wiped — investigation data is stored only on the device and cannot be recovered by SDTech.

🔧 Troubleshooting

❓ Settings Not Applying

Check:
  • App installed from Managed Play Store (not regular Play Store)
  • Device properly enrolled in MDM
  • Configuration pushed to device
  • App restarted after config change
Verify via ADB: adb shell dumpsys restrictions

❓ Activation Code Not Recognized

Verify:
  • Key format: DVRTT-XXXX-XXXX-XXXX (20 characters with dashes)
  • Key is active (not expired)
  • App package ID matches license
  • No typos in key

❓ Logos Not Appearing

Verify:
  • Base64 string is complete (starts with iVBORw0 for PNG)
  • JSON syntax is valid (use JSONLint)
  • Logo ID is unique
  • Maximum 10 MDM logos
  • Check app logs for sync errors

❓ Real-Time Updates Not Working

Solution:
  • Most settings update instantly
  • Some MDM platforms have propagation delay (5-15 minutes)
  • Try restarting app if config doesn't sync
  • Verify device has network connection

📊 Configuration Summary

Category Settings Count Real-Time Updates
Agency Licensing 2 ✔️ Yes
Feature Control 3 ✔️ Yes
Logo Management 4 ✔️ Yes
Report Language 2 ✔️ Yes
Support 3 ✔️ Yes
Total 15 settings All live

💬 Agency Support

📧

Email Support

support@sdtech.app

📞

Phone

+1-514-716-4443

🌐

Website

sdtech.app

💼

Sales Inquiries

enterprise@sdtech.app