The Reminder That Only Knows About People
There is a working document-expiry reminder in this product. It reads a date, respects your notification settings and warns you thirty days out. It is filtered to employees, so a work permit gets a warning and an equipment insurance certificate gets silence.
The most expensive kind of half-built feature is the one that works perfectly for a narrow case. Nobody investigates it, because everyone who touches it sees it functioning exactly as promised.
What runs
A scheduled job runs daily. It reads the expiry date on stored documents, looks thirty days ahead, and notifies — honouring the recipient's notification preferences rather than mailing everybody regardless. It is a complete, careful, working compliance reminder, and there is nothing wrong with any of it.
It then filters to two model types: employees, and employment contracts.
The expiry date is a column on the document storage table. Every kind of record in this product can have documents attached. So the field exists, populated and correct, on documents attached to assets, suppliers and purchase orders — and the job walks straight past all of them.
What that costs an asset register
Equipment carries dated paper. A machine has a warranty that ends. A vehicle has insurance and a roadworthiness certificate. A pressure vessel has an inspection interval. A crane has a certification. A leased asset has a lease that terminates on a date somebody agreed to two years ago.
All of those can be stored against the asset here, with their expiry dates recorded on them. None of those dates will ever cause anything to happen.
| Document | Attached to | Expiry stored | Warning sent |
|---|---|---|---|
| Work permit | Employee | Yes | Yes — 30 days |
| Employment contract | Contract | Yes | Yes — 30 days |
| Equipment insurance | Asset | Yes | None |
| Crane certification | Asset | Yes | None |
| Vehicle roadworthiness | Asset | Yes | None |
| Supplier liability cover | Vendor | Yes | None |
| Contract with a supplier | Vendor | Yes | None |
This is not a missing feature. It is a filter clause — which makes it cheap to fix and, until it is, completely invisible to the person holding the certificate it ignores.
The sibling case, which is worse
A second scheduled job runs at six in the morning. It finds supplier qualifications that have passed their expiry date, marks them expired, and deactivates the vendor so a lapsed supplier drops out of quotation selection without anybody having to act.
That is good design. A control that enforces itself is worth more than one that reminds somebody. But it then writes a line to the application log and notifies nobody — not the supplier, not the buyer, not the person who approved the qualification in the first place.
So a supplier disappears from your sourcing list overnight and the first anyone knows is when a buyer cannot find them in a dropdown. Every comparable clock in this product has a reminder attached. This one has a log line.
The date matters and somebody must act
Reminder
Warn, ahead of time, to a named person. This is the document-expiry case, and it exists for two record types.
The date matters and the system can act
Enforcement
Do the thing automatically. This is the supplier qualification case, and it works.
The system acts and somebody is affected
Both
Enforce, and tell the people it happened to. This is the one that is missing, and it is the combination that most compliance clocks actually need.
Neither
A date field
Useful for a report, useless as a control. Most expiry dates in most systems are this, including most of ours.
What to do until it is wired
Store the documents against the asset anyway — retrieval is the larger half of the value and it works today. Then keep the dates that carry a consequence in whatever already nags you, and treat the document store as the evidence rather than the alarm.
The one thing not to do is assume that because the field accepted a date, something is watching it. That assumption is the actual risk on this page, and it is the reason the page exists.
What AWRA OpsHub does today
- A daily document-expiry reminder with a thirty-day horizon that respects notification preferences — for employee documents and employment contracts.
- An expiry date field on stored documents attached to any record type, including assets, suppliers and purchase orders.
- A daily job that expires lapsed supplier qualifications and deactivates the vendor automatically, so a lapsed supplier leaves the sourcing pool without anyone acting.
- Document storage against assets, retrievable and attributable.
What it does not do
- Any warning on a document expiry outside the two employee record types.
- Any notification when a supplier qualification expires and a vendor is deactivated. It writes a log line.
- A warranty end-date reminder on an asset.
- A certification or inspection interval on an asset, and therefore nothing to remind about.
- A dashboard tile or report listing documents expiring soon across record types.
Not ours, by choice
- The machinery works. This is a filter, and describing it as a missing feature would overstate the work and understate how avoidable it was.
- The supplier qualification job is genuinely well built and we would not want the missing notification to read as a criticism of the enforcement. The enforcement is the hard part and it is done.
- Nothing here is Canadian. Canada is here as a market where contractors, certificates and multi-province insurance obligations make dated paper an operational fact rather than an administrative one.
What is not built for Canada today can still be built for you
Anything described above as not built is a statement about what ships in the standard product today — not a limit on what AWRA OpsHub can do in Canada. Kenya's eTIMS integration and its maintained payroll engine exist because Kenyan clients needed them and commissioned them; neither appeared by itself. The same door is open here. If storing the split, not just the total, a bank or mobile money feed, a statutory return format, a rule your own operation needs that the standard one does not have, or a link to a system you already run is what stands between you and a decision, tell us and we will scope it as a build — written spec, timeline and price — before you commit to anything.
The cheapest first build in this corpus, and then three larger ones
Persist the per-levy breakdown onto the document at the moment of saving. The figures are already computed — our engine works out each levy against its own base and returns them — and today they are discarded, leaving a blended rate and one tax type on the record. In a province levying two taxes that means the total is right and the split, which is the only thing either return needs, has to be re-derived from settings that may since have moved. Storing what is already in hand would make every such invoice decomposable for the rest of its life, and it is a fraction of the size of the capability it unlocks. After that: a tax type on the line, a province on the customer and the sale, and a return assembled from the three.
Banks and payments
EFT files and bank statement feeds wired into the Payments Register, so money in and out reconciles against the documents rather than being typed twice.
Certifications and inspections, which is where a Canadian commission usually starts
A trade ticket, a medical or an equipment examination with a date that has to be watched, and a consequence when it passes: an asset that cannot be issued, a crew member who cannot be assigned, a list somebody actually receives. Custom field sets and expiry reporting exist today; making an expiry refuse rather than notify is the small build, and it is the same shape of work as the certificate stop we would do in Guyana. Seasonal resupply planning per location — lead times driven by a window rather than a reorder point — is the other one we would expect to be asked for here.
Payroll and statutory returns
A Canadian payroll engine with CPP and EI contributions, T4 and record-of-employment production and provincial levies computed on live employee records. None of it exists today; labour cost attribution to projects and cost centres does.
Systems you already run
The accounting package, CRM, online store or custom database you intend to keep — connected through our API so a fact is entered once and appears everywhere it is needed.
How it works: you describe the requirement, we return a written scope, timeline and cost, and once agreed it is built into your environment and maintained as part of the product. No roadmap slide, and no pretending in a demo that something exists when it does not.
Tell us what you need integratedFour questions about expiry handling
Which record types does the expiry reminder cover?
A good answer sounds like
A list, not "documents".
What it actually means
The question that found this. "Documents" is the answer that hides a filter clause.
Show me a warning for a document on a piece of equipment.
A good answer sounds like
They show one.
What it actually means
Ten seconds, and it is unambiguous. Ours would fail this test today.
When the system deactivates something automatically, who is told?
A good answer sounds like
A named person or role.
What it actually means
Silent enforcement is discovered by its victims. Ours is, for supplier qualifications.
Is there a single view of everything expiring next month?
A good answer sounds like
Yes, across record types.
What it actually means
Per-record dates without a cross-cutting view means somebody has to remember to look in several places.
Our position
Store the certificates against the asset — that part works and retrieval is most of the value. Keep the dates themselves wherever you are already reminded, and do not assume a field that accepted a date is a field something watches. If asset and supplier document expiry is a compliance requirement rather than a convenience, raise it: it is a filter clause, and it is one of the cheapest things on this blog to close.
Ask which types the reminder covers
It is one question, and it separates a working compliance clock from a working compliance clock pointed at two tables. Ask it of whatever you are evaluating, including this.
Talk about document expiryFrequently asked questions
Can I store an insurance certificate against a vehicle today?
Yes, with its expiry date, and it will be retrievable and attributable. Nothing will warn you before it lapses, which is the distinction this page is drawing.
Is there a report of documents expiring soon?
Not across record types. This is the same absence from the other direction — no reminder and no cross-cutting view, so the dates are only visible on the record they sit on.
How would I know a supplier had been deactivated?
Today, by noticing they are missing from a selection list. The job that deactivates them writes a log entry and sends nothing, which is recorded as a gap rather than presented as a design choice.