Reference Manual

DTSMS Online — Help Manual

How to run random selections, manage your driver roster, and read your results in DTSMS Online. Written for company administrators and for drivers who want to understand how a selection works.

DTSMS Online
Rev 2026.09.1 System DTSMS Online Applies to All account types
SOP-01

Getting started

Admin

Create your account

  1. Go to the sign-up page and enter your company name, email, and a password.
  2. Check your inbox for a verification email and click the link inside it. You can't log in until your email is verified.
  3. Log in with your email and password.
Didn't get the email? Check your spam folder first. If it's not there after a few minutes, use the "resend verification" link on the login page rather than signing up again.

Managing more than one company

If you run selections for multiple companies under one login, use the company picker at the top of your account. Switching companies changes which roster, selections, and results you're viewing — it doesn't log you out or change your billing.

Switching companies is owner-only The company picker (Switch) only appears for the account owner. If you've added staff logins, each one is locked to a single company and never sees this option — see Staff & roles.
SOP-02

Your driver roster

Admin

Adding drivers one at a time

From your company dashboard, open Roster and click Add Driver. Enter a name and a unique driver ID. If your company uses Social Security Numbers as the driver identifier, you can enter an SSN directly and the system will treat it as the ID.

Importing a roster from a spreadsheet

For larger rosters, use Import CSV instead of entering drivers by hand.

  1. Upload your CSV file.
  2. Match your spreadsheet's columns to the fields DTSMS needs (name, driver ID, company, state, etc.) on the mapping screen. The system remembers common layouts, but always check the mapping before confirming.
  3. If your file has separate first and last name columns, map both — the system combines them automatically.
  4. If you manage multiple companies in one file, make sure each row has a company name in the company column so drivers are routed to the right roster automatically.
A Company column name creates a new company if it doesn't match one you have Unlike the Department column below, a Company name that doesn't match an existing company is auto-created rather than flagged — a typo becomes a brand-new company on your account, silently. Double-check the company names in your file before importing, especially on a re-import of a file you've edited by hand.

If your file has a Department column (the DOT agency or internal classification a driver belongs to), map it too — this feeds directly into the agency scope options on Running a selection. A Department name that doesn't match an existing entry in the department directory is not auto-created — it's left unassigned and reported in the import summary as a name to review, so a typo doesn't silently split your roster across two departments.

Before you import Review the state column for anything other than a standard two-letter abbreviation. Rows with unrecognized state values import successfully with that field left blank, and are counted in the import summary — check the summary after upload to see how many were affected.

Deactivating a driver

Click Deactivate on any driver row to remove them from future selections. If that driver has a Verified Positive or Verified Negative result already on file, the system asks you to confirm they've actually left the company before the deactivation goes through — an active driver on your roster shouldn't be marked Inactive for any other reason, since it affects your eligible pool for future draws.

Why this confirmation exists A driver with a completed test result is part of your MIS documentation record. Marking them Inactive without actually removing them from the company would shrink your eligible testing pool without a legitimate reason — the confirmation step exists to make sure Inactive means "no longer employed here," not "temporarily skip this person." The confirmation, and who clicked it, is recorded — see Audit log.
SOP-03

Pools & consortiums

Admin

A pool (also called a consortium) is a named group of companies whose drivers are combined into one shared roster for selection purposes. This is the standard setup for owner-operators and small fleets who test together to meet DOT random testing rate requirements.

Creating a pool

  1. Go to Pools and enter a name under Create a pool, then click Create pool.
  2. Your new pool appears below with a checkbox next to every company on your account — check the ones that belong in this pool. Each checkbox saves immediately; there's no separate save step.

You can belong to more than one pool, and unchecking a company removes it from that pool at any time without affecting its individual roster. Use Delete pool to remove the grouping entirely — the companies themselves are never deleted, only the pool that grouped them.

A pooled selection notifies each member company's own DER separately — no company ever sees another member's drivers, even though the draw pulls from the combined roster. See DER notifications. You can also put a pool on an automatic monthly or quarterly schedule instead of running it by hand each time — see Recurring selections.

SOP-04

Running a selection

Admin

Choosing what to draw from

Go to Run Selection for a single company, or Run Pool Selection to draw across every company in a pool at once. If your company has departments/agencies set up, choose which one to run against (or All DOT agencies combined, or DOT and Non-DOT together) — otherwise it runs against your whole active roster.

Setting the rate

Drug and Alcohol each get their own rate, set the same way: either a fixed number of people or a percentage of the pool. DOT-regulated agencies use a fixed federal rate you can't change — DTSMS Online shows it, but there's nothing to configure. If your scope includes Non-DOT drivers, only that portion is yours to set.

You also choose a Number of alternates and a Selection mode: Separate draws (drug and alcohol are drawn independently, so different people can land in each) or Same person, both (anyone drawn is tested for both).

How the draw works

DTSMS Online draws names using a cryptographically secure random process, not a simple shuffle — the same standard used for lottery-grade randomness. Every eligible driver in the pool at the time of the draw has an equal chance of selection, and the eligible list is saved as a snapshot so the draw can be reconstructed for an audit later.

Once a selection runs The list of who was drawn is locked. It can't be edited or re-rolled from the interface — this is intentional, so your selection records hold up under a DOT audit. Recording each driver's test outcome afterward is a separate step — see Recording test outcomes. Results also go out automatically to each company's DER at this point — see DER notifications.

Don't want to run this manually every period? See Recurring selections to set a pool or company on an automatic monthly or quarterly cadence.

SOP-05

Reading your results

Admin & Driver

For administrators

Each selection produces a results list showing which drivers were chosen, their driver ID, and the company or pool the draw came from. Each selection has a plain sequential ID (shown as #1, #2, and so on) — it's not formatted to match any legacy DTSMS desktop numbering.

Export any selection to Excel from the results page. The export includes a full multi-sheet workbook — selected drivers, the eligible pool at draw time, and a summary sheet — for your records or an auditor.

For drivers

If you've been notified that you were selected, it means your name was drawn as part of your employer's random testing program, not because of anything specific about you. Selection is random by design — every eligible driver has the same chance each time. Your employer will tell you where and when to report for testing.

TermWhat it means
Eligible poolEveryone who could have been drawn for that specific selection
Selection IDThe unique record number for one draw event, used for audit tracking
Testing categoryWhether the draw was for drug testing, alcohol testing, or both
SOP-06

Recording test outcomes

Admin

Once a selection has been drawn, each selected driver's actual test outcome gets recorded separately, on the selection's detail page. This doesn't change who was selected — that record stays locked, as described in Running a selection — it adds an outcome to a driver already on that list.

Where to enter results for a pooled selection A pool selection produces one shared audit record, but results are always entered on each company's own History page, not on Pool History. When a pooled selection runs, it automatically appears on every member company's own History page — already filtered down to just that company's own drivers, with the rest of the consortium's roster hidden. There's no need to search the full pool roster to find your drivers; log in as that company and they're already waiting on your own History page.

Entering a single result

  1. Open History (or Pool History for a pooled selection) and expand the selection.
  2. Next to a driver's name, click Enter Result.
  3. Choose Verified Negative, Verified Positive, or Refusal.
    • For a drug positive, check every substance that applies.
    • For an alcohol result, the screening result is required for every result — negative or positive. If the result is Positive, the confirmation result is also required. The system won't save an alcohol result missing either of these when they apply.
    • For a refusal, choose the reason (e.g. Adulterated, Substituted, Shy Bladder for drug; Shy Lung for alcohol).
  4. Enter the Specimen ID — the number printed on the physical CCF (Custody and Control Form) for this sample. Required on every result, not just positives — see the note below.
  5. Optionally flag the entry as Legal and add a date and reason (Accident/Warning, Rehab, In Program, Other) if this test ties to a legal or compliance matter separate from the result itself.
  6. Save. The driver's badge updates immediately — no need to reload the page.
Why every result needs a specimen ID The specimen ID is what ties a result in DTSMS Online back to its physical chain-of-custody paperwork. Without it, an auditor has no way to prove a given negative or positive result actually belongs to that driver's sample — so it's required on every result, negative included, not just positives. The system also blocks saving a specimen ID that's already attached to a different driver's result under your account, since one specimen ID should never legitimately appear twice.

A driver who already has a result shows Edit instead of Enter Result. Opening Edit lets you correct an entry; it doesn't create a duplicate record.

Marking the rest of a category negative at once

In most selections, the majority of drivers test negative and only a few need individual attention. Rather than clicking through everyone, use Mark Remaining as Negative, which sits under each Drug or Alcohol list on a non-pooled selection. If everyone in that category already has a result logged, clicking it just tells you there's nothing pending — it won't overwrite anything.

  1. Click Mark Remaining as Negative. A form opens listing every driver in that category who doesn't have a result yet.
  2. Enter a specimen ID for each driver listed — same requirement as a single entry, since a bulk-negative result still needs to tie back to a real CCF.
  3. Click Save All. If any field is blank, invalid, or repeats a specimen ID already used elsewhere (including another row in this same batch), the save is blocked and the affected row is highlighted — nothing is saved until every row is valid.
What this can and can't touch This action only ever creates a Negative entry for drivers who currently have no result at all. Anyone already marked Positive, Refusal, or Negative is left completely untouched — there's no path for this action to overwrite an existing entry.
SOP-07

Billing & plans

Admin (Owner Only)

DTSMS Online bills monthly per driver using graduated tiers — drivers past each threshold are billed at a lower rate, not your whole count at the top tier's rate.

DriversRate
1–25$5.00 / driver / month
26–100$4.00 / driver / month
101+$3.00 / driver / month

Upgrading from the free plan

  1. Go to Billing and enter the number of drivers you want billing to cover.
  2. The estimate box updates live with your total and the tier breakdown as you type — it's a preview; Stripe computes the actual charge at checkout using the same tiered pricing.
  3. Click Continue to checkout to enter payment details on Stripe's hosted checkout page.
You can't under-report your driver count The number you enter has to cover your full active roster across every company on your account, not just the one you're currently viewing. Enter fewer than your actual active count and checkout is blocked, showing your real count so you can correct it — there's no way to accidentally under-bill yourself into a compliance gap this way.

After checkout

You're redirected back to a confirmation page. Your plan doesn't necessarily flip to Paid the instant checkout finishes — that switch happens when Stripe's webhook confirms the payment, normally near-instant but occasionally a few seconds behind the redirect. If the page still shows "Processing," refresh it or check back from Billing in a moment; nothing's wrong, it just hasn't caught up yet.

Changing your driver count or canceling

Once you're on the paid plan, the Billing page itself doesn't have a control to change your driver count or cancel — that currently goes through the link in your Stripe receipt email, or by contacting support directly.

Billing is owner-only Like Companies and Roles, the Billing page is reachable only by the account owner logged in directly — no staff role can grant access to it.
SOP-08

Troubleshooting

Admin & Driver
IssueWhat to try
Verification email never arrivesCheck spam, then use "resend verification" on the login page rather than creating a second account
CSV import skips rowsCheck the import summary for flagged rows — usually a missing company name or an unrecognized state value
Pool results show blank company namesRefresh the results page; if it persists, contact support with the selection ID
Can't switch companiesConfirm you're logged into the account the company was added under, not a separate login
"A screening result is required" when saving an alcohol resultAlcohol results require a screening value on every save, and a confirmation value when the result is Positive — this is required, not optional, and the save is blocked until it's filled in
"A specimen ID is required" when saving a resultEvery result needs the number from the physical CCF, negative results included — see Recording test outcomes
"Specimen ID is already on file for [driver]"That exact specimen ID is already attached to a different driver's result under your account — double-check both entries against the physical CCF for a data-entry mistake
A staff login can't see a page or button I expectTheir role doesn't have that permission granted — go to Companies → Roles and check the box for that page/action, or confirm they have a role assigned at all under Companies → Staff
DER never received a notification emailConfirm a DER email is saved under Company → Manage Companies — it only applies to selections run after it was saved, see DER notifications
DER's confirmation link says "not valid"The 14-day link has expired — have the DER request a fresh one at resend-der-link.php, see DER notifications
SOP-09

Support tickets

Admin

Support runs through an in-app ticket system rather than email — every response you get back, and every actual fix, is logged directly on the ticket, so you can see the full timeline yourself rather than taking someone's word that it was handled.

Opening a ticket

  1. Go to Support in the top navigation.
  2. Click Open a Ticket.
  3. Give it a short subject and describe what's going on — the more specific (which driver, which selection, what you expected vs. what happened), the faster it gets resolved.
  4. Submit. Your ticket opens with status Open, and you'll see it immediately on your ticket list.

Tracking a ticket

Go to Support to see every ticket you've opened for your current company, newest first, with its status and how long it took to get a first response. Click into any ticket to see its full timeline:

StatusWhat it means
OpenSubmitted, not yet reviewed
AcknowledgedReviewed — someone is actively looking into it
ResolvedFixed, with the actual change that fixed it linked directly on the ticket
ClosedWrapped up — no further action expected on either side

You can add a follow-up comment to your own ticket at any time from its detail page, regardless of its status — no need to open a second ticket for the same issue.

Only our team can acknowledge or resolve a ticket Marking a ticket Acknowledged or Resolved isn't something any client-side role can be granted, no matter how much access their account has elsewhere — those two actions are restricted to our own support team. From your side, opening a ticket and adding comments is the full extent of what your account can do to a ticket directly.
Why every resolved ticket shows a linked fix, not just a note A resolved ticket on DTSMS Online always points to the real system change that fixed it, not just a message saying "fixed." That's a deliberate design choice: it's proof the issue was actually addressed, not just marked closed.
SOP-10

MIS report

Admin

The MIS report is the DOT MIS Data Collection Form, built from your company's actual recorded results rather than filled in by hand. It aggregates a full calendar year of test outcomes into the exact structure the federal form expects — Section III for drug testing, Section IV for alcohol testing — broken out by DOT agency.

Generating a report

  1. Go to MIS Report in the top navigation.
  2. Choose the calendar year from the dropdown — only years with recorded results for your company appear as options.
  3. Each DOT agency your company tested under that year gets its own panel, with Section III and Section IV fully broken out: total results, verified positive by substance, refusals by reason, cancelled tests, and — for alcohol — both screening-level and confirmation-level results.
  4. Click Print / Save as PDF to produce a clean copy for filing or for your records.

Test type

Every row on this report is Random testing — that's the only test type DTSMS Online currently produces, since it's built around random selection. Pre-Employment, Post-Accident, Reasonable Suspicion, Return-to-Duty, and Follow-Up rows on the official form stay blank; the system doesn't track those categories.

Non-DOT testing

If your company runs Non-DOT testing (internal company policy testing that isn't part of a federal program), those results are shown in their own section at the bottom of the report, clearly separated from the DOT compliance numbers above it — Non-DOT results are never mixed into a DOT agency's totals.

Employee categories The federal form allows filing separately per employee category. On DTSMS Online, that maps directly onto the DOT-agency / Non-DOT split already built into this report — there's no separate category selector to configure.
SOP-11

Staff & roles

Admin (Owner Only)

Staff logins let other people work in DTSMS Online without sharing your own account credentials. Each staff login is scoped to exactly one company — someone added as staff for one company can never see, switch to, or affect any of your other companies, even if your account manages several. What that person can actually do inside their one company is controlled by a role you assign them.

Roles and Staff are owner-only pages Only the account owner — logged in directly, not through a staff login — can reach Companies → Roles or Companies → Staff, create a new staff login, or change a role's permissions. This is a fixed rule, not something a role's checkboxes can grant: a staff member can never be given the ability to manage other staff or edit roles, even indirectly. The same is true of Billing and adding/editing companies — those stay owner-only no matter what a role permits elsewhere.

Creating a role

  1. Go to Companies → Roles and click into the current company (roles are specific to one company — switching companies shows a different set).
  2. Name the role and check the boxes for exactly what it should be able to see and do — each page has an Access checkbox (can they open this page at all) plus specific action checkboxes where they apply, like Edit, Delete, Add, or Change Status.
  3. Save. The role is now available to assign to any staff member added under this company.

Adding a staff member

  1. Go to Companies → Staff and fill in their name, email, and a password.
  2. Choose a role from the dropdown. If you leave it as No role — no access, that login can sign in but won't be able to see or do anything until a role is assigned.
  3. Click Create staff login and share the email and password with that person directly — the password isn't shown again after this step, so if it's lost, edit the staff member and set a new one.

They log in at the same login page you use, with their own email and password — DTSMS Online recognizes automatically whether a login belongs to an account owner or a staff member.

Deactivating a staff member

On Companies → Staff, click Deactivate next to their name. This takes effect immediately — if they're logged in at that moment, their very next click logs them out completely, and they can't log back in until reactivated from the same page.

SOP-12

Audit log

Admin

The audit log shows every add, edit, status change, and selection-lock event for a company's drivers, in plain language rather than raw data — what changed, when, and who did it. It exists so "who deactivated this driver, and why" has a real answer inside the app, not something that requires asking your developer to look at the database.

Reading an entry

Each row shows the driver, an action badge — Driver Added, Details Updated, Marked Inactive, Marked Active, or Sealed (Selection) — a short description of the actual change in the Details column, and who did it: either a specific staff member's name, or Account owner if you made the change yourself, logged in directly.

"Left company confirmed" detail When a driver with a completed test result is deactivated, that action requires the extra confirmation described in Your driver roster. If that confirmation was given, Left Company Confirmed appears in that entry's Details column alongside the status change — it's the record that proves the deactivation followed the rule, not just that the status changed.

Paging through history

Entries are shown 30 at a time, most recent first, with Prev/Next controls at the bottom. There's currently no search or filter on this page — to find a specific driver's history, page through, or ask your developer to look it up directly if the list is long.

Who can see it

The audit log is scoped to whichever company you're currently viewing — it never shows another company's history, even if your account manages several. For a staff login, access to this page follows the same permission as the roster page itself: if their role can manage drivers for this company, they can see this company's audit log too.

SOP-13

DER notifications

Admin

Once a selection runs, results never go to whoever's logged in and clicked "Run Selection" — they go to each company's own Designated Employer Representative (DER), the person your DOT program designates to actually pull a driver for testing. This keeps the person triggering a draw from being the same person who learns who was picked, which is the standard your consortium's TPA arrangement is expected to meet.

Setting a company's DER contact

Go to Company → Manage Companies. Each company has its own DER Name, DER Email, and DER Phone fields — enter them and click Save DER. This has to be done before a selection runs; setting the DER contact afterward does not retroactively notify anyone for a draw that already happened.

No DER on file yet? A company with no DER email configured is simply skipped when a selection runs — no error, no email, and nobody gets notified. Set the DER contact for every company before relying on this for a live draw. If you suspect a company was missed, ask your developer to check the selection_der_notifications log for a skipped_no_der entry against that selection.

What the DER receives

Each DER gets one email, scoped to their company only — even for a pooled/consortium selection spanning several companies, a DER only ever sees their own company's drivers, never the rest of the pool. The email lists who was selected for drug testing, who for alcohol, and who's an alternate, along with the same instruction every time: notify each selected employee and send them to testing only when they're already on-site, never in advance.

The confirmation link

Every DER email includes a link the DER can open to view the same results on a simple web page, without needing to log in to DTSMS Online at all — DERs are not account holders. This link is unique to that one notification and expires automatically 14 days after it's sent.

If a link has expired

The DER can request a fresh one themselves at oshaland.com/resend-der-link.php by entering the same email their company has on file. If it matches, a new link is emailed immediately with a fresh 14-day window. This response is the same either way — "if that email is on file, check your inbox" — whether or not it actually matched anything, so the page never reveals which DER emails are valid.

The resend limit is per browser session, not per email To prevent misuse, this page limits how many resend requests it accepts within a short window from the same browser session — not by email address. A second request from the same session is silently ignored rather than sending a duplicate, but that limit doesn't follow a specific email address across different browsers or sessions.
TermWhat it means
DERDesignated Employer Representative — the person authorized to pull a driver for testing on behalf of the company
Confirmation linkThe one-time-issued, expiring link in a DER's email that shows their company's results without requiring login
Skipped, no DERA selection ran, but no notification could be sent because that company has no DER email on file yet
SOP-14

Recurring selections

Admin

Rather than remembering to log in and run a selection every month or quarter, a company or pool can be put on a recurring schedule that runs automatically in the background.

Setting up a schedule

  1. Go to Pools → Manage Pools (this is the same page where you create pools and manage their member companies — see Pools & consortiums).
  2. Under Recurring Selections, choose a pool or an individual company, pick Monthly or Quarterly, set the first run date, and choose how many alternates to draw each time.
  3. Click Add schedule.

The schedule runs itself from that point on — each run advances automatically to the next month or quarter, and produces the exact same kind of selection, results, and DER notification as running one manually. There's no difference in the record it leaves behind; a scheduled draw is audited the same way a manual one is.

Pausing a schedule Uncheck Active next to any schedule to stop it from running without deleting it — its next-run date is preserved, so re-checking it later picks back up rather than restarting the cadence from scratch.

If a scheduled run doesn't happen

A schedule can fail to run — for example, if a pool temporarily has no active drivers. This doesn't silently disappear: it's logged, and skips that period rather than crashing every other company's scheduled selections that same day. If you expected a draw and don't see one, contact support with the pool or company name and the expected date so it can be checked against the schedule's run history.

SOP-15

Query Schedule

Admin

Federal Drug & Alcohol Clearinghouse rules require a pre-employment query before a driver first performs safety-sensitive duty, and a limited annual query for every driver at least once every 12 months. The Query Schedule keeps track of those due dates for your active roster and stores your records of what's been done — it does not run the queries themselves.

This page does not query FMCSA Query Schedule is a tracker, not a submission tool. You still have to go to the Clearinghouse and run each query yourself; come back here afterward and log it so the due date updates and your record is on file.

Finding it

Go to Drivers → Query Schedule. The three tiles at the top summarize your active roster: how many drivers are Overdue, how many are Due within 30 days, and the total number of Active drivers tracked.

Reading the driver list

Each row shows a driver's CDL number, their last logged query date, when their next one is due, and a status badge. A driver with nothing logged yet shows No date on file instead of a due date — that's expected for a driver who hasn't had a query recorded here, not an error.

Logging a completed query

  1. Find the driver and click Mark complete.
  2. Choose the Query type that applies — Pre-employment for a driver's initial full query, Annual for the recurring limited query, or Follow-on (post-notification) for a query tied to a driver's return-to-duty/SAP follow-up plan.
  3. Set Date completed to the date the query was actually run at the Clearinghouse, not today's date if they're different.
  4. Optionally attach the consent form or result PDF, and add any notes.
  5. Click Save. The driver's Last Query and Next Due columns update immediately, and the Overdue / Due within 30 days tiles recalculate.
Query typeWhen to use itEffect on Next Due
Pre-employmentBefore a driver first performs safety-sensitive duty for your companySets Next Due to one year out — this starts the driver's annual cycle
AnnualThe recurring limited query required at least once every 12 months for every driverSets Next Due to one year from the date completed
Follow-on (post-notification)Tied to a driver's return-to-duty / SAP follow-up testing plan, not a fixed annual cycleLogs the completion but leaves Next Due unchanged

Pick the query type carefully — Pre-employment and Annual both push Next Due out a year, so logging the wrong one will still show a due date, just possibly the wrong one for that driver's actual cycle. Follow-on is the one exception: it records the query without touching the driver's existing due date.

Attached files A driver row shows a file link once a consent form or result PDF has been attached to one of their logged queries — it opens the most recently attached document for that driver. Files are stored outside the public web root and are only ever served to your own company's account.

Who can see it

Query Schedule is scoped to whichever company you're currently viewing, same as the rest of the Drivers section — it never shows another company's due dates, even if your account manages several.