| Date | Customer | Department | Issue / Work | Tech | Hrs | Priority | Billed | Total | Status |
|---|
Click “New” to register your first service case.
| Customer | Rate group | Service agreement | Project number group |
|---|
Click “New” to add a customer with their contacts and rates.
| Rate group | User groups | Customers |
|---|
Click “New” to create a rate group, then assign it to customers.
| Project number group | Project numbers | Customers |
|---|
Click “New” to create a group, then assign it to customers.
| Name | Phone | Role / Department | Hours | Units | Access | Status |
|---|
Click “New” to add a team member with their details.
Send the service report (PDF) to the person responsible for invoicing.
You have unsaved changes. Do you want to save them before closing?
| No. | Name | City | VAT / CVR |
|---|
| When | User | Event |
|---|
Sign-ins and sign-outs will appear here.
A shared place for your team to register and track service cases — with customers, contacts, rates, project numbers, PDF reports and email. When you're signed in, everyone on the team sees the same up-to-date data.
You sign in with your Microsoft 365 company account. All data is stored centrally (Azure) and shared with your team; it syncs automatically — the header shows ● Cloud synced. If your connection drops it keeps working from a local copy (● Offline (saved locally)) and catches up when you're back online. Your own edits upload within a second or two; other people's changes appear within the sync interval (see Settings). Sign out signs you out of this app only — it leaves your Microsoft 365 session (Outlook, Teams) alone.
Service cases is the main working area, visible to everyone. Customers, Rates, Project numbers and Users are management areas, shown to administrators (and, for Customers, to users you've allowed to manage customers).
Click + New service case to log a job. The form covers:
Every case has a Service No. shown at the top of the editor and under the customer name in the list (e.g. No. C3F9K2H) — quote it to identify the job, and you can search by it. It also appears on the PDF report.
The list shows, for each case, the weekday, date & time on one line, the customer (with its Service No.), the contact's department, the issue (a ↻ N chip marks how many follow-up updates it has), the technician's initials (hover to see the full name), hours, priority, billed state and status. Search & filters at the top let you find cases by text, status, technician, customer or billing state, by a From / To date range, or with the ↩ Return visits toggle (only cases with a scheduled return, soonest due first); the tiles show live totals. Use Number of lines and the page arrows at the bottom to page through long lists. Each row has three actions on hover: 📄 PDF (make a report), ⧉ Copy (duplicate the case as a new entry dated today — it asks first), and ✎ Edit.
Every case keeps a History log — created, copied, report-emailed, sent-for-billing, invoiced/revoked, and every field change made while editing (e.g. status, priority, technician, dates, issue/work text, time & charges) — each entry stamped with the time and who did it.
The 📄 PDF button builds a clean, printable service report (choose "Save as PDF" in the print dialog). It contains the work details and hours but no prices. The report also lists the customer's administrator (the dept-admin contact) next to the contact person.
When you mark a case Done — or use the ✉️ Email button in the case editor — the app opens a Send service report dialog. It goes to the job's contact person, copied to the department administrator for that contact's department (see Customers). In the dialog you can also pick one or several internal users from a checklist to add as CC. The email includes the report in the body and attaches it as a PDF (no prices), plus any photos on the case. Each send is recorded in the case's history.
On a case that is Done, the 💳 Send for billing button emails the report — with prices (rates, amounts and totals) as a PDF — to the person who handles invoicing. You pick them from a dropdown; if there's only one, they're pre-selected. Sending sets the case's invoice status to Pending and logs it in the history.
The billing email has a ✓ Mark as invoiced button. When the recipient clicks it, the app opens (signing them in if needed), asks them to confirm, and flips the case to Invoiced. Who appears in the dropdown is controlled by the Responsible for invoicing switch on the Users tab — you can flag one or several people.
The Reported issue, Diagnosis / work performed and Next action fields have an ✨ Improve text button. It uses AI to fix spelling and grammar and tidy up the wording so the note reads clearly and professionally — keeping your meaning, facts and language (Danish or English), and never inventing anything. A short Undo appears if you want to revert. All the text fields also have the browser's built-in spell-check (red underlines, right-click for suggestions).
In the case editor, the Attachments section lets you add photos and documents (PDF, Word, Excel, text) — up to 20 MB each. On a phone you can take a picture on the spot. Tap a file's thumbnail or Open to view it; only the person who uploaded a file, or an admin, can delete it. Files are stored securely on the company account, separate from the shared data. When you email a report, any photos on the case are attached to the customer's email automatically.
Store each company's details and contact persons (name, role, department, phone, email). Tick Dept. admin on a contact to mark them the administrator for their department — they'll be CC'd on report emails for cases from that department. Assign the customer a Rate group and a Project number group so the right rates and numbers apply on their cases.
Assign a customer a Service agreement (SLA) to drive the SLA clock on their cases. Manage agreements from Customers → 📋 Service agreements (admin): each agreement is a reusable profile with a support window (when support is offered) and, per priority, a reaction and start target in minutes plus a coverage (measured against the support window, or weekdays 08–16). Define one agreement and assign it to as many customers as share those terms; clone it for a customer with different times. A case then shows its live SLA status automatically (see the service-case section above). Each agreement can also carry its own Prices (a collapsible section) — the same hourly & service rates as a rate group but keyed by support level (First / Second Level supporter, managed with 🎚 Support levels); when a customer's agreement prices the case's chosen level, that overrides the rate group. Its ↻ Update existing cases button re-prices all non-invoiced cases on that agreement's customers, and you can attach the agreement document (PDF / Word) so supporters can open and read it.
Under Equipment / installations you can register the units you service for that customer (ship, device, controller, pump…) with name, type, location, make, model, serial number, install date, an optional Project number and notes. On a service case, link the job to one of these units (the Equipment / unit picker); the unit then shows as a 🔧 chip on the case in the list. If the unit has a Project number, selecting it on a case auto-fills the case's project number — and several units can share the same project number. Click 📋 History on a unit to jump to the cases list filtered to that unit — its complete service history in one place. Each unit's card is collapsible and starts closed, showing just its name — click its header (the name with the ▾ chevron) to open or fold away its details, handy when a customer has many units. A newly added unit opens automatically so you can fill it in.
Rate groups hold your rates per user group. Assign each technician a user group (rate tier) on their profile, then in each rate group open that group's card and set its Normal rate plus Overtime surcharge 1/2 and a Call-out surcharge — Overtime 1 and Overtime 2 are calculated as Normal + the surcharge and price the matching Work hours type on a case. Each service rate can also carry one or more From–To time ranges — use the + next to a service rate to add a second window, so a single rate can cover split periods such as 07:00–08:00 and 16:00–17:00 — plus a set of day-of-week tick-boxes, so you can have one rate for Mon–Fri and another for the weekend. If you leave a rate's days all unticked, it is never auto-added — it stays available to add by hand from the case's service-rate picker. When the case's technician sets Acknowledged, the app automatically adds the service rate (for that technician's user group) whose day and time window cover the case start — the most specific match (one that pins both a day and a time window) wins, and you can still change or remove it. On the case itself, a Service rate level dropdown lets the supporter choose the case's support level — Automatic (the technician's own user-group rate group) or a level such as First Level / Second Level supporter. New cases default to the first support level (the owner). If the customer has a Service agreement with a price for the chosen level, that agreement price is used (hourly and service rates); otherwise the case falls back to the rate group by the technician's user group. Escalation adds the Second Level on top: when a case is escalated and a colleague Accepts, the Second-Level price is added (from the agreement if defined, else that colleague's user-group rate), so an escalated case can carry both levels. The editor shows a ⚠ warning if two rates in the same tier would overlap on the same day and time with equal specificity. If you've already added a service rate by hand, the app leaves it alone. Each tier can also define one or more named service rates, each built as the sum of its underlying rate rows (× an optional count) with an overall Units value; the name is what appears on the case. Mark one group as the Standard and it's pre-selected for new customers. You can copy a group and import/export groups. Service agreements can override the rate group: if a customer has a Service agreement whose Prices define the case's support level, those apply instead — see Customers → 📋 Service agreements (manage the levels with 🎚 Support levels).
In a group's editor, ↻ Update existing cases re-applies the current rates and service rates to all past service cases that use this group — recalculating their labour and service-charge totals. Cases already marked invoiced are left unchanged. Renaming a service rate also updates the matching charge on those cases. Only cases whose prices actually change get a history entry (and are counted as updated), so re-running it when nothing moved leaves no clutter.
Project number groups are reusable lists of project numbers (each with an optional description). A customer's chosen group decides which numbers appear in the Project number dropdown on their cases — and only the group actually assigned to that customer supplies numbers. You can always type a number manually.
Add your team on the Users tab using the email that matches each person's Microsoft 365 login. The Users list shows each technician's Hours (actual hours worked, as is) and Units (service units — counted only from the service-rate charges on their cases, not from worked hours) across all their cases; both are also shown, broken down, in the user editor. Each person is an Admin (full access) or a User, with optional switches:
Admins automatically have the first three permissions, so those boxes are shown ticked and greyed-out when Permission is set to Admin. These limits are enforced on the server, not just hidden — so a regular user genuinely can't reach admin-only data. You can also email a new user an invitation (with a link and sign-in instructions) from their record. The owner account can open an access log of sign-ins and sign-outs from the Users tab.
The Users tab also has two admin settings: 👥 User groups (rate tiers) and ⚑ Priorities. The Priorities editor lets you re-word the priority scale — edit each priority's label and description, add new ones, or reorder them (most-severe first). Each case stores a hidden priority id, so changing the wording here updates every existing case automatically; nothing needs re-tagging.
The Reports tab (admins) turns your cases into a quick management view. A period filter (last 12 months / this year / all time) drives stat tiles — total cases, open, done, average resolution time and total revenue — plus charts: cases per month, open cases by age (0–7 / 8–30 / 31–90 / 90+ days), top customers and by technician (by revenue when you can see pricing, otherwise by case count), the first vs second‑level split (how many cases were escalated), and top equipment by cases. Revenue uses each case's total (labour + charges); resolution time uses cases marked Done with a start and a resolved/end time; aging always reflects currently‑open cases. It's read‑only — nothing here changes your data.
Under Customers → 🔗 Business Central (admins) the app connects to Dynamics 365 Business Central to pull customer data so you don't retype it. Pick your company, Load customers, then per row: + Add a new customer, ↻ Update an already-linked one, or 🔗 Link & update a same-named customer — updates only touch name, address, phone, email, VAT/CVR and the BC customer number, never your rate group, contacts, equipment or agreement. It's read-only toward Business Central (nothing is written back). Requires a one-time Azure setup (app registration + settings).
Each management tab has Import and Export (top right, admins only). Export a tab as JSON, or take a full JSON backup of everything. Import brings data back in — matching records update in place rather than duplicating.
Behind the scenes the system also takes an automatic daily backup of everything to secure storage (kept for the last 30 days), so a recent copy can always be restored if needed — you don't have to remember to export manually.
Please sign in with your company Microsoft 365 account to continue.