SpanOPS user manual
SpanOPS is Unified Asset Operations: signed tags on everything you own, scanned on a PC, a phone or a Station, with every move, hand-over, count, repair and disposal recorded in a trail that cannot be rewritten. This manual covers the customer portal at portal.spanops.app, the SpanOPS Station printing app, the field-operations modules (counts, reconciliation, custody, disposals) and the service portal used by SpanOPS staff.
Version: server 1.6 · Station 1.2 · October 2026
1. Getting started
1.1 Create your organisation
- Open https://spanops.app and choose Start free trial (or go straight to https://portal.spanops.app/#/signup).
- Enter the organisation's name, your name, your work e-mail and a password of at least 10 characters.
- Accept the terms and the privacy notice. The date and version of your consent are recorded on your account.
- You are signed in as the organisation's Owner. A trial starts at once: no card is needed.
Every organisation starts with an IT department (you are in it) and a General department, a set of category presets, a default label template and the trial allowance (seats and tag capacity, see Billing).
1.2 Sign in, sign out
- Sign in at https://portal.spanops.app with your e-mail and password. If two-factor authentication is on, enter the 6-digit code from your authenticator app, or one of your recovery codes.
- Ten wrong passwords lock the account for 15 minutes; an administrator can unlock it sooner.
- The portal keeps you signed in for 14 days of inactivity and 30 days at most. Sign out is the red door icon at the top right. Under Your account you can end every other session (other browsers, phones, Stations).
1.3 Your account
Your account (your name at the top right) holds:
- Name (you may change it) and the roles you hold.
- Password: changing it signs out your other devices.
- Two-factor authentication: Set up 2FA shows a QR code for Google Authenticator, Microsoft Authenticator, Aegis or any TOTP app, then eight recovery codes. Keep them somewhere safe: each works once instead of a code. Owners and administrators should switch 2FA on; Station reprints after the grace period require it.
- Where you're signed in: every browser, phone and Station session, with Sign out everywhere else.
- Your data and privacy: when you consented, where the data is kept, the grievance officer, and Download my data (everything SpanOPS holds about you, as JSON).
1.4 Light, dark or automatic
The sun / half-moon / moon buttons in the header set the theme for this browser. Automatic follows the device.
1.5 Working with tables
Every list in SpanOPS is the same kind of table:
- Filter by typing: the box under each column heading filters the rows as you type; several columns combine.
- Sort: click a column heading; click again to reverse.
- Rows per page: 10, 25, 50, 100 or all, remembered for your browser; page with ‹ ›.
- Export: the Export menu at the foot of the table downloads what is filtered as CSV, Excel or PDF.
On a desktop the pages use the whole width of the screen; on a phone the tables scroll sideways and the navigation becomes one scrolling row.
2. Everyday work
The pages you see depend on your role (see Reference). An operator sees Scan, Dashboard, Count, Exceptions, Custody, Disposals, Bulk add, Assets, Batches, Groups, Sites, Reports and Support.
2.1 Scan
Scan is the home page. Point a USB scanner at a sticker's QR, use a phone camera, or type the 12-character quick code printed on the sticker and press Enter. SpanOPS answers one of:
- Genuine, not enrolled: a fresh SpanOPS tag of your organisation. Enrol it (2.2).
- The asset: its card with name, category, location or holder, condition, lifecycle and the actions you may take.
- Not on record: a tag from another organisation (or a forgery) is never described; you only learn it is not yours.
- Typed wrongly? If you typed an O for a 0, SpanOPS tells you the actual code; on the sticker a zero has a stroke.
Your last scans are listed under the box so you can go back to them.
2.2 Enrol an asset
Scan a fresh tag, then fill in:
- Category (decides how the item is tracked, see 3.4), name, optional UPC/EAN (a known product fills the name), serial number, MRP.
- Site and room: where it is now. A site with geofencing on only accepts changes from the site itself.
- Lifecycle: purchase date and cost, vendor, invoice number, warranty end, condition, maintenance interval. SpanOPS works out the straight-line book value from the category's depreciation life, and the next maintenance date.
- For a by-quantity consumable (sand, cable, cleaning fluid): the quantity and unit; one tag for the lot.
Bulk add enrols many tags at once: choose site and room, then add batches by category with a UPC, a name and the scanned codes (and serial numbers) of each item. The review step reports anything wrong by position before anything is saved.
2.3 Asset card and history
Open any asset from Scan, Assets or a link. The card shows location or holder, group, lifecycle (warranty status, book value, maintenance due), classification and FATS status, identifiers, custodian, and every action you may take. The history lists each event with who, when and from where. Nothing in the history can be edited or deleted.
2.4 Moving things
| Action | What it means | Who |
|---|---|---|
| Move | The asset is now in this site/room (it stays "at a place") | Operators (asset.move) |
| Take | You now hold it; it leaves the place (or the previous holder: that is recorded as a hand-over from them) | Operators, edge users |
| Hand over / Transfer | From you to another person, with a note | Operators, edge users |
| Put down / Release | From you back to a site and room | Operators |
| Record hand-over | For someone without a phone: from a holder or a place to a person or a place | Operators (possession.record) |
Everything is one event in the trail. A person can only hand over what they hold.
2.5 Groups
A group is a set of assets that move together (a trolley, a kit, a crate). Make a group from assets or from a product batch; then move, take, hand over, release the whole group at once. Dissolving a group leaves the assets where they are.
2.6 Consumables and tools
- By count (each unit has a tag): Scan out a unit when it is used; the tag is then consumed.
- By quantity (one tag for a lot): Consume a quantity; SpanOPS refuses more than is left and marks the lot consumed when it reaches zero.
- Tools: Check out to a person with a due date; Check in back to a site and room with its condition. Overdue tools appear on the maintenance report. Discard (managers) ends a worn-out, lost, stolen, sold or scrapped item.
2.7 Maintenance and inspections
Managers record maintenance, inspection, calibration or repair on an asset with vendor, cost, outcome and a note. The next due date follows the asset's (or category's) interval. Reports → Maintenance lists what is due, overdue and under warranty, with totals per category.
2.8 Reports
Reports are built from the trail, for a site or everywhere, as Excel, PDF or CSV:
- Daily: everything that happened on a day.
- Stock: what is where (and with whom) right now, by category.
- Usage: consumption, check-outs and movements over a period.
- Maintenance: due, overdue, warranty, costs.
Viewers and managers may download reports; operators the daily report; edge users none.
2.9 Notifications
The bell shows notices meant for you: site requests decided, exceptions assigned, hand-overs, tickets answered. If your organisation's IT department has set up e-mail or WhatsApp channels (3.7), the same notices reach you there.
3. Administration
Admin is for Owners and IT managers (and IT staff for people management, managers for their teams). Its tabs: People · Departments & teams · Sites · Site requests · Categories · Print · Audit log · Notifications · Organisation · Billing.
3.1 People and roles
Add a person with name, work e-mail, roles, and optionally department, team, title and phone. Without e-mail delivery, SpanOPS shows a one-time password to hand over in person; the person must change it at first sign-in. With e-mail set up, an invitation link is sent instead.
Roles (a person may hold several):
| Role | Purpose |
|---|---|
| Owner | Everything, including billing and making other owners |
| IT manager | People, departments and teams, sites, categories, printing, audit log, notification channels |
| IT staff | Create people, reset passwords and 2FA, unlock accounts |
| Manager | Manages the people of the teams they manage (and their permissions); maintenance, discards, stock and usage reports; counts, exceptions, custodians, registers, QA, disposals |
| Operator | Everyday asset work: enrol, move, take, hand over, groups, consumables, tools, counting, custody |
| Edge user | Scan, take, hand over, consume, check tools in: nothing else |
| Viewer | Read-only: dashboard, registers, exports, reports. Does not take a seat |
| Approver | The client's decision maker: approves exceptions and disposals, accepts facilities. Viewer rights included |
| Station | Prints tags on SpanOPS Station; no asset work. Does not take a seat |
| Station administrator | Also sets up printers in Station |
Per person, whoever manages them can tick or untick individual permissions (the "can" list) and restrict them to particular sites and categories (scopes). An org-wide manager (toggle on an IT manager's or owner's say-so) may manage other managers too.
Per person actions: Edit (name, e-mail, roles), Reset password (one-time password or link), Reset 2FA (signs them out everywhere), Unlock, Suspend / Restore, Revoke, End sessions, and Anonymise for a suspended or revoked former user (8.3).
3.2 Departments and teams
Every organisation has an IT department (runs user management) and a General department; add your own (Biomedical, Stores, Facilities …) with a short code. Each department has teams; each team has managers (people with the Manager role). People are placed in a department and a team, with a title and phone.
A department also carries its printing defaults (4.3) and, through the IT department, the organisation's settings.
3.3 Sites, rooms and geofences
A site is a facility: name, short code, address, map position. Geofencing (radius 20 m to 20 km) means a change at that site is only accepted from a device located there. Rooms divide a site; each room has a building, floor, zone, a kind (room, zone, bin, staging, quarantine, repair, disposal holding) and a code. Sites also carry a region, a kind (school, warehouse, HQ …), a priority (1 or 2) and the client's own facility reference, which counts and dashboards use.
Operators may request a site; IT managers approve or reject (the requester is told).
Final barcode series (on the Sites tab): a prefix and width, from which assets receive their final numbers (4.1).
3.4 Categories
A category decides how an item is tracked. Start from the presets (movable asset, fixed asset, tool, consumable by count, consumable by quantity, IT asset, document, vehicle, clinical equipment …) or create your own; set the depreciation life, the maintenance interval, a default MoF/accounting class (capital, controlled, inventory, consumable) and, if useful, a department the category belongs to and a parent category (subcategories).
3.5 Print: label templates
See Labels and printing.
3.6 Audit log
Everything administrators and the system did to accounts and settings: who, when, from which address, with the detail. Filter by date and text; export as Excel.
3.7 Notification channels
The IT department can connect the organisation's own SMTP mailbox and WhatsApp Business (Meta Cloud API) number. Secrets are stored sealed and never shown again. Choose which events go out. Custody acknowledgement links are sent through these channels.
3.8 Organisation
Name, GSTIN and address (shown on invoices; stored encrypted), and, for owners, Close the organisation (8.4).
4. Labels and printing
4.1 What a label can carry
A SpanOPS tag is a signed code: a QR (or Data Matrix) that any SpanOPS can verify offline as genuine and yours. A sticker may also carry:
- the quick code (12 characters) for typing in,
- a 1D barcode (Code 128 or Code 39) of the quick code or of your own final asset number (from a series or imported from your register),
- text: asset name, serial, organisation, department, site, or fixed text,
- your logo (or SpanOPS's), boxes and lines.
4.2 Templates (Admin → Print)
A label template is the sticker's design: size in millimetres, how many labels sit across the stock, gaps, the printer language, resolution, darkness, logo, and the list of elements with positions. Start from a preset:
| Preset | For |
|---|---|
| QR + quick code (50 × 25, two across) | The standard SpanOPS sticker |
| QR only | Teams that never type codes |
| QR + name + quick code | Readable labels for equipment |
| Code 128 only | Barcode scanners; checked online |
| Code 128 of the final number | Registers that know only your asset number |
| QR + Code 128 of the final number (75 × 50) | Both scanners and registers on one sticker |
| Small 38 × 19 | Small equipment |
| Large 100 × 50 | Furniture, beds, machines |
| A4 sheet 3 × 8 (70 × 36) | Laser / inkjet printers and self-adhesive sheets |
Edit anything: add, move, resize or remove elements, pick fonts, alignment, two-line codes, change the printer language (ZPL for Zebra, TVS, Honeywell and most label printers; TSPL for TSC and Xprinter; EPL for older Zebra/Eltron; PNG through the driver for anything CUPS or Windows can print; PDF sheets for office printers). Refresh preview shows the sticker exactly as the server will render it. Test file downloads a one-row test print. One template is the organisation default; departments may choose another.
2D codes always carry the full signed code; 1D barcodes carry the quick code or the final number and are checked online.
4.3 Printing defaults per department
Under Departments & teams → Printing defaults: the department's template, copies per code (1, 2 or 3), the printer Station should use, and whether each Station may change these for itself. Station follows the department of the person signed in.
4.4 What Station keeps locally
Only fine-tuning for the printer at hand: shift right/down in mm, scale, row gap, darkness. The content of the label always comes from the portal.
5. SpanOPS Station
Station is the printing app for Linux (Ubuntu 22.04+, Debian 12+, Zorin) and Windows. It signs in with your SpanOPS account (role Station; Station administrator to set up printers).
5.1 Install
Download the package from https://spanops.app/downloads; check the SHA-256 shown there; install with
sudo apt install ./spanops-station_<version>_all.deb. Station checks for updates and offers them in the app.
5.2 Sign in
Enter your SpanOPS e-mail and password (and the 2FA code if you use one). Station keeps a refresh token in the system keyring; the server's tag-signing keys are pinned on first use so a tampered server is noticed.
5.3 Printers
Station lists the label printers CUPS knows. A Station administrator can add a printer on the network (IP) or USB with the raw label driver; Station checks the printer (status, media) before each job. Save as PDF is always available: the rows are written to a PDF in your home folder instead.
5.4 Print new tags
Choose how many codes (up to 200 per batch), copies per code, the printer, and (if your department allows) the template. The preview shows the template with sample codes. Generate and print: the server issues the codes, renders the stickers and Station sends them to the printer, then watches the printer until the job is through and asks you to confirm every row came out. The batch and its print job are recorded.
5.5 Reprints
From Batches, reprint a whole batch or a range (for a jammed row). Within two hours of the first print the codes are released at once; later, Station asks for your password and 2FA code (a step-up bound to this one job), so a reprint cannot be made quietly.
5.6 Fine-tuning
Fine-tuning for this printer: shift right/down (mm), scale, gap between rows, darkness. Saved on this computer only.
6. Field operations
These modules run large counts and audits: the kind of work a ministry, a hospital network or a multi-site company does when it verifies every asset, replaces legacy barcodes, reconciles against its register and proves the result.
6.1 Locations for counting
Give every site its region, kind, priority and client reference, and every room its building, floor, zone, kind and code (3.3). Dashboards, exports and completion packs use this hierarchy.
6.2 Identifiers and barcode unification
An asset may carry several identifiers besides its SpanOPS tag: a legacy barcode, an ESE tag, a FATS id, a serial, an RFID EPC, and the final barcode of your institution. Add them on the asset card; Assign final barcode takes the next number from a series and marks the legacy identifiers replaced, with the history kept. Scanning any active identifier (in Scan or in a count) finds the asset. The barcode cross-reference export lists every identifier, its status and what replaced it.
6.3 Custodians and custody
Custodians are the people (or accountable units for common-area assets) responsible for assets; they need no SpanOPS account. Record name, employee id, unit, e-mail and phone (stored encrypted). Assign custody from the asset card; the custodian acknowledges:
- by a link sent by e-mail / WhatsApp (they confirm or dispute on their phone), or
- by a 6-digit code read back in person that the counter enters, or
- in person with evidence (a signature photo), no acknowledgement needed.
Returns and transfers are recorded with condition. The Custody page lists custodians, assignments and the custody exception register: controlled items with nobody accountable, assignments unconfirmed for over three days, disputed custody, assets not where their custody says, custodians who left (every asset they held opens an exception).
6.4 Registers to reconcile against
Import your FATS / ERP / legacy register (XLSX or CSV) under Count → Import: name the columns (identifier, description, site reference, serial, cost, …), run a dry run to see what would happen, then import. Rows are matched to assets by final barcode, FATS id, legacy barcode, then unique serial; a register row may also be linked by hand. Attach the register to a campaign.
6.5 Campaigns, sessions and counting
A campaign is a count (full, surprise, custody verification or IT audit) with a scope: the facilities, each with a priority, planned week and planned lines. A facility moves through planned → counting → reconciling → QA → awaiting approval → accepted, or reopened / handed over.
Counting happens in a session (facility, shift, counters, device). The counter scans or types any identifier, chooses the room, condition, method (barcode, RFID, typed), the custodian present and a photo. Each line is matched at once:
| Result | Meaning |
|---|---|
| matched | The asset is known and where it should be |
| found not recorded | Nothing is known about this identifier: an exception |
| duplicate | Already counted in this campaign: an exception |
| invalid tag | A forged or foreign SpanOPS code: an exception |
| wrong location | On record at another facility or room: an exception |
| wrong custodian | Another custodian than recorded: an exception |
| condition changed | The condition differs from the record |
| inventory | An inventory line (item, batch, expiry, usable / reserved / quarantined / damaged quantities) |
Offline: lines recorded without a connection wait in the browser and sync when it returns (each only once). When a facility goes to reconciling, every register row and asset on record there that was not counted becomes a recorded not found exception.
6.6 Exceptions register
Every discrepancy is an exception with a number, type, severity (minor, major, material), facility, asset, evidence, owner, root cause, recommended action, due date (five business days by your calendar), and a trail of notes and status changes: open → under review → awaiting approval → approved / rejected → closed. Material incidents (lost, stolen, damaged, misused) need the client's approval and notify administrators for the 24-hour notice. Only an Approver approves (with a reference); an approval may be marked accepted on alternative evidence, which the reports count separately from physically verified items. Overdue exceptions are escalated nightly. The register exports as Excel for the weekly review.
6.7 QA samples and acceptance
A manager with qa.review draws a QA sample at a facility (random, or risk-based: controlled items and lines with
exceptions first), reviews each line and records pass or fail; failed lines become exceptions and the facility goes
back to counting. Acceptance (an Approver) is only possible when no major or material exception is open, every
controlled item has a custodian and QA passed; it freezes the baseline (totals by class and result), and later
changes are shown separately from it. The completion pack (PDF) carries the baseline, sessions, QA, exceptions and
a sign-off line.
6.8 Disposals
Recommend a disposal (damaged, surplus, obsolete, expired, non-moving, uneconomical) with a recommendation (redeploy, transfer, repair, reuse, sale, auction, recycle, destroy), valuation, evidence and the room it is segregated to. An open investigation on the asset puts the disposal on hold automatically. Only an Approver approves or rejects; collected and closed follow, and closing retires the asset. Nothing is disposed of on the service provider's authority.
6.9 Dashboard and exports
Dashboard (refreshes every minute): facilities by status, lines counted against the plan by week, regions, results by class, first-pass accuracy, registration accuracy (from QA), barcode accuracy, exception closure on time, exceptions by age, custody and disposal queues, productivity (lines per counter-hour) and a forecast, and the frozen totals of accepted facilities. Exports: FATS registration file, exception register, barcode cross-reference, custody register, disposal register, completion pack. Every figure comes from the same records as the exports.
7. Billing
SpanOPS is priced per seat plus capacity:
- Starter: per user per month; every seat brings 1,000 tags. INR ₹999 or USD $15.
- Capacity Pack: 1,000 more tags for the whole workspace, per month (₹499 / $7); as many as you need.
- Enterprise: custom; arranged with us.
Who takes a seat: every active person except read-only Viewers and Station-only accounts. Tag capacity is the number of tags issued. A trial has an allowance of seats and tags; after it, changes are paused until a subscription is active (reading and reports keep working). Owners subscribe under Admin → Billing (Razorpay; we never see card details), change seats or packs at any time (the difference is settled at the next charge), cancel at the end of the paid period, and see invoices there.
8. Security, privacy and your data
8.1 How SpanOPS protects data
- Passwords are hashed (Argon2id); 2FA with TOTP and recovery codes; lockout after repeated failures; step-up confirmation for reprints.
- Every organisation's rows are isolated in the database (row-level security); one organisation can never see another's tags or assets, not even by scanning them.
- Encrypted in transit (TLS 1.2/1.3, HSTS); secrets and personal fields (phone numbers, addresses) stored sealed; backups encrypted.
- The trail (events, asset events, account events) is append-only.
8.2 Your rights (DPDP)
Under India's Digital Personal Data Protection Act, 2023: you may see your data (Download my data), correct it (your name yourself; the rest through your IT department), and ask for erasure (your organisation's administrators can anonymise a former user's account; an owner can close the organisation). The grievance officer is named in the privacy notice and on your account page.
8.3 Anonymising a former user
Suspend or revoke the account, then Anonymise: name, e-mail, phone and secrets are replaced for good; what they did stays in the trail as "Former user".
8.4 Closing the organisation
Admin → Organisation → Close the organisation (owner; password and the organisation's name to confirm). Everyone is signed out at once and nobody can sign in. Personal data, assets and events are erased after the retention period (90 days by default); tag codes stay verifiable for life (they carry no personal data) and invoices are kept as tax law requires.
9. Support
Support in the portal opens a ticket (technical, account or billing; priority low to urgent). SpanOPS staff answer there; you get a notification, can reply, and close the ticket (or reopen it by replying). Support can also be reached at the address shown on the sign-in page.
10. Service portal (SpanOPS staff)
Sanrad staff sign in at https://service.spanops.app with Sanrad Identity. Roles:
| Role | May |
|---|---|
| Service Engineer | Attend the tickets assigned to them; act on a customer organisation only while a ticket (or a time-limited grant) gives access |
| Service Administrator | Receive tickets, assign them, attend them; technical actions on organisations (password and 2FA resets, unlocks, roles) |
| Relationship Manager | Everything financial: trials, complimentary time, plans and prices, organisation status, seats and tag limits (for Enterprise), invoices and billing events |
| Super Administrator | All of the above, staff roles, simple system settings |
| System Administrator | Everything, including advanced settings |
Pages: Tickets, Organisations (account, entitlements, people, subscriptions, invoices, activity, tickets, grants), Plans (create at Razorpay, edit, retire), Billing events (webhooks), Staff, Settings (sign-up open, trial length and allowance, support and sales addresses, grievance officer, grace days, retention), Audit.
11. Reference
11.1 Permissions
| Permission | Meaning |
|---|---|
| tag.enroll · tag.data | Enrol tags; enter and edit asset details |
| asset.move · possession.take · possession.release · possession.transfer · possession.record | Movement and custody of assets |
| group.manage | Groups |
| material.consume · tool.checkout · tool.checkin · asset.discard | Consumables, tools, discards |
| maintenance.manage | Maintenance records |
| site.request · room.manage | Request sites; rooms |
| report.daily · report.stock · report.usage | Reports |
| count.record · custody.record | Count lines; hand assets to custodians |
| campaign.manage · exception.manage · custody.manage · register.import · qa.review · disposal.recommend | Field operations (managers) |
| exception.approve · facility.accept · disposal.approve | Client decisions (Approver) |
| dashboard.view | Dashboard and exports |
| people.manage · team.manage · admin.users · admin.sites · admin.categories · admin.print · audit.view · settings.notifications · department.manage | Administration |
11.2 Statuses
- Asset: active, consumed, retired. Condition: good, fair, poor, broken.
- Facility in a campaign: planned, counting, reconciling, qa, awaiting_approval, accepted, reopened, handed_over.
- Exception: open, under_review, awaiting_approval, approved, rejected, closed.
- Custody: pending_ack, active, returned, transferred, disputed.
- Disposal: recommended, under_review, approved, rejected, collected, closed.
- Organisation: trial, active, past_due, expired, suspended, closed.
11.3 Files SpanOPS produces
Excel (.xlsx), PDF and CSV reports; the FATS registration file; exception, cross-reference, custody and disposal
registers; completion packs (PDF); label test files (.zpl, .tspl, .epl, .png, .pdf); your data export (JSON);
the audit log (Excel).
12. Troubleshooting
| Symptom | What to do |
|---|---|
| "Not on record" for a sticker you printed | The tag belongs to another organisation, or the sticker was never issued here. Check the batch under Batches. |
| "Your organisation's trial has ended, so changes are paused" | An owner subscribes under Admin → Billing (reading still works). |
| "Your organisation has N seats and all are in use" | Add seats under Billing, or remove people. Viewers and Station accounts are free. |
| "Tag capacity is full" when printing | Add seats or a capacity pack. |
| Account locked | Wait 15 minutes or ask an administrator to unlock. |
| Lost your authenticator | Use a recovery code; or an administrator resets 2FA (you are signed out everywhere). |
| Station: printer not found | Station setup (Station administrator): add the printer by IP or USB; check the raw driver; check media. |
| Station: label prints shifted or small | Fine-tuning: shift and scale for this printer. The design itself is changed in the portal. |
| Count line queued offline | It syncs when the network returns; Sync queued forces it. |
| Custodian never acknowledged | The Custody page lists unconfirmed assignments; enter the code in person or resend. |
| A reprint asks for password and 2FA | More than two hours passed since the first print; that is the step-up rule. |
Support: the Support page in the portal, or the address on the sign-in page.