github itflow-org/itflow v26.11
v26.11 ITFlow neXt Release

2 hours ago

Changelog

This file documents all notable changes made to ITFlow.

[26.11]

Upgrading to 26.11

Update from Maintenance > Update — Queue Update hands the job to cron, which updates the files and applies this release's database changes (2.7.9 to 3.5.3) in the same pass. Nothing else is required.

This is a big release, with nearly seventy database steps in one go, so take a backup before you update.

The update also clears out data that deletes in older versions left behind, all of it pointing at something that no longer exists:

  • rack items still linked to a deleted asset (the item stays in the rack, the dead link is dropped)
  • assets, licenses, tickets, domains, services and certificates still pointing at a deleted vendor or domain, and certificates linked to another client's domain
  • the tasks, approvals and history of deleted tickets, the projects of deleted clients, and tickets still pointing at a deleted project
  • project template entries whose ticket template is gone, and the same service link saved twice

It also gives every existing network a type (LAN, WAN, Guest and so on) guessed from its name or description, which you can change afterwards, and fills in the issue date, names covered and fingerprint of every certificate already on file. Invoices made from a quote before the update are linked to that quote, so each one shows where it came from. Products that ever had stock added keep tracking their stock, and the rest are set to ordered as needed (see Breaking Changes, Products). Their past stock changes are sorted into received, sold and returned from their notes, and linked to the invoice they name. No product becomes a client asset when it is sold until you give it an asset type (see New Features, Products). Each product's price history starts with the update, so lines on recurring invoices are only flagged as behind once their product's price changes. Ticket replies from the 90 days the mail queue keeps are matched to the emails that carried them, so the conversation shows who they were emailed to.

Payment reminders keep the schedule they had: 1 and 30 days late, then every 30 days until the invoice is paid. If reminders were on, they stay on, and every client is included. The schedule can now be changed in Admin > Settings > Invoice (see Breaking Changes, Billing emails). Monthly statements start switched off.

Expenses already entered take who entered them from the audit log, where it has a record of it. Expense receipts are no longer opened straight from the uploads folder - see Breaking Changes, Expenses.

Recurring expenses keep their next date and from then on run on that day of the month - monthly ones stay monthly and yearly ones yearly. Look over their next dates once after the update (see Breaking Changes, Expenses). The expenses they recorded before are linked to them, matched on the vendor, category, client and description. No expense or recurring expense becomes billable to a client by itself - they stay your cost until you mark them (see New Features, Expenses).

Trips already logged keep the miles they were entered with (see Breaking Changes, Trips). Each takes who logged it from the audit log, or its driver where the log has no record. A trip for a client whose destination is one of that client's locations, by name or by address, is linked to that location. Trips already logged count as driven in a company vehicle and not billable, so nothing is paid back or billed for them until you say so (see New Features, Trips). No mileage rate or trip charge is set, and mileage goes under an expense category called Mileage, or Travel, when there is one.

Other income already entered (money in that isn't for an invoice, which used to be called revenue) takes who entered it from the audit log, where it has a record of it. Income with no category now counts in the dashboard and reports, so their totals can go up by that much (see Breaking Changes, Income).

Ticket statuses keep their names, colours, order and SLA settings, and every one of them still sends a ticket back to Open when the client replies - until you set one of your own to leave it where it is (see New Features, Ticket Statuses). The five built-in statuses are given a line on what each is for, which you can change.

Payment methods are all offered for money in and out, as before, until you say one is only for one of them (see New Features, Payment Methods). Methods that payments, income or expenses were recorded with but that aren't in Admin > Payment Methods - ACH from a bank import, say - are listed there to add with one click.

Contracts and contract templates keep their names, dates, rates, support hours and terms. Their response and resolution hours become an SLA from Admin > SLAs for each ticket priority - one you already have with the same hours, or a new one named for the template or contract and the priority, such as "Gold - High" - and Urgent takes High's, as there were no urgent hours. A renewal frequency becomes a term: Annually is 1 year, 2 Year is 2 years and so on, each renewing itself, and Manual is 1 year that is only renewed by hand. Net terms become a number of days, so "Net 30" is 30, and ones without a number are left empty, which means the client's own apply. Fully Managed and Partially Managed become Fully managed and Co-managed, Break/Fix stays, and any other type is Other. A contract's status becomes Active, Draft, Ended or Cancelled: Pending is a draft, Expired is ended, and anything that isn't one of those is active. Each has 30 days' notice, and no owner, contact or template until you give it one.

The first nightly run after the update deals with active contracts whose end date has passed (see New Features, Contracts). One that renews itself is renewed term by term until it is current, and one that doesn't is marked ended. Agents are notified in ITFlow about the ones due soon with something to do - ending, or renewing with notice to give during the term - and the owner is emailed once a contract has one. An archived client's contracts are left as they are. Look over Contracts once after the update if end dates weren't kept up to date.

No contract is out for signature after the update - signing starts when you send one (see New Features, Contracts). A signature already stored on a contract, put there by hand or by a script, is kept as a copy recorded before signing came to ITFlow, under the contract's Signing.

No contract has prepaid hours after the update - none included each month and none bought - so nothing is drawn from them, and Unbilled Time is as it was, until you add some (see New Features, Contracts).

A contract in force now sets its client's SLAs, hourly rates and net terms, where it has them (see New Features, Contracts). The update carries contracts' response hours, rates and net terms over, so for a client with an active contract, new tickets can get a different SLA, time can bill at the contract's rate - and its after-hours rate, for tickets opened outside business hours - and new invoices can be due sooner or later than before. Tickets already open keep their SLA. A contract rate of 0.00 - what an empty rate was saved as before - is taken as no rate, so the client's own rate applies, now on its Standard terms contract (below). Look over Contracts once after the update, and clear a rate or net terms you don't want applied. No contract is linked to a recurring invoice until you link one.

A client no longer has an hourly rate, net terms or SLAs of its own. They come from its contract in force, and where it has none, or leaves one empty, from the defaults - the hourly rate, after-hours rate and net terms in Admin > Settings > Defaults and the SLAs in Admin > SLAs (see Breaking Changes, Clients' rates, terms and SLAs). Nothing is billed differently after the update: each client whose own rate, net terms or SLAs differ from the defaults is given a contract called Standard terms that sets just those. It is active, on a 12-month term that renews itself with no notice, and starts the day the client was added - or the day before a contract the client already had, so that one still comes first where it sets a rate, terms or an SLA. An archived client's is archived with it, and a client whose terms were all the defaults gets none. A contract that left its rate, net terms or an SLA to the client's own says the same in its document, now from Standard terms, so nothing signed goes out of date. Two kinds of client SLA can't be carried, as a contract sets an SLA or leaves the default: one set to no SLA, and one pointing at an SLA that has since been archived. That client's new tickets of that priority get the default SLA. The default after-hours rate starts empty, so after-hours time bills at the hourly rate, as before, until you set one.

Nobody can sign up for the client portal after the update - it is off until you turn it on in Admin > Settings > Client portal and let a client's people do it on its Contacts > Invites (see New Features, Client portal invites and signing up). Inviting people works straight away. Contacts given portal access before are as they were.

Agents already set up are as they were after the update, and nobody is invited until you invite them. From now on New User invites by default: they are emailed a link to choose their own password, and the email with a password in it is gone (see New Features, Agent invites, and Breaking Changes, Users).

No client is being onboarded after the update, so no client's overview shows Finish onboarding. Onboard a client, under New Client's arrow on Clients, takes a new client on a step at a time, and a lead or a client you already have can be onboarded from its menu (see New Features, Client onboarding).

No internal note mentions anyone after the update. From then on, typing @ in an internal note mentions someone on your team, and they are told in ITFlow and by email (see New Features, Mentions in internal notes).

Get started, the walk through what is left to set up after installing, isn't shown on an install that is updated - nothing is added to the dashboard and nobody is taken to it on signing in. It is in Admin > Get started for anyone who wants it (see New Features, Get started).

Every account is given a kind - checking, savings, credit card, cash or payment processor - guessed from its name: Visa, Amex or card is a credit card, savings or reserve is savings, cash or petty cash is cash, and Stripe, PayPal, Square or merchant is a payment processor. An account given a liability type back when accounts had types (2023) is a credit card, so what is on it reads as owed. Anything else is checking. Change any that came out wrong with Edit on the Accounts page. An account's balance now leaves out archived payments, income and expenses everywhere, so the Accounts page can show less or more than before (see Bug Fixes). No account is reconciled after the update. The first statement you reconcile on each can start from the bank's balance on the day it starts, bringing everything before it forward as reconciled, or from the account's opening balance (see New Features, Accounts and transactions). Transfers already made out of a cash account count as having taken everything in it up to then to the bank, so the first deposit you make after the update only offers the checks and cash taken in since the last one.

Taxes keep their names and rates, now kept to four decimal places. No client has a rate of its own or is tax exempt, and there is no default rate, so new lines start untaxed as before until you pick one in Admin > Taxes. Billed time, trips and expenses stay untaxed until you switch them on there. Discounts now come off before tax on invoices and quotes that are still open, the next time they are edited (see Breaking Changes, Taxes). No expense has tax recorded on it until you add it, so Tax Collected shows no tax paid on purchases for the months before.

Tags keep their names, colors, icons and records. A color saved as a word, such as dark or primary, becomes the color it stands for, a short one such as #abc is written out in full, and a tag with no color, or one that isn't a color, turns grey, so its pills can be read (see Bug Fixes). An icon saved with fas fa- in front keeps just its name. A tag archived in an older version now counts as archived (see Breaking Changes, Tags). Licenses, services, networks, documents and tickets can now be tagged too, and start with no tags - the Tags pack in Maintenance > Starter Content adds a few for each.

Categories keep their names, colors, icons, order and records. A color saved as a word, such as lightblue or gray, becomes the same color written as #rrggbb, and a short one such as #abc is written out in full, so nothing looks different, but the ticket lists and the reports, which only read colors written that way, now show it (see Bug Fixes). A color that isn't one is taken off, and a category with no color stays without one. Interface types, asset statuses, software types, rack types and note types keep the order they are offered in.

API keys keep their names, end dates and the agent they act as. Admin > API Keys shows each as never used until its next call. A key acting as an agent who is disabled or archived, or has no role, was already turned away by the API, and is now marked Won't work with the reason (see New Features, API Keys).

The built-in Accountant role gets full access to Financial, so it can delete an expense, other income, a transfer or a payment entered by mistake - but only if it is still as it came: named Accountant, with Clients, Support, Sales and Reports at Read and Financial at Modify. One you have changed keeps what you gave it (see Breaking Changes, Roles).

What the API makes from now on - tickets, replies, clients and the rest - is stamped in ITFlow's timezone, as the pages stamp what they make. What it made before keeps the server's time, which on a server set to UTC is hours off (see Bug Fixes).

Ticket templates keep their subject, details and tasks, and set nothing else on a ticket until you give them a category, priority, agent, due time or tags. Words in square brackets already in a template, like [Employee Name], are asked for as plain, optional text when a ticket is raised from it, until you set them up on the template's page (see New Features, Ticket templates). Tickets raised before the update don't know which template they came from, so a template's use is counted from the update on. The starter ticket templates you added from Maintenance > Starter Content stay as they are; Update on that page brings them up to the new versions, which ask what they need and come with request forms.

Canned responses keep their names, what they say and their ticket category. One whose category had been deleted is offered on every ticket, as it already was. How often each is used is counted from the update. None sets up anything on the reply until you give it a reply type, status or time worked on its Sets up tab. Every canned response already there is shared - offered to everyone, as before - and none has files.

Document templates keep their names, summaries, what they say and their images. Words in square brackets already in them are now filled in when a document is made: [Client], [Site], [Contact], [Date] and the others listed under New Features (Document templates) from the client, and the rest are asked for as plain, optional text until you set them up on the template's page - one left blank stays as it is, as before. Documents made from a template before the update don't know which one, so a template's use is counted from the update - link one to its template from the document's page to count it. No template is required of anyone, and none asks for reviews, until you set it up on its page. The starter document templates you added from Maintenance > Starter Content stay as they are; Update on that page brings them up to the new versions, which fill in from the client, ask for what they need and are reviewed on a schedule.

License templates keep everything they hold. A license called exactly what one license template is called - as the New License form named it when started from one - counts as made from that template, so a template's use starts out counted; where two templates share a name, neither is given its licenses. Other licenses don't know a template, so they count from the update. No template sets seats, a renewal term, a vendor or a product until you give it one, and none is required of anyone until you set it up on its page. Maintenance > Starter Content has a new License Templates pack to add.

Vendor templates keep everything they hold, and the vendors made from them stay linked to them. Who made each and last changed it is taken from the audit log, where it has a record of it. A vendor made from one that has since been changed by hand shows as out of step with it, and nothing on it changes until you bring it in line. Vendors made by hand stay unlinked - a template's page lists the ones that look like it, to link. No template is required of anyone until you set it up on its page. Vendors and their templates have a status page and a support portal from this version, empty until you fill them in, and templates keep the account manager's line and email as vendors do. The starter vendor templates you added from Maintenance > Starter Content stay as they are; Update on that page gives them their support site, status page, portal and what support asks for.

The app logs are kept for as many days as the audit log, as before, and each can now be set on its own in Admin > Settings > Logs, which is where the log retention went from Settings > Security. A retention of 0 now keeps a log forever (see Breaking Changes, Logs). Nothing is sent to a syslog server or SIEM until you set one up there.

AI providers keep their address, key and models. Each is given a kind from where it points - OpenAI, Anthropic, Azure OpenAI, Google Gemini, Mistral, Groq, OpenRouter, Ollama or LM Studio - or Other (OpenAI-compatible), and passwords and keys are taken out of what is sent to each from now on, which can be turned off for a provider in its Edit window. Every role keeps using AI, through a new Use AI permission in Admin > Roles that can now be taken away from a role. A model's prompt is now its instructions, sent after what each feature asks for (see Breaking Changes, AI). AI Usage starts empty. AI triage of new tickets starts off - turn it on in Admin > Settings > Tickets.

Assets keep their type and everything they hold. NAS, UPS, PDU, Modem/ONT and NVR/DVR are new types to choose from, and no asset is changed to one by the update - a NAS or UPS entered before as a server or Other stays that until you change its type. No asset has details (ports, RAM, battery dates and the like) until you add them, and the update adds no interfaces (see New Features, Asset types and details).

If you are coming from 26.08 or earlier, the database update still has to be run from the command line one time, exactly as described under Upgrading to 26.09 below.

Breaking Changes and Notes

  • Client restrictions: if you limit agents to certain clients, that limit is now applied in places it used to slip through. This covers editing, archiving or deleting the client itself, the client list's bulk actions, credits, expenses, trips, recurring expenses, revenues, task approvals, the dashboard lists and the per-client reports. A restricted agent will lose access there. Company-wide report totals are unchanged.

  • Dashboard: the Financial and Technical switches at the top of the dashboard are gone. Each part of the new dashboard shows to anyone whose role can open that part of ITFlow. If you used the switches to keep figures off someone's screen, take that module out of their role instead.

  • Reports: each report now checks access on the page itself, not only in the menu, and is hidden when its part of ITFlow (accounting, ticketing or IT documentation) is turned off. Every report still needs the Reporting permission, plus:

    • Sales for Receivables Aging and Recurring Revenue, which used to need Financial, as they show invoices. Unbilled Work also needs Sales now, in the menu as well as on the page.
    • Financial for Mileage, which used to open with Reporting alone.
  • Reports have new names that say what they show: Outstanding Balances is now Receivables Aging, Recurring Income by Client is Recurring Revenue, Expense by Vendor is Spend by Vendor, Tax Summary is Tax Collected, Unbilled Tickets is Unbilled Work, Time by Technician is Technician Performance, Tickets is Ticket Overview and SLA Summary is SLA Performance. The addresses are the same, so bookmarks still work, though the filters saved in an old bookmark may be ignored and the report opens on its default period.

  • Client export: the client PDF no longer prints passwords and 2FA secrets unless you ask for them, and then it needs a password to open. The old PDF always printed them in plain text, archived credentials included.

  • Shared links:

    • Links you sent before the update keep working until they expire.
    • New links keep their key after a # at the end of the address, so the whole link has to be copied. A system that cuts off everything after the # breaks the link.
    • Opening a link now takes a click on Reveal. This is so mail filters and chat apps that open every link cannot use up a one-time link.
    • Ended links stay listed for 90 days, with who opened them. They used to be deleted overnight.
    • Only the agent who made a link is told when it is opened. It used to notify every agent.
  • Billing:

    • Line amounts are rounded to the cent when a line is saved. Tax used to be stored unrounded, so a total could be a cent off what was printed. Lines already on file keep their amounts until they are edited.
    • Taking a service line off an invoice no longer adds stock to the service. Only products kept in stock move stock, as before when they were added.
    • A quote that has run out can no longer be accepted from its link. Extend its date, or send a new one.
    • Batch Payment only pays invoices that are still owed (sent, viewed or part paid). It used to include non-billable invoices too, and marked them paid.
    • Invoice and quote PDFs have a new layout, and print on Letter paper in the United States and Canada and A4 elsewhere. They were always A4.
    • The recurring invoices list no longer has a date filter. It filtered by the date each one was created.
    • Links to the invoices list with ?status=Draft, Unpaid or Overdue still work, and Paid and Cancelled are new.
  • Clients' rates, terms and SLAs:

    • A client's Edit window no longer has an hourly rate, net terms or SLAs. Its Billing tab says what the client is billed on and where that comes from - its contract, or the defaults - with a link to its contracts. New Client doesn't ask for them either, and a new client is billed on the defaults until it has a contract.
    • The Clients list's Bulk menu no longer has Set Hourly Rate and Set Net Terms. Change the defaults, or the client's contract.
    • The client import still takes the Hourly Rate and Payment Terms columns: a client whose rate or terms differ from the defaults is given a Standard terms contract for them.
    • API: clients/create still takes client_rate and client_net_terms, and makes a Standard terms contract for a client whose rate or terms differ from the defaults, returning its contract_id. clients/update no longer changes them, and says so in not_kept. clients/read no longer returns them.
    • The database columns clients.client_rate and clients.client_net_terms are gone, and sla_assignments keeps only the defaults (sla_assignment_client_id 0). Anything of your own that reads them, such as a custom report, needs changing.
  • Billing emails:

    • Payment reminders moved from Admin > Settings > Notifications to Admin > Settings > Invoice, under Reminders and Statements. Saving the Notifications page no longer changes them.
    • Reminders and payment receipts go to the client's primary and billing contacts, once per address. They used to go to the primary contact only.
    • An invoice on a recurring invoice with autopay is not reminded before or on its due date, as the card is charged that day. It is reminded once it is late.
    • Invoice, quote, reminder, receipt and statement emails have a new look, with the invoice, quote or statement attached as a PDF. Attaching can be turned off in Invoice Settings, or for one email in its Send window. The subjects changed too, such as "Invoice INV-12 from PittPC", "Overdue: invoice INV-12 is 30 days past due" and "Payment received for invoice INV-12". If you filter mail on the old subjects ("Overdue Invoice INV-12", "Quote [scope]", "Account Statement - Client"), update the filters.
    • The late fee is now a line on the invoice like any other, and the total is worked out from the lines. It still comes every 30 days late, while reminders are on.
  • Recurring invoices:

    • The nightly run also bills a run it missed by up to 7 days, for nights the cron didn't run. It used to bill only on the day itself. A recurring invoice further behind than that is still left for you to look at.
    • Invoice Now bills the next run early, and the schedule moves one period on from that run, so the invoice takes its place. It used to restart the schedule from today: pressing it on the 16th for a run due on the 1st moved every later invoice to the 16th.
    • Every invoice made from a recurring invoice takes its taxes at today's rates, and the recurring invoice's lines are updated to match. The nightly run used to copy the amounts saved when each line was added, while Invoice Now used today's rates.
    • A schedule on the 29th, 30th or 31st keeps that day. After a shorter month it goes back to the 31st, where it used to stay on the 28th from then on.
    • The email goes to the client's primary and billing contacts that are not archived, once per address. When outgoing mail is not set up, nothing is queued and the invoice stays a draft. It used to be marked Sent anyway.
  • Quotes:

    • A quote's amount is now what it bills up front. Lines billed each month, quarter or year are counted apart, as so much a month, and the quotes list, search and the client portal show that next to it. Quotes from before the update have only one-time lines, so their amounts don't change.
    • The quote's discount comes off its one-time lines. On a quote with only recurring lines it comes off the first recurring part (each month, then each quarter, then each year), and stays on the recurring invoice made from it.
    • Make Invoice only works on an accepted quote, and only once. The quote is then Invoiced. It used to invoice a quote in any status, as many times as it was pressed. When the client says yes by phone or email, mark the quote Accepted first.
    • The quote email says "Cost: $1,540.00 up front and $2,034.76 a month" when the quote has recurring lines. A quote with only one-time lines still says "Total Cost".
    • Quotes Pipeline values a quote at what it bills up front plus a year of its recurring lines, so a quote with monthly lines counts for more than its up-front amount in quoted, won, lost and open. The open quotes table shows that first-year value with the breakdown under it, and its CSV has Up front, Monthly and First year columns.
  • Products:

    • Only a product with Track stock on moves stock when it is invoiced, and it still can't be invoiced past what is on the shelf. After the update, a product that ever had stock added keeps tracking it. One that never did is ordered as needed and can now be invoiced - it used to be refused as not enough in stock. Turn on Track stock in Edit for anything else you count.
    • The Products page shows everything, with tabs for Services, Products, Recurring and Stocked. It used to open on Services. Old links to products.php?type=service and ?type=product still open those tabs.
    • Clicking a product opens its new page instead of the Edit window.
    • Import finds columns by their heading, so a file can have any of the fields in any order. The old three column file (Product Name, Description, Price) still works. A row whose code is already in the catalog is skipped unless Update products with the same code is on.
    • Add Stock is replaced by one Stock window with Receive, Count and Write off, on the product's page and in the list's menu. Count records the difference from what you counted, and Write off asks why.
    • Cancelling or deleting an invoice puts its tracked products back on the shelf. Deleting one used to leave the stock gone for good.
    • Copying an invoice, or making an invoice from a quote, is refused when a tracked product on it is short, the same as adding the line by hand. Add the stock first.
    • Invoices made from recurring invoices are now linked to their products, so they count as sold on the product's page and in the reports. They don't move stock.
    • Stock can be counted in fractions (up to two decimal places), such as cable by the metre.
  • Expenses:

    • Receipts open through ITFlow, for agents with Financial access to the expense, instead of straight from uploads/expenses/. An old link to a receipt file stops working. On Apache the folder is closed by the .htaccess that comes with the update. On nginx, deny /uploads/expenses/ the way you deny /uploads/tmp/ and /uploads/backups/.
    • A new expense takes the currency of the account it is paid from. It used to take the company's currency whatever the account.
    • The description is optional now.
    • Bulk Set Category, Set Account and Set Client are one window each from the same Bulk menu, with Set Payment Method added. Bulk Delete is one button that asks once.
    • Recurring expenses run on the day of the month of their next date, the way recurring invoices do. The nightly run used to move a monthly one a month on from the day it happened to run, and a new one started in the month picked in the form even when it was monthly. Check the next dates on the Recurring Expenses page after the update.
    • A recurring expense the nightly run missed by up to 7 nights is recorded the next night, dated the day it was due. One further behind waits for you to Record Now or Move On. The notification every night for each recurring expense with a date in the past is replaced by one notification, on the day it falls too far behind.
    • Deleting a recurring expense needs full Financial access, the same as deleting an expense. It used to need write access.
    • Unbilled Time also lists expenses to bill for agents with Financial access, and its count in the menu adds them. For those agents it shows in the menu even with ticketing turned off.
    • Transactions has a Reimbursement type for money paid back to an agent. A Transactions export filtered to Expense leaves those out.
  • Trips:

    • Every agent can open Trips when accounting is on, and log their own driving. An agent without Financial access sees only the trips they drove or logged, and can change or delete only those. Logging a trip for someone else, or changing theirs, needs write access to Financial, and deleting theirs needs full access. Before, any agent who opened the page saw every trip of their clients and could change any of them.
    • A trip's miles are the whole trip. The form asks for the miles one way and doubles them for a round trip. The old form saved the number as typed, whether Round Trip was ticked or not, so an older round trip entered as the miles one way still counts once. Edit those to correct them.
    • The database column trips.trip_end_odmeter is now trip_end_odometer. Anything of your own that reads it, such as a custom report, needs the new name.
  • Income:

    • Money in that isn't for an invoice is now called other income (it was revenue). Adding and changing it needs write access to Financial, and deleting it full access. It used to need Sales. Payments go by Financial too, with Sales at Read (see Roles).
    • Other income counts whether it has a category or not, on the Income list, the dashboard, the client overview and every report, as No category when it has none. The dashboard and reports used to leave it out until it had a category, so their income can go up after the update by what had none. Money coming in from a transfer between your own accounts is still not income.
    • New other income takes the currency of the account it goes into. It used to take the company's currency whatever the account.
    • The Income list's Bulk menu has Set Category, Set Account, Set Payment Method and the new Set Client, a window each, and Delete. A payment's category is its invoice's, so Set Category on a payment sets its invoice's category, as before. A payment's client is its invoice's, so Set Client leaves payments alone, and payments are deleted from their invoice, not here.
    • The export's Type column says Invoice payment or Other income (it was Payment or Revenue), and Source is now What for, with new Invoice and Paid Online columns.
    • In Transactions, a payment's date opens its quick look instead of the invoice. The quick look has Open Invoice.
  • Accounts, transactions and transfers:

    • The Transfers page is now the Transfers pill of Transactions. The Transfers link stays in the menu and opens it for every account. An old link to transfers.php lands there with its account and dates. The old page could filter by the account a transfer came from and the one it went to together. Now pick one account, and its Transfers pill shows the transfers into and out of it.
    • The New Transfer window no longer has the list of recent payments to copy into the notes.
    • A transfer takes the currency of the account it leaves. It used to take the company's currency whatever the accounts.
    • An account can only be archived once it holds nothing and no payment provider pays into it, and only an account that was never used can be deleted. The Accounts page used to hide Archive otherwise, but the link itself archived any account, and Delete removed an account with its history still pointing at it. Archive one you no longer use instead.
    • The Transactions export's Type column says Invoice payment, Other income, Transfer in, Expense, Transfer out or Reimbursement (it was Payment, Revenue, Transfer In, Expense, Transfer Out or Reimbursement). Money in and out are now separate In and Out columns, with Account, Who or What and Client added. The signed Amount column is still there, but off unless ticked.
    • Links to transactions.php?type=Payment and the other old type names still work.
    • Once a payment, other income, expense, transfer or reimbursement has cleared on a reconciled statement, its amount, date and account stay as they are and it can't be deleted, until that reconciliation is undone. Its category, client, description, method and reference can still change. This also stops:
      • deleting the invoice a cleared payment is on (cancel the invoice instead), or refunding a cleared Stripe payment from ITFlow, which deleted the payment
      • deleting a client with cleared payments or other income, from ITFlow or through the API (keep the client archived instead)
      • Bulk Set Account and Bulk Delete on the Income and Expenses lists, which leave cleared ones as they are and say how many
      • undoing a reimbursement whose money out has cleared
    • An account brought forward as reconciled (see New Features, Accounts and transactions) has everything before the day it was brought forward to locked the same way, until that is undone.
    • An account's opening balance can't be changed by hand once a statement on it is reconciled, as the first statement starts from it. On an account brought forward from the bank's balance, Correct the opening balance can still move it once.
  • Taxes:

    • Discounts come off before tax. On an invoice, quote or recurring invoice with a discount, tax is worked out on what the client pays after it, the discount shared across the lines by their amounts. It used to be worked out on the full price. Paid, cancelled and non-billable invoices, and quotes that are answered or invoiced, never change. Others follow the next time a line or the discount is edited, and a recurring invoice when it next bills. To keep taxing the full price, switch off Take discounts off before tax in Admin > Taxes.
    • Changing the percent of a rate that is on an invoice or quote that has gone out now makes a new rate with the same name, and archives the old one. What was billed keeps the old rate, on the page, the PDF and the Tax Collected report, where the two show as separate rows. Products, clients, the default and recurring invoices move to the new rate, and draft invoices and quotes do too unless you untick it. It used to change the rate in place, so an invoice already sent showed the new percent next to tax worked out at the old one. A rate's name, description and registration number still change in place.
    • A rate can only be deleted when nothing has ever used it - archive it otherwise. Archiving asks where to move the products, clients, recurring invoices, drafts and default that use it. Left where they are, recurring invoices and drafts keep charging it, and new lines for its products and clients take the next rate along.
    • Tax Rates in the Admin menu is now Taxes.
    • A line on a rate made of parts is taxed part by part, each to the cent, so its tax can be a cent off the whole rate times the line.
    • Tax Collected now shows tax by part, so a rate made of a state's and a county's part shows two rows, and a part named the same on two rates shows one. Its sales are net of discounts, where they used to be the lines before any discount, and archived payments no longer count. It still counts as payments come in unless you switch it to Invoiced.
  • Tags:

    • Archiving a tag now does something: it stays on the records that have it, but isn't offered in record forms, the tag picker or the list and export filters, unless a record or filter already has it. A tag archived in an older version is archived now too - restore it from the Archived tab in Admin > Tags.
    • The + beside the Tags field in record forms is gone. Admins type the new tag's name into the field instead, and it is made when the record is saved. Other agents pick from the tags there are, as before - the + never worked for them.
    • A tag's name is now unique within its kind, in any case: a second client tag called VIP can't be made, though an asset tag can be. Tags already named alike keep their names. Typing a name that exists into a record form picks that tag.
    • A tag that a recurring invoice line counts users or devices by can't be deleted. Archive it, or merge it into another tag, which moves the line along with it.
    • Pills now have dark text on light colors such as yellow and light blue, where every pill had white text.
    • The search box at the top, and the license, service, network, ticket and Files searches, also match tag names, so a search can bring back records whose own details don't have the words in them. In the search box and on its full results page, the tag that matched shows next to each.
  • Categories:

    • Renaming a referral, asset status, interface type, software type, rack type, or contact or asset note type now renames it on every client, asset, interface, license, license template, rack or note that has it. Records keep these by name, so renaming one used to leave its records on the old name, which could no longer be picked.
    • A category can only be deleted while nothing uses it - merge it into another, or archive it. Deleting one in use used to leave expenses, invoices and tickets with no category, and clients and assets with a name that could no longer be picked. Delete is now on current categories too, not only archived ones.
    • A category's name is now unique within its kind, in any case: a second expense category called Travel can't be made, though an income category can be. Categories already named alike keep their names.
    • Interface types and rack types are held to 50 characters, which is all an interface or a rack keeps.
    • The + beside a category picker shows for admins only, on every form. It opened Admin's New Category window, which refused anyone else. Agents typing a referral that isn't one yet into a client's form still make it, as before.
  • Notifications now follow access too. An agent only sees notifications for clients and areas they can open, so someone without sales access no longer sees invoice and quote notifications.

  • Drop-downs: Tom Select is gone, replaced by ITFlow's own picker. It works the way you are used to: type to search, tick several in a multi-select, and type a new value in fields that allow it, such as ticket watchers. See Developer Updates if you have custom pages that used Tom Select.

  • Several small windows are gone because the change is now made where the value is shown:

    • ticket assignee, priority and billable
    • Assign Tags on assets, clients, contacts, credentials and locations
    • Link Closed Ticket on projects

    Click the value and pick a new one, or use the + at the end of a record's tags. Each change saves straight away.

  • Tickets: a closed ticket can no longer be changed, either from the ticket's windows or through the API. Merging is only offered between tickets of the same client.

  • Tickets: a ticket that closes by itself some time after it was resolved now sends the client the closed email, as closing it yourself does, when client notifications are on (Admin > Ticket). It used to close without a word.

  • Tickets: an agent is now emailed when a ticket is assigned to them from New Ticket or Edit, as they already were from the assignee pick and Bulk Action. It used to be an app notice only. Assigning a ticket to yourself sends nothing.

  • Client portal: the email inviting a contact to the portal no longer has their password in it. Tick Email them an invite to the portal - on New Contact as well as Edit - and they get a link to set their own password, good for 7 days, or with a Microsoft login a link to sign in. It used to email the password the agent typed, in plain text. A password you type is still set, for reading out over the phone; the link lets them choose another.

  • Email on the contacts and clients lists comes from one of your mailboxes in Admin > Mail, picked by name, and goes out in the email look. Archived contacts and contacts without an email address are left out, and each address gets it once. With no roles ticked on the clients list it goes to every contact that isn't archived. Nothing is sent while outgoing mail isn't set up.

  • Ticket templates: [Client], [Contact], [Asset], [Site], [Agent], [Project], [Ticket], [Date], [Month], [Quarter] and [Year] in a template's subject, details and tasks are filled in when a ticket is raised from it - and in a recurring ticket's each time it raises one, template or not. A recurring ticket with [Month] in its subject used to raise it with [Month] in it. Anything else in square brackets is now asked for when a ticket is raised from the template - optional unless the template says otherwise - and stays as it is when it isn't answered.

  • Ticket templates: a project template's tickets are set up as their ticket templates say. They were always Medium, uncategorised and billed as the default.

  • New Tickets on the assets list: with [Asset] in the subject, the asset's name isn't put in front of it as well. New Tickets on the assets and clients lists now email the agent they go to, once for all of them, as New Ticket does.

  • Emails to agents keep their subjects, so mail rules still match. The ones that changed: a client's reply from the portal is "ITFlow - Ticket updated - [TCK-12] Subject", with the dash the emailed reply always had; one recurring ticket assigned from Bulk Action is "ITFlow - Recurring ticket Subject assigned to you", as from the assignee pick; and a ticket raised on a schedule reaches the new-ticket address as "ITFlow - New Recurring Ticket - Client: Subject".

  • Client portal: primary and technical contacts' Tickets page now opens on everyone's tickets at their company, with Mine to see only their own. The separate All tickets page is gone, and links to it land on Tickets. A ticket shows the client where it stands - Received, In progress, Waiting on you, On hold, Resolved or Closed - rather than your ticket statuses.

  • Client portal: invoices and quotes now open in the portal, where they used to open their guest link in a new tab. The links in your emails work as before. A quote answered in the portal records the contact's name and any note they left. Pay invoices pays the invoices ticked as one card payment, and the Pay drop-down on each invoice is gone (see Client portal).

  • Client portal: only the primary contact can add or change contacts now, and give or turn off their portal access. Technical contacts still see the contacts, but can no longer add or edit them. A primary contact can turn access back on for someone you turned off, and it is logged and notified when they do.

  • Client portal: turning off a contact's portal access, in ITFlow or in the portal, now signs them out at once. They used to stay signed in until their session ran out.

  • Client portal: Certificates is now a tab of Domains & certificates, and links to it land there. A contact who opens a page they can't use is taken home with a message, where they used to be signed out.

  • Client portal: a link to set a password now runs out - an hour for Forgot password, a week for an invite - and works once. Links sent before you update keep working for a day. A link used to work until the nightly run, whenever it was sent.

  • Client portal: a contact's password has to be at least 8 characters when they change it, and changing it - or turning two-step sign-in on or off - asks for their current password and emails them.

  • Sign in: Remember Me on the code step now says how long the browser is remembered (Admin > Settings > Security).

  • Stripe: Refund on a Stripe payment now refunds that payment's amount, where it used to refund the whole card charge. A card payment from the client portal over several invoices is booked as a payment on each, so refund each invoice's part from that invoice. Stripe's fee for such a payment is recorded once, naming every invoice it paid.

  • Invoicing a ticket:

    • The invoice line now reads Ticket TCK-123 - Subject - 10/14/2026. It used to be a block of text with the agent, dates, contact, asset and time spent. You can still edit it before adding the line.
    • Billing a ticket goes in the ticket's history ("Billed on invoice INV-45"). It used to add an internal note to the conversation.
    • An invoice made from a ticket is due on the client's terms, the same as New Invoice. A client set to On Receipt is due on receipt, where it used to get the default terms.
    • Add Tickets on an invoice now adds a line for each ticket's time. To only put the tickets on the invoice, as before, switch off Bill their time.
    • A ticket's time is counted the same way everywhere: Unbilled Time, the Invoice window, Add Tickets and the Unbilled Work report. A ticket counts once it is resolved or closed, and archived tickets and archived replies are left out.
  • Calendars: only admins can add, edit or delete calendars now. Agents can still add and edit events.

  • Roles:

    • The money on invoices goes by Financial, with Sales at Read to see the invoices: write access to Financial to take a payment (one, a saved card or a batch) or change one, and full access to delete or refund one. These used to need Sales as well - write access to take a payment, full access to Sales and Financial to change or delete one. Emailing a payment reminder, a statement or a receipt works with write access to Financial and Sales at Read, as well as with write access to Sales, as before. Nothing a role could do before is taken away. Editing, sending, cancelling and deleting an invoice stay with Sales.
    • A client's calendar events follow the role's Clients access: Read to see them, write access to add, change, move, skip or send them, and full access to delete them - or write access, for the agent who added it. Agents still see the events they are on, and an event with no client is anyone's, as before. So an agent whose role has no Clients access no longer sees other agents' client events, on the calendar or through their calendar link, and deleting someone else's client event now takes full access to Clients.
  • Licenses: archiving a license keeps its seats (the devices and users on it), so restoring it brings everything back. In 26.10, archiving took the seats off.

  • Vendors: deleting a vendor that has expenses, recurring expenses or payment provider fees archives it instead, so your books keep it. Deleting any vendor now also clears it from the assets, licenses, tickets and domains that named it.

  • Locations: a client's primary location cannot be archived or deleted. Make another location primary first. Bulk archive skips primary locations.

  • Users: passwords must be at least 8 characters, and an email address can only belong to one account, agent or client portal. Existing accounts keep working. The rules apply when an account is added or changed.

  • Users: New User no longer emails a password. It invites by default - they are emailed a link to join and choose their own password, so nobody else ever knows it (see New Features, Agent invites). Set a password now still sets one, for you to give them, and nothing is emailed: the Email them their sign in details switch and the email with the password in it are gone. Get started > Your team invites them too when email is set up, and still shows the password it makes once when it isn't. A script that posts add_user with a password and no sign_in still sets that password; send_email is ignored.

  • Agent user limit: an invite waiting counts toward it until it is accepted, cancelled or runs out, so there is a seat for them when they accept. With every seat taken, cancel an invite to free one.

  • Users: Incident Response now resets agent passwords only, where it used to reset client portal logins too. It also forgets every agent's remembered browsers, so MFA is asked for again. The new passwords are shown once on a plain page, ready to read out or copy.

  • Your account: changing your email or password, or turning MFA off, now asks for your current password. Your old address gets a notice when the email changes, and you get an email when your password changes or MFA is turned off.

  • Agent user limit, for hosting providers: an optional $config_agent_user_limit in config.php caps the number of active agent users. It is not set by default, so nothing changes unless you add it. Disabled and archived agents do not count toward it.

  • API:

    • Tickets: a closed ticket cannot be updated. Creating a ticket for a client that does not exist is refused. A contact, asset or vendor belonging to another client is left off rather than saved, and the assignee has to be an active agent.
    • Tickets: the vendor's ticket number is now text, so case numbers with letters keep them. Send it as ticket_vendor_ticket_number; the old ticket_vendor_ticket_id still works. Resolving a ticket that is already resolved does nothing.
    • Certificates: creating one follows the same rules as the New Certificate window. A name or a host is enough. The domain has to be one of the client's, and the host is checked as it is saved.
    • Domains: an update no longer wipes the expiry date and DNS records when the lookup comes back empty. A domain name the client already has is refused.
    • Deleting an asset, contact, client or location through the API now also cleans up whatever pointed at it, the same as deleting it in ITFlow.
    • New endpoint to read services, under the Support permission. Vendors take the account manager's phone and email.
    • A call the key's role doesn't allow is refused with what it needs and what the key's user has - "This needs Modify on Support - the key's user, Tess Tech (Technician), has Read." - in place of "The user linked to this API key does not have permission for this action." It is still a 403. Anything that matches on the old text needs changing.
  • Audit log for agents: each client now has an Audit Log, and record pages show their history, to anyone who can open them - not only admins. An agent sees the kinds of entry their role covers - a technician without Financial sees no expenses or trips, someone without Credentials no passwords looked at - and never sign-ins, users, settings or another agent turned away from a client, which stay in Admin > Audit Logs. The client overview's Recent activity follows the same rule, so it can show a restricted role less than before.

  • Sign-ins:

    • A failed sign in is now logged against the account it was to - a wrong password, or an account that is disabled, archived or not set up yet - where it used to name no one. So it shows in that person's Your account > Activity and in the sign-ins Admin > Users shows for them, even when someone else was guessing at it.
    • A client portal contact's wrong two-step code now counts toward turning an IP address away (15 failed sign-ins in 10 minutes), as an agent's always did.
    • Admins are now told about a run of failed sign-ins - 10 in 10 minutes from one IP address or against one account - with a notification and an email each. Change or turn it off in Admin > Settings > Security.
    • A call to the API with a key that has expired now says which key, and is logged against it. Anything that reads the logs table for "Incorrect or expired key" needs the new wording.
    • The auth_logs table is removed. Nothing was ever written to it.
  • Logs: log retention moved from Admin > Settings > Security to Admin > Settings > Logs, where the audit log (with API key use) and the app logs each keep their own number of days. A retention of 0 now keeps a log forever - it used to delete everything older than today each night.

  • Audit log: each thing done now has one name, in the entries already there as well as new ones. Unarchive and Restored are Restore, Deleted is Delete, and Closed, Resolved, Reopened, Merged and Sent are Close, Resolve, Reopen, Merge and Send. An agent turned away from a client they can't open is Denied, where it was Access. A saved card or payment provider deleted is Delete and a card saved is Create, where both were Update, and a contract template changed is Edit. A report or script that reads the logs table by the old names needs the new ones.

  • AI:

    • Using AI is a permission of its own, Use AI, in Admin > Roles. Every role has it after the update; a role without it gets no Reword button, no ticket summary and no document template draft.
    • The Reword button is only on the editors when a model is set up for it and the role may use AI. It used to be on every editor, and say an error when pressed.
    • A model's prompt is now its instructions - your house style, sent after what each feature asks of the model. Reword says what rewording is itself now, so a prompt written to make Reword work still works but can be cut down to the style you want.
    • Passwords, PINs, API keys, private keys, 2FA links and card numbers in what is sent are replaced with placeholders, and put back in the answer. A provider can be set to send them as they are, in its Edit window.
    • A provider's address is its chat completions address, as before - one ending /v1 now has /chat/completions put on when saved.
    • Summarize with AI reads the ticket's internal notes, tasks and assets now, as well as the conversation, and is laid out differently.

New Features & Updates

  • Everywhere
    • Search: press Ctrl+K (Cmd+K on a Mac) or click the search box in the top bar. Results show as you type, grouped by type: clients, tickets, contacts, assets, credentials, documents, files, licenses, domains, certificates, networks, IP addresses and more.
      • A ticket, invoice or quote number comes up first, so Enter opens it straight away. Phone numbers, IP addresses and MAC addresses all match.
      • Use the arrow keys and Enter, or Ctrl+Enter to open in a new tab. With nothing typed, it lists the clients you opened last.
      • Search everything opens the full results page, which also searches ticket conversations and the text of documents.
    • Notifications: the bell opens a panel with Unread and All tabs, grouped by day. Clicking one opens what it is about and marks it read. Each one can be marked read or unread, and Mark all as read clears the lot. The count updates every minute. The full Notifications page has search, type and date filters.
    • Quick looks: most records now have a quick look, a window with the essentials that opens from the lists and from anywhere else the record is mentioned, without leaving the page you are on. Each one has a button to open the full page.
    • Record pages: licenses, locations, vendors, racks and services have their own page now. Assets, contacts, documents, projects and networks have rebuilt pages. All of them share one layout:
      • actions along the top
      • the key details in cards
      • related records in tabs with counts, and most pages remember the last tab you used
    • Change it where you see it: ticket status, priority, assignee and billable, a project's manager, a recurring ticket's agent, an asset's status, location and contact, and a contact's location. Click the value, pick a new one, and it saves.
    • Tags look the same on every list and record page. The + at the end adds or removes tags as you tick them, on one record or on everything you have selected. Admins can make a new tag right there.
    • Copy buttons show up when you point at a value, such as an IP, MAC, serial, email, phone, username or password, so lists are less cluttered.
    • Linking: one Link window handles every kind of link: files, documents, assets, contacts, licenses, vendors, credentials, services, domains and certificates. It has a tab for each type, lets you pick several at once, and only offers the client's own records that are not linked yet.
    • Drop-downs show pictures, initials, colors and icons where they help: client, agent and contact avatars, tag and category colors, priority dots and asset types. On a phone the list comes up from the bottom of the screen.
    • Forms have an icon in front of every field, the same across the app. Long forms are split into tabs, and most of them take you to a required field you left empty on another tab when you save.
    • Buttons that only show an icon say what they do when you point at them.
    • Empty lists look the same on every list page. With nothing added yet, a list says so, with a line on what goes in it and its own New buttons - and Import, where the list has it. When a search or filters leave nothing, it says nothing matches, with Clear filters to go back to the whole list, keeping the client and the tab you are on. An empty tab that flags trouble, such as Overdue or Expiring soon, shows a tick, as nothing there is good news. Archived says when nothing is archived.
    • Links that delete or disable something ask first.
    • Leaving a page with a half-written reply or note asks first, including after a window has been opened and closed on that page.
    • The side navigation shows your company logo (Admin > Settings > Company Details) or the company's initials, with the company name wrapping onto two lines.
    • The editor's outline follows your theme color when you click into it, like every other field.
  • Dashboard (rebuilt)
    • Needs attention along the top:

      • tickets past their SLA, unassigned tickets and overdue projects
      • overdue and draft invoices, resolved tickets not invoiced yet, stock to reorder, lines on recurring invoices, drafts and quotes at an old price, and hardware sold in the last 90 days that isn't on the client's assets yet
      • domains, certificates, licenses and warranties expiring in the next 30 days
      • services needing attention and service reviews due

      Each one opens a list of exactly those.

    • Your day: your open tickets, your schedule for the week, your time this week, open tickets per agent (admins), and tickets opened against resolved.

    • Finance: pick a period (this month, last 30 days, this quarter, year to date, or any year). It shows:

      • income, expenses and profit compared with the period before
      • receivables, and recurring revenue and expenses per month
      • a cash flow chart that looks ahead using unpaid invoices, recurring invoices and recurring expenses
      • receivables aging, top clients, account balances, the latest income and expenses, and trips
  • Reports (rebuilt)
    • Every report works the same way:
      • pick a period (this or last month, this or last quarter, this or last year, the last 30 days, 90 days or 12 months, a past year, or your own dates), and narrow it to one client or one agent where that makes sense
      • read the headline figures, compared with the period before, then the chart and the tables
      • click a column heading to sort, and click a figure to open the tickets, invoices, income or expenses behind it
      • Export downloads any table as a CSV with every row, and is recorded in the audit log. Print gives a clean page with your company name and the date.
    • The Reports page lists every report you can open, grouped into Finance, Sales & Billing, Service Desk, and Clients & Documentation, with a search box. The menu on the left uses the same groups.
    • New reports:
      • Client Review: one client's quarter on a page, made to print for a business review (QBR). It covers their tickets and how fast they were handled, SLA and ratings, what the tickets were about, who raised them and which devices keep coming back, urgent tickets, projects, hardware to plan for, renewals, services needing a look, documentation gaps and billing. It opens with recommendations to talk through, and is also in the client's menu.
      • Renewals & Expirations: domains, certificates, licenses and warranties due in the next 30 days to 12 months, or lapsed in the last 90 days, by month and by client. Ones that renew themselves show in blue and can be hidden.
      • Asset Lifecycle: how old the hardware is, its warranty, and whether its operating system is still supported (Windows 10, Windows Server 2012 and older, macOS 13 and older and so on are flagged). It shows what reaches replacement age each quarter for the next two years, for budgeting, and lists the replacement candidates.
      • Documentation Coverage: for each client, whether the basics are documented: primary and billing contacts, a primary location, assets with a location and an owner, networks, credentials, documents, domains, services and licenses. Each client gets a score, and what is missing links to the page to add it.
      • Customer Satisfaction: the share of closed tickets rated good, how many get rated, by agent and by client, how ratings follow a late first reply or a slow fix, and every bad rating to follow up.
      • Open Ticket Aging: the open tickets right now by how long they have been open, per agent and per client, with whose move it is, their SLA and when anything last happened.
      • Client Profitability: income, direct costs and time per client, what you earn per hour against your target rate, and recurring revenue.
      • Quotes Pipeline: quotes won, lost and open, the win rate by count and by value, and open quotes about to expire.
      • Canned Responses: how often each canned response goes into a reply, on how many tickets and by how many agents, against the period before, and when it was last used - every current one, so the ones not used show - and by agent, how often each reaches for one, how many different ones and how many of their own. An admin sees every agent's own; anyone else sees the shared ones and their own.
      • Ticket Templates: how often each template is used and how - by agents, from the client portal's request forms, by recurring tickets and by project templates - with what is resolved and still open, how long its tickets take and the time spent on them, and the templates not used in the period.
      • Mileage: trips by agent and by client, valued at your rate per mile.
      • Budget vs Actual: set a monthly budget for each expense category right on the report, or copy last year's, and see spending against it by month and category.
      • Inventory: what is on the shelf and what it is worth at cost, what came in, and the cost of what was sold and written off, by month. Every tracked product with its stock, value and reorder level, and every stock move in the period.
    • Reworked reports:
      • Profit & Loss: monthly or quarterly, with last year and the change beside each line, and the margin.
      • Income and Expenses: by category across the year, with last year drawn as a dashed line.
      • Spend by Vendor and Income by Client: the period against the one before, with a switch for those paid 600 or more for 1099s. Spend by Vendor adds each vendor's main category and recurring spend. Income by Client adds recurring revenue and the share of your top five clients.
      • Receivables Aging: what each client owes, split into not due yet, 1 to 30, 31 to 60, 61 to 90 and over 90 days late, and the overdue invoices, longest overdue first.
      • Recurring Revenue: monthly and yearly recurring revenue by client and category, and every recurring invoice with its next date. With Financial access, what is left after recurring expenses.
      • Tax Collected: tax by part of each rate, as invoiced or as paid, with taxable, exempt and non-taxable sales, the tax paid on purchases and what is left, by quarter or by month (see Taxes).
      • Unbilled Work: billable tickets that are done but not invoiced, with the hours to bill (rounded the way Billing Time in Admin > Settings > Invoice says, as Unbilled Time does) and what they are worth at the client's rate.
      • Time Detail by Client: per client, each ticket and the time on every reply, with the hours to bill.
      • Ticket Overview: tickets opened against resolved, the typical first reply and time to resolve, sources, priorities, categories, top clients and contacts, and a weekday by hour chart of when tickets come in.
      • Tickets by Client: volume and its change, urgent tickets, time logged, reply and resolution times, SLA and satisfaction for each client.
      • Technician Performance: hours logged and billable, utilization against the working days in the period, replies, tickets worked and resolved, SLA and satisfaction for each agent.
      • SLA Performance and SLA by Client: targets met over time, by priority, by agent and by client, and the tickets past their SLA right now.
      • Credential Rotation: how old every password is, the clients with the most due, which ones have 2FA, and every password due for a change.
  • Clients
    • The clients list has compact rows, filter chips you can remove one at a time, open ticket and balance columns, and tags under the industry with a + to add one. Clicking anywhere in the client's cell opens it.
    • The client side menu shows the client's initials and name under an All clients link. Click it to switch to another client and stay on the same page.
    • The header on every client page shows the initials, industry, tags, primary location, open tickets and balance due, with a panel that opens for more.
    • The client overview is redesigned in two parts:
      • Technical: needs attention (such as licenses over seats, passwords due for a change, certificate problems and services needing attention), open tickets, quick notes that save when you click away, key contacts, favorites, the next 14 days, projects, services, renewals, assets, active share links and recent activity.
      • Financial: unpaid invoices, recurring invoices, and invoiced against paid.
    • Export Data, in the client's menu, is rebuilt with two choices:
      • Documentation PDF: a printable runbook to hand over or keep on file. It has a cover, contents with page numbers, and an overview with the key contacts, service levels and how to reach you. Then comes a chapter for each part you pick: contacts, locations, networks with their IP addresses, assets by type, racks, licenses with their keys and who holds them, domains and DNS, certificates, services with what they run on and depend on, vendors, credentials, files, and every document in full with its images.
      • Full export: one zip with everything held for the client, for a handover, an offboarding or your own records. Every record comes as a CSV spreadsheet and as JSON for moving to another system. Documents come as web pages in their folders, files in their folders under their own names, and ticket conversations with their attachments, alongside projects, invoices, quotes and payments, photos and the PDF. A README.html links it all together.
    • Each part shows how many records it holds. Archived records and internal ticket notes go in only if you tick them.
    • Passwords and 2FA secrets go in only if you ask, and the PDF or zip is then locked with a password you set (AES-256). An encrypted zip opens with 7-Zip, WinRAR, Keka or The Unarchiver, but not with the zip tools built into Windows and macOS.
    • Each export is recorded in the client's audit log, including whether passwords went out.
  • Shared links (rebuilt)
    • One Share window for logins, documents and files, from their lists, quick looks and pages, plus two new kinds of link:
      • Secure note: type a password, a Wi-Fi key or a recovery code and send it as a link. It is not saved anywhere else.
      • Ask for a login: the client gets a form to send you a login safely instead of by email. You get a notification and an email when it arrives. It then waits in Shared Links until you save it to their credentials or discard it.
    • Choose:
      • how long the link works, from 1 hour to 30 days
      • how many times it opens: once, 2, 3, 5 or 10 times, or until it expires
      • what it asks for first: nothing, a passphrase you give them by phone or text (one is made up for you), or a 6-digit code emailed to the recipient, so a forwarded link is no use to anyone else. Five wrong tries lock the link.
    • The link can be emailed to a contact, copied, or shown as a QR code. It is shown once, and nobody can look it up again later.
    • For a login, you can include the 2FA code: they see the current code, never the secret. What they get is fixed when you make the link.
    • The page they open shows your logo and who sent it, then a Reveal button. It has copy buttons, the 2FA code with a countdown, and a button to destroy the link once they have what they need. Documents can be printed, and files download.
    • Shared Links, in each client's menu and under All Client Docs, lists every link:
      • what went out, to whom, who made it, until when, how often it was opened, and where it is now
      • filters for Open, Sent back and Ended
      • turn off one link, the ticked ones, or every open link the client has, when an engineer leaves or a mailbox is compromised
    • Each link's quick look has its history: when it was opened, from which address and browser, wrong passphrases, codes sent, and when it was turned off.
    • You are notified when a link you made is opened (you can switch this off per link), and always when one locks.
    • The key is the part of the link after the #, which browsers never send to the server, so it stays out of web server and proxy logs. Logins, notes and what clients send back are encrypted with that key, which is not stored, so the database alone cannot open them.
    • Admin > Settings > Security sets the longest a link may last, up to 90 days, and whether shared passwords and secure notes must have a passphrase or a code.
  • Billing (rebuilt)
    • Invoices, quotes and recurring invoices have new lists and pages, and every billing window is redone.
    • Lists:
      • Invoices: what you are owed, what of that is overdue, what is sitting in drafts and what came in over the last 30 days, each opening the invoices behind it. Filter by Draft, Unpaid, Overdue, Paid or Cancelled, by category, client and date. Each row shows what is still owed and how long until it is due, or how many days late it is.
      • Quotes: what is out waiting for an answer, what has been accepted and not invoiced yet, what you won over the last 90 days and your win rate. Filter by Draft, Awaiting answer, Expired, Accepted, Invoiced or Declined. Each row shows how long a quote has left.
      • Recurring invoices: your monthly recurring revenue (quarterly ones count as a third, yearly ones as a twelfth), what bills in the next 30 days, how many are running, and any that need a look. Filter by Active, Next 7 days, Late, Paused or All. Each row shows the amount, what it brings in a month, when it next bills, whether it is on autopay, and whether it bills per user or per device.
    • Pages: the invoice, quote or recurring invoice is shown the way the client sees it, with the next thing to do at the top:
      • Invoice: Send (or Mark Sent) a draft, Add Payment on one that is owed, with Charge Saved Card when the client has a card on file. On the side: what has been paid and what is left with a progress bar, the payments (edit, refund through Stripe or delete them there), the tickets billed on it, and its history as a timeline.
      • Quote: Send, then Accepted or Declined when the client answers by phone or email, then Make Invoice (Start Billing when it has recurring lines). A quote that ran out without an answer says so, with an Extend button. On the side: the files the client sent back, and its history.
      • Recurring invoice: Invoice Now, Pause and Resume. On the side: the schedule with the next few dates, the period the next invoice covers and whether invoices go out by themselves, autopay, the invoices it has made and whether they were paid, and its history. A run missed in the last 7 days is billed by the next nightly run. One further behind says so, and offers Invoice Now for each missed run or moving on to the next date without billing them.
    • Lines are edited on the page:
      • Type a product's name or code to fill in its description, price and tax. What the line comes to shows as you type, and Enter adds it. The page comes back ready for the next line.
      • Drag a line to move it. Edit or remove it from its menu. An invoice's lines are locked once it is paid, cancelled or non-billable, and a quote's once it is answered.
      • Taxes show by name on the totals, such as PA Sales Tax 6%, instead of one Tax line.
    • Windows: New and Edit have the same fields for all three, with the discount on both. A new invoice shows its due date from the client's terms, and a quote's valid-until date has 15, 30, 60 and 90 day shortcuts.
      • Add Payment starts at what is owed, says what is left after the payment as you type, and shows each account's balance. Batch Payment lists the invoices it will pay, oldest first.
      • Send, Copy, Make Recurring, Make Invoice, Mark Sent and Add Tickets (any number at once) say what they will do before you do it.
    • PDFs: one new look for invoices, quotes and packing slips, with your logo, taxes by name and page numbers. An invoice still owed carries a QR code to open it online and pay, and a quote waiting for an answer one to accept it. Paid, cancelled, accepted and declined ones are stamped.
    • The client's view of an invoice: what is owed and by when, with Pay Now, the PDF, the payments made, and everything else they owe with a link to each.
    • The client's view of a quote: Accept and Decline, with how long it is good for. Once accepted, they can send back a signed copy or a purchase order.
    • A new recurring invoice can be set to leave a draft to check, and take a discount, from the start.
    • Per user, per device and per license billing on recurring invoices:
      • A line can take its quantity from the client. That can be their contacts (all, or those with a tag), their devices (the types you tick, or those with a tag) or a license's seats (in use or bought). Lost, stolen and retired devices are left out.
      • The count is taken again each time an invoice is made, so a new hire or a new laptop is on the next invoice without anyone editing it. A line can have a minimum for contracts that set one.
      • On the add-a-line row, Counted switches a line to Per user or Per device. Edit Line has every option, and shows the count as you choose.
      • Each such line is marked on the page. A Seats card shows what each one bills against what the client has now, with Update now when they differ.
    • Quarterly recurring invoices, alongside monthly and yearly. They count as a third in monthly recurring revenue on the dashboard, the client pages, the client portal and the reports.
    • Period words: {month}, {quarter}, {year} and {period} in a recurring invoice's scope, notes or lines are filled in with the period each invoice covers, such as "Managed services November 2026", "Q4 2026" or "Nov 1 - Nov 30, 2026".
    • Invoice Now names the run it bills, whether it will be emailed and when the next one is, before you confirm. Pressing it twice, or in two tabs, bills that run only once.
    • Unbilled Time, under Billing and in each client's menu, with a count of what is waiting:
      • Every client with billable tickets that are done and not invoiced, with their tickets, the time logged, the hours to bill, their rate, what it comes to and how long the oldest has waited. Tick clients and make all their invoices at once - a new draft each, or onto each one's newest draft.
      • One client's tickets, each with its hours to bill filled in and ready to change before it goes on. Tick the ones to bill and make an invoice or add them to one of the client's drafts, with a line for each ticket or one for all of them. The total follows as you change the hours, rate or tax.
      • Not billable writes off ticked tickets so they leave the list. Each one's history says so.
      • Two agents billing the same tickets at once can't both bill them.
      • Expenses to bill on to clients sit beside the time and go on the same invoice - see Expenses, Billing expenses on.
    • Billing Time in Admin > Settings > Invoice: round a ticket's time to 6, 12, 15 or 30 minutes or the hour, to the nearest step or always up, with a minimum a ticket bills, and the name of the invoice line. It starts as before: the nearest 15 minutes, no minimum.
    • The ticket's Invoice window is redone. It shows the time logged by each agent and the hours that bills, with the client's rate (or the default rate) filled in, and it can add to one of the client's drafts. An open ticket can still be billed from here, with a warning that later time won't be.
    • Add Tickets on an invoice bills their time: tick the tickets, change their hours, and they go on as lines at the rate.
    • The client overview's Not yet invoiced shows what the unbilled time comes to and opens Unbilled Time. The dashboard and the Unbilled Work report link to it too.
    • Quotes with monthly lines, so one quote can carry the onboarding and the agreement that follows:
      • Each line is billed one time, or each month, quarter or year. Pick it under Billed on the add-a-line row, or in Edit Line.
      • The quote groups its lines under One-time, Each month, Each quarter and Each year, with a total for each, on the page, the PDF and the client's view. The top shows what it comes to up front and each month, quarter or year. A line drags within its own group.
      • Start Billing on an accepted quote: the one-time lines go on a draft invoice, dated as you choose and due on the client's terms. Each month, quarter or year part goes on a new recurring invoice from the date you pick (the first of next month to start), with its invoices emailed as they are made or left as drafts, or is added to one of the client's recurring invoices billed as often. Switch on Bill the first month on the invoice now to put the first period on the invoice too. A quote with only one-time lines keeps Make Invoice.
      • The quote shows what it was invoiced as, with a link to each invoice and recurring invoice, including any it added lines to. The invoice and the recurring invoices link back to the quote, and each history says what happened.
      • The quotes list adds the monthly part to each row and to its totals. Search, the client portal's quotes, the Send and Copy windows, the quote email and the client's Accept all show the amounts by part. The quotes export has a Monthly column, and the client export a monthly amount on quotes and how each quote line is billed.
    • Reminders and statements, in Admin > Settings > Invoice under Reminders and Statements:
      • Set when reminders go: any days before the due date, on the due date, any days late, then every so many days until the invoice is paid. The schedule is shown in words as you type, such as "3 days before it is due, on the due date, 7 and 14 days late, then every 30 days until it is paid".
      • A reminder before the due date is a friendly one. Once the invoice is late it is firmer, and says how many days late it is.
      • A client can be left out of reminders and monthly statements with the switch on the Billing tab of its Edit window.
      • The invoice page's payment card shows how many reminders have gone and when the last one went, and when the next one goes, or why none will. Send Reminder in the More menu sends one now.
      • Monthly statements: switch them on and pick the day of the month (the 1st to the 28th). Each client with a balance gets one, unless left out of reminders.
      • The nightly run sends at most one reminder a day for each invoice and one statement a day for each client, however often it runs. The invoice's history says who each reminder went to and how late the invoice was.
    • Statements: Send Statement attaches the statement as a PDF. It shows what is owed by age (current, 1-30, 31-60, 61-90 and over 90 days) and every invoice in the period with what was paid and what is left. Download PDF in the window follows the dates and options you pick, and Statement PDF is in the invoice list's menu when it is showing one client.
    • Send windows: the invoice, quote and statement windows take a message of your own, which goes in the email above the document, and a switch to attach the PDF. On an invoice that is still owed, the invoice window can send the invoice or a reminder.
    • Billing emails have a new look: your logo, what is owed and by when in a summary, the message if there is one, and a button to view and pay the invoice or accept the quote. This covers invoices, quotes, reminders, payment receipts and statements, and the notices to your team when a quote is accepted or declined or a payment is made online.
      • Receipts show the amount, method, reference and what is still to pay. A batch payment's receipt lists each invoice it was applied to.
      • Each email's entry in the history says who it went to and whether the PDF went with it.
  • Products (rebuilt)
    • Each product or service records what it costs you, so its margin shows, along with the vendor you buy it from, their part number and notes for agents only.
    • How it is billed by default: one time, monthly, quarterly or yearly, and per user or per device. Picking it on a quote fills in Billed. On a recurring invoice, per user or per device takes the quantity from the client's count.
    • Track stock, for products: a tracked product comes off the shelf as it is invoiced and can't be sold past what is there. The rest are ordered as needed, such as drop-shipped hardware.
    • The list:
      • The top shows what catalog lines bring in each month on recurring invoices, what was sold over the last 90 days with the top seller, and what the stock on the shelf is worth at cost.
      • Tabs for Services, Products, Recurring, Stocked and To reorder, a vendor filter, and search by part number and vendor too.
      • Each row shows how it is billed, the stock and where it is kept, the vendor and part number, and the price with its cost and margin.
    • Each product has a page:
      • Its price and margin, what it sold over 12 months, and what it brings in a month on recurring invoices.
      • Its stock, where it is kept and what that is worth, and a Stock tab with every move and what was on the shelf after it.
      • Where it is used: the recurring invoices it is on, open quotes, the invoices it was sold on, and its history.
      • Notes save as you click away. Copy makes a new one to start from.
    • New and Edit are one window, with Service or Product at the top and the margin worked out as you type the price and cost.
    • Stock, for products that track it:
      • Every change is recorded as Received, Sold, Returned, Counted or Written off, with the unit cost, the invoice or expense behind it, a note and who made it.
      • One Stock window to Receive (at a unit cost, which can become the product's cost, linked to an expense from the last year, the vendor's first), Count (type what is on the shelf and the difference is recorded) or Write off (damaged, lost or stolen, used by us, or sent back to the vendor). It shows what will be on the shelf as you type.
      • Reorder at and Order on each product. Products at or under their level show on the To reorder tab, with a badge on the list, on Products in the menu and in Needs attention on the dashboard. A Low Stock notification goes out when stock drops to the level or runs out, saying how many to order and from whom.
      • Count Stock lists every tracked product, or one location's, with what ITFlow has and a box for what you counted. The difference shows as you type, Enter moves to the next box, and blank ones are left alone. Print it as a count sheet to take to the shelf.
    • Hardware becomes client assets:
      • Give a product the asset it becomes - a laptop, a switch, an access point and so on - with its make, model and warranty in months.
      • An invoice with hardware on it has a Hardware card: each line, how many of it are on the client's assets, and which ones with their serial numbers.
      • Add to Assets has a row for each one still to add, named from the model, for its serial number and who has it. Enter after a serial, or a barcode scan, moves to the next one. The make, model and warranty (counted from the invoice date) come from the product and can be changed, and the status and location are set for all of them. A row can be linked to an asset the client already has instead, or taken out and left for later.
      • Each asset made this way is bought on the invoice date with the invoice number as its order reference, and its page links to the invoice and the product.
      • The product's page shows the asset it becomes and how many are in use, with an Assets tab listing each one with its client, serial number, warranty and invoice.
      • Products has a Hardware tab, and each row says the asset it becomes.
      • The packing slip lists the serial numbers under each line.
      • The starter catalog's hardware comes with its asset type and warranty, and so does the demo data's.
    • Price changes reach recurring invoices:
      • Every change to a product's price or cost is kept, with who made it and whether it was edited, imported or came from received stock, on a Prices tab on its page. Pricing says when its price last changed and from what.
      • Lines on recurring invoices, draft invoices and draft quotes still at one of its old prices are flagged on the product's page, the Products page, each of those documents and Needs attention on the dashboard, with what updating them adds a month.
      • Update Prices lists them by product - all of them from the Products menu, or one product's, one client's or one document's. Lines at an old price are picked, ready for today's price. A price the product never had looks agreed with the client, so it is marked Own price and left alone unless picked, with the last change applied to it as the suggestion. Each new price can be changed, Catalog price or the same percent fills in a product's lines at once, and the footer says what recurring invoices bring in a month after. Invoices already sent, and quotes out with clients, keep their prices.
      • Each line changed goes in its document's history, and the document's tax and total follow.
      • Saving a new price, or importing a price list, says how many lines are at an old price.
    • Import takes every field, including Reorder At, Order, Asset Type, Make, Model and Warranty. Categories, taxes and vendors are matched by name. A new price list can update products by their code, and a file with only Code and Price will do. Download the template for the layout.
    • Export adds cost, margin, how it is billed, vendor, part number, stock and its value, the reorder level, and the asset it becomes with its make, model and warranty. It can export just what is to reorder, or just hardware.
    • Invoices, quotes and recurring invoices show agents their margin on lines from products with a cost, at today's cost. A quote shows it up front and each month.
    • Our vendors' pages have a Products tab listing what we buy from them.
    • Search finds products by part number and opens their page.
    • The starter catalog in Starter Content comes with how each item is billed. The demo data's products have costs, vendors and part numbers.
  • Expenses (rebuilt)
    • Along the top of the list: what was spent this month against the same days of last month, the year so far with its monthly average, what the running recurring expenses come to a month, and how many expenses in the last 90 days have no receipt. Each one opens the expenses behind it.
    • Pills cut the list to expenses for a client, ones with no receipt, and refunds, each with a count. Filter by vendor, category, client and date, and under More filters by account and how it was paid. The total of everything the filters leave sits under the list.
    • Each row shows the vendor with what it was for and its reference, the category with its colour, the client, the account and how it was paid, and a paperclip that opens the receipt.
    • Clicking an expense opens its quick look:
      • the receipt right in the window when it is a photo or a PDF
      • who it was paid to, the category, account, payment method, reference and client
      • who entered it and when
      • the refunds against it
      • the stock deliveries it paid for
    • With no receipt yet, attach one right there - on a phone, take the picture.
    • New Expense, Edit, Copy and Refund are one form with an icon on every field. Picking a vendor fills in the category, account and payment method of the last expense with them, unless you changed those yourself.
    • The payment method is saved on each expense, starting from the default in Admin > Settings > Defaults.
    • Copy dates the copy today and leaves off the reference and receipt.
    • Refund starts at what hasn't come back yet and is linked to the expense, so each shows the other.
    • A receipt can be replaced or removed in Edit.
    • Bulk actions set the category, account, payment method or client on the ticked expenses, or delete them. Expenses of clients you can't see are left alone.
    • Export takes the same filters as the list, adding client, payment method and the pills, with Paid By, Receipt and Entered By columns.
    • Search finds expenses by what they were for, their reference or their amount, and opens the quick look.
    • The vendor page's Expenses tab, Transactions and a product's stock history open the expense's quick look. Client Profitability links each client's direct costs to their expenses.
    • Recurring expenses run on a real schedule:
      • monthly, quarterly or yearly, on the day of the month they started on - the 31st runs on the last day of a shorter month
      • with an optional end date for a lease or financing, after which they stop by themselves
    • The New and Edit windows say the schedule in words as you set it, such as "Every quarter on the 31st, starting Dec 31, 2026, until Dec 31, 2028", and fill in from the vendor's last expense like New Expense does.
    • The list shows what they come to a month (quarterly as a third, yearly as a twelfth), what is recorded over the next 30 days, how many are running, and how many need a look. Pills for Active, Next 7 days, Late, Paused, Ended and All, and filters for vendor, category and client.
    • Each row shows the amount and how often, what it comes to a month, the next date with how long until it or how late it is, when it ends, and when it was last recorded.
    • A quick look shows the schedule with the next few dates, the account and payment method, the client, what has been recorded this year, and the expenses it recorded.
    • Record Now records the next run straight away - dated today when early, or the day it was due when late - and moves the schedule on. Pressing it twice records it once.
    • A recurring expense that fell behind can record each missed run with Record Now, or skip them with Move On. Pause and Resume stop and start it.
    • The expenses it records carry its payment method and reference, and are linked to it. They show a ↻ in the expenses list and their quick look names it. Expenses Recorded lists them, and the export takes that filter too.
    • The nightly run tells the team about each expense it records, opening it.
    • The dashboard's recurring expenses, its cash flow forecast and the Expenses, Recurring Revenue and Spend by Vendor reports count quarterly ones and stop at end dates. The vendor page's Recurring tab opens the quick look.
    • The demo data's standing costs are recurring expenses on their own days, with the insurance quarterly, linked to the history they recorded.
    • Billing expenses on to clients - pass-through costs such as hardware, licenses or a courier:
      • Mark an expense for a client billable in New Expense or Edit, with a markup. The window shows what it will bill as you type. The default markup is set in Admin > Settings > Invoice, under Billable Expenses.
      • It waits in Unbilled Time beside the time. One client's page lists their expenses to bill with the cost, markup, the price to change and the margin, and Make Invoice puts the ticked tickets and expenses on one new draft, or one of their drafts. Not billable takes the ticked ones off the list. The all-clients page has an Expenses column, includes clients with only expenses waiting, and bills each client's time and expenses together.
      • Each goes on the invoice as a line of its own, named from the first line of its description, with the vendor, date and reference under it. A refund against it comes off the price first.
      • The invoice has an Expenses card: each expense's cost against what it billed, the margin, and the totals. Add opens Add Expenses with the client's waiting expenses and their prices. Taking one off removes its line, and so does deleting the line or the invoice - the expense is then to bill again. Once the invoice is paid it stays. A cancelled invoice keeps its line, and the expense can still be taken off to bill on a new one.
      • The expense's quick look says it is to bill, at what price and markup, or which invoice it is billed on with the margin, with Take off Invoice. The list has To bill and Billed pills, a mark on each row linking to Unbilled Time or the invoice, and Bulk Set Billable. A billed expense can't be moved to another client until it is taken off.
      • A client's recurring expense can be billed on each time it records one, with a markup, or be covered by one of the client's recurring invoices. A covered one isn't billed by itself: the recurring invoice's new Costs card lists what it covers, what it bills a month before tax against what they cost a month, and the margin left, with Add to set up another one it covers. The recurring expenses list and quick look show which it is.
      • Expenses to bill show on the dashboard and the client overview's attention list, and the client overview's Not yet invoiced includes them. The export has Billing and Billed On columns.
      • The demo data's latest client expenses are to bill, at 15%.
    • Import Statement, from the expenses menu, brings a card or bank statement in as expenses:
      • Upload the CSV your bank or card exports, and pick the account it is for and how it was paid. Lines before the header, semicolons or tabs, and amounts like (12.00), 12.00 CR or 1.234,56 are read as they come.
      • The columns are worked out for you: the date and its format, the description and a memo, the amount (charges positive or negative) or separate money out and money in columns, and a reference such as the check number. You check them once against the statement - the next statement from the same account goes straight to the review.
      • The review lists every line with the vendor, category and client it matched: what you picked for that merchant last time, or one of your vendors whose name is in it (cut short too, such as THREE RIVERS COLO for Three Rivers Colocation), with the vendor's last category. A line with no match offers a new vendor named from its text - "SQ *JOES COFFEE #123 PITTSBURGH PA" is Joes Coffee.
      • Picking a vendor fills in the other lines from the same merchant. Set a category or client for all the ticked lines at once. A line for a client can be billed on to them.
      • Lines brought in before are locked, so importing the same statement twice brings nothing in twice - two coffees on one day are still two. A line with the same amount as an expense entered by hand on that account within 4 days is left out unless ticked, and is linked to that expense so the next statement knows it too.
      • Payments to the card, deposits and refunds are left out unless ticked - then they come in as money back. Bring them in as income takes the same statement on to Import Deposits (see Income).
      • Whether charges are positive or negative is worked out from the words on the lines (DEPOSIT, ACH CREDIT, TRANSFER FROM, INTEREST against PURCHASE, WITHDRAWAL, ACH DEBIT) when they say, so a statement with mostly deposits reads the right way round.
      • Import brings in the ticked lines, making each new vendor once, and opens the expenses list on that account and those dates. The merchants are remembered for next time - see or forget them from the Import Statement page.
    • Paid personally: an expense an agent paid for themselves - a hotel, parts from the store - is picked as Paid personally, with who paid it. It counts as spent on its date like any other, but comes out of none of your accounts until they are paid back.
      • The list has a To reimburse pill. On it, each agent shows with what they are owed and a Reimburse button. Rows show who paid and whether they have been paid back.
      • Reimburse pays an agent back for the ticked expenses from one account, on a date, with how and a reference. The account's balance goes down then, and the payment shows in Transactions as a Reimbursement. Spending totals and reports count the expenses once, on their own dates.
      • The expense's quick look says who paid it, To reimburse with a Reimburse button, or when it was paid back. The reimbursement opens with what it paid back, and Undo (full Financial access) takes the payment back off the account.
      • Bulk Reimburse pays back the ticked expenses of one agent. Bulk Set Account puts a paid personally expense on an account instead, unless it was paid back already.
      • Expenses to reimburse show on the dashboard. The export has a Paid Personally column, and the list can be cut to one agent's.
  • Tickets
    • The ticket list has views for Open, Mine, Unassigned, Needs reply, Waiting, Overdue, Scheduled, Closed and All.
      • Each row shows whose move it is (yours or the client's) along with SLA and due badges, and status, priority and agent change right in the row.
      • The SLA column can be sorted, the filters fold away, and the list has a proper phone layout.
    • The board view is redesigned and works in dark mode. Dragging a ticket to resolved or back follows the same rules as the ticket page.
    • The ticket page has a Details panel where you click a property to change it, with billing moved into the menu. New cards show:
      • Site: the location's address, phone, hours, access notes and directions
      • Vendor: their case number, support line, hours, SLA, account number and PIN, with copy buttons
      • Also open: the client's other open tickets
    • Mentions in internal notes - see Mentions in internal notes.
    • Replying: pick Internal note, Public note or Email reply. Nothing is picked for you, and a line says exactly who will see it. An internal note is for your team only. A public note shows in the portal but sends no email. An email reply goes to the contact and any watchers.
    • The conversation says which of your replies were emailed. An email reply is marked Email reply, with who it went to: click that to see each person and whether their email was sent, is waiting, or failed and why, with a link to the Mail Queue for admins. A public note is marked Public note. Replies from before the update that the mail queue no longer has stay marked Public.
      • Sending a reply says how many people it was emailed to, or that it wasn't and why - no contact or watcher with an email address, or no mail set up.
      • Editing an emailed reply says who has it, and that they keep the email as it was sent.
    • New Ticket can start from an asset or contact, and shows when they already have open tickets.
    • Recurring tickets can be paused and resumed or raised now. Their schedules are written out in plain words with a preview of the next run, and bulk actions are available.
    • The ticket lists on asset, contact, location, vendor and project pages look and work like the main list.
    • Client portal: a ticket waiting on the client says Waiting on you (see Client portal).
    • The ticket link in your ticket emails, which opens without signing in, is rebuilt to match the client portal's ticket page: your logo, where the ticket stands, the conversation oldest first with the files that came with each message, who is working on it and on which device, and your phone, email and website. It also shows:
      • when you will reply, while the SLA's response time is still ahead
      • work booked on the ticket, onsite with the site's address or remote, with Add to calendar
      • tasks waiting for the client's approval, and who was emailed the link to approve them
      • Reply by email, with the ticket number in the subject so the reply lands on the ticket (when ITFlow reads the ticket mailbox), Reply in the client portal, and Call for an Urgent or High ticket
    • Replies still come by email or from the portal, where you know who wrote them, since the link also goes to watchers. Internal notes and their files never show.
    • Close, reopen and the rating are now buttons that send a form, so something that follows the links on a page can't close or reopen a ticket. Reopening tells your agents in Notifications, and a ticket is rated once, Good or Not good.
  • Projects
    • The projects list has views for Active, Mine, Overdue, Due soon, Stalled, Over budget, Ready to close, Completed, Archived and All.
      • Each row shows ticket and task progress bars, time logged against the budget with unbilled hours, and due badges, and the manager can be changed in place.
      • Bulk actions can set the manager or due date, complete, reopen, archive, restore and delete. Export is to CSV or PDF.
    • The project page shows warnings when something needs a look, and stat cards for tickets, tasks, time and due date. Tickets, Tasks and Activity are on tabs, alongside the scope, the details and the team with their hours.
    • Projects now have a start date, budget hours and a client contact.
      • A template can assign its tickets to the manager. You can also add a template's tickets to an existing project.
      • Their tickets are set up as their ticket templates say, with [Client], [Project], [Month] and the like filled in (see Ticket templates).
    • You can add tickets by picking them or by number, and completed projects can be reopened.
    • Project templates in Admin keep their ticket templates in order, and can be duplicated, archived and restored.
    • Projects show on the ticket page, the client overview, the dashboard, the calendar and in search.
  • Ticket templates (rebuilt)
    • A template sets up the whole ticket, not just its subject, details and tasks: its category, priority, billing, the agent it goes to, when it is due (so many hours or days after it is raised) and its tags. Each is left alone unless the template sets it.
    • Picking one on New Ticket fills in every field it sets, so you see the ticket before it is made and can change anything. The picker says what each template sets up and how many tasks it has.
    • The New Tickets windows on the assets and clients lists now offer templates too, as recurring tickets do - and the clients list can raise each ticket for the client's primary contact.
    • [Client], [Contact], [Asset], [Site], [Agent], [Project], [Ticket], [Date], [Month], [Quarter] and [Year] are filled in when the ticket is raised - in its subject, details and tasks.
    • Fill-ins: anything else in square brackets, like [Employee Name] or [Start Date], is asked for when a ticket is raised from the template - on New Ticket, in the New Tickets windows (once, for all of them) and on recurring tickets (once, for every ticket they raise). The answer goes in wherever its [Name] is.
    • On the template's page each fill-in can be made a date, a choice from a list or yes or no, made required, given a line of help, renamed (it is renamed in the text and tasks too) and dragged into the order it is asked in. You can add one that isn't in the text, to keep the answer on the ticket.
    • The answers stay on the ticket, in a Fill-ins card. One left blank stays in the text, and can be answered on the ticket later - it then goes in where it is still waiting, and each change goes in the ticket's history. Tickets raised by a project template are answered this way.
    • A template's task can be for one answer only: "Order a laptop" when Needs a laptop is Yes, "Assign Business Premium" when Licence is Business Premium. On New Ticket the tasks for other answers drop out as you answer. A task whose answer isn't given is kept.
    • Request forms in the client portal: a template can be offered there, under a title, a line about it and an icon of its own - "Onboard a new employee" - to everyone with portal access or the primary and technical contacts only, at every client or the ones you pick. The client answers its fill-ins (a fill-in can be kept for agents to answer instead), adds anything else and any files, and the ticket is raised set up as the template says: category, priority, billing, the agent it goes to (who is told), due time, tags and the tasks for those answers. With [Asset] in the template, the form asks which device. The template's page shows how it appears, who and where it is offered and how many requests it has brought in, and the list marks the ones in the portal. A copy of one starts off not offered.
    • Export and import: Admin > Ticket Templates exports every current template, the ones picked, or one from its page, as a file to import into another ITFlow or keep. Each goes with its tasks, fill-ins, request form, category and tags - not the agent it goes to or the clients its request form is for. Importing matches categories and tags by name and makes the ones missing, and one already here by name is left as it is, added as well under a name of its own, or replaced - keeping its tickets, its agent and its request form's switch and clients. A request form comes in turned off.
    • The MSP starter templates in Starter Content are rebuilt on all of this: each asks what it needs (New Hire Onboarding asks the start date, job title, manager, whose access to copy and whether they need a computer or a phone extension), is set up with its category, priority, tags and due time, adds the tasks for the answers given, and the ones clients raise come with a request form - Onboard a new employee, Someone is leaving, Ask for a new computer and Report a suspicious email. Two new ones, Software Request and Access Change Request, have request forms too. An install that added the starter templates before can bring them up to date with Update - their tickets, agent and request form switch stay.
    • A ticket keeps which template it came from, and its history says so. Admin > Ticket Templates shows what each sets up, its tasks and their time, how many tickets it has raised and when it was last used, and the recurring tickets and project templates that raise it - searched, sorted by name, tasks, use or last use from the column headings, a page at a time, with Active and Archived tabs. A template's page shows the ticket it starts with its placeholders marked, its tasks (added with their time, dragged into order) and its latest tickets, and New ticket from it opens New Ticket with it filled in.
    • Templates can be copied, archived - not offered for new tickets, while the recurring tickets and project templates that use them keep them - restored and deleted.
  • Canned responses
    • Admin > Canned Responses lists what each says, the ticket categories it is offered on, how often it has gone into a reply and when it last did - searched, filtered by where it is offered, sorted by name, use or last use, a page at a time, with Active and Archived tabs.
    • A response can be offered on several ticket categories, or on every ticket.
    • [Contact], [First Name], [Client], [Ticket], [Subject], [Ticket Link], [Asset], [Site], [Project], [Agent], [Date], [Month], [Quarter] and [Year] are filled in from the ticket as a response goes into a reply. [Agent] is you, the agent replying, and [Ticket Link] is a link to the ticket, as its emails have. The response window lists them under the editor to click in where the cursor is. Anything else in square brackets - [Date of visit] - stays as it is, for you to fill in before sending.
    • Responses can be copied, archived - no longer offered on tickets - restored and deleted.
    • Canned response above the reply box opens a list of the ones on offer to search, by name or by what they say, each with a line of it and what it sets up - Enter picks the first one. Or type / in the reply box and keep typing to narrow the list, then Enter or click to put one in.
    • A response can set up the reply too, on its Sets up tab: reply as an internal note, a public note or an email reply, the ticket's status after it, and minutes added to the time worked. They are set as it goes in, a line under the picker says what was set, and you can still change them before sending.
    • Sending a reply a canned response went into with something still in square brackets - [Date of visit] - asks first: Fill them in selects the first one to type over, or Send anyway.
    • Update & Reply on the tickets list offers the responses for the tickets' categories and the ones for every ticket. [First Name], [Ticket], [Ticket Link] and the other placeholders in what you write there are filled in for each ticket as it is sent, and a response picked into it counts as used on each.
    • Admin > Categories counts the canned responses offered on each ticket category, linked to the list of them, and merging categories moves them over.
    • Agents can keep canned responses of their own, in their account under Canned Responses - offered to them alone, first in the picker as Yours. The page lists theirs and the shared ones, with how often they have used each, and their own can be changed, copied, archived and deleted there. A shared one can be copied to theirs, to change as they like.
    • Save your reply as a canned response, at the foot of the picker, opens what you have written with the ticket's contact, first name, client, ticket number, subject, link and your name swapped back for placeholders, offered on the ticket's category, to change before saving. A switch puts it back as you wrote it. It is saved without leaving the ticket: your reply stays as it was, and the new one is in the picker straight away.
    • Admin > Canned Responses has an Agents' own tab, saying whose each is, and Share with everyone moves one to the shared ones. A copy made there is shared. An admin can share one of their own from their account too, or tick Share with everyone when saving a reply.
    • Files can go with a canned response - a how-to, a form to fill in - up to ten, on its Files tab, of the kinds a ticket takes. Picking it shows them under the picker, each with an x to leave it off, and the rest are copied onto the ticket with the reply and sent with its email - on a ticket and in Update & Reply. The lists show how many files each has.
    • Export and import: Admin > Canned Responses exports every current shared one, the ones picked (archived ones too, if you like), or one from its menu, as a file to import into another ITFlow or keep. Each goes with what it says, the ticket categories it is offered on and what it sets up, and its files unless you leave them out. Importing brings them in shared, matches the categories by name and makes the ones missing, matches the status after the reply by name, and for one already here by name leaves yours, adds the file's as well under a name of its own, or replaces yours with it - keeping how often yours has been used. What comes in is made safe, and a file of a kind a ticket doesn't take is left out and said.
    • Starter Content has a Canned Responses pack for an MSP: received, waiting on you, following up, resolved, closing with no reply, a remote session, an onsite visit, escalated to the vendor, an internal handover, billable work, password reset, multi-factor sign-in set up again, account unlocked, licence assigned, phishing reported (phishing or safe), a possible security incident, a new starter ready, a leaver done, warranty repair, printer fixed, file restored, a monitoring alert cleared, internet down with the provider, voicemail PIN reset, a quote sent and an invoice question. Each is filled in from the ticket, sets the reply up (who sees it, the status after it, time worked), and the ones for one kind of ticket are offered on its category. Update brings the ones you added before up to the current version.
    • The New Canned Response button's menu has Import, Export, the report and the starter ones.
  • Document templates (rebuilt)
    • Admin > Document Templates lists what each is for, how many documents have been made from it and for how many clients, when it was last used and when it last changed, and by whom - searched by name, summary or what it says, sorted from the column headings, a page at a time, with Active and Archived tabs.
    • A template's page shows what it says, with its words in square brackets marked - filled in from the client, a table of records, or asked for - who made it and last changed it, its images, and the latest documents made from it with their client. New document for a client, from there or the list, makes one for the client you pick and opens it.
    • Filled in from the client: [Client], [Website], [Site], [Address], [Site Phone], [Contact], [First Name], [Contact Email], [Contact Phone], [Agent], [Date], [Month], [Quarter] and [Year] in a template's name, summary and what it says are filled in when a document is made from it. The site and contact are the client's primary ones, unless you pick another - or none, to leave them to fill in - when you make it. One with nothing to put in (a client with no website) stays as it is.
    • Tables of records: [Contacts], [Locations], [Assets], [Servers], [Workstations], [Network Equipment], [Printers], [Networks], [Domains], [Certificates], [Licenses], [Vendors] and [Services] put in the client's records as they are when the document is made. On a line of its own, it becomes a table - [Networks] gives each network's VLAN, network, gateway, DHCP range and site, [Servers] each server's operating system, IP address and site, [Domains] each domain's registrar and expiry - with an empty row to fill in when the client has none. In a sentence, it becomes their names. The template's page lists the ones it uses and what each holds, and the template window has a button for each placeholder and table to put it in.
    • Fill-ins: any other word in square brackets in a template's name, summary or what it says - [Firewall Model], [Review Date] - is asked for when a document is made, and the answer goes in wherever it is. On the template's page each fill-in can be made a date, a choice from a list or yes or no, made required, given a line of help, renamed (it is renamed in the template too) and dragged into the order it is asked in. One left blank stays for whoever writes the document.
    • New document for a client and Document from template show what the template fills in from the client, the site and contact to use, and its fill-ins, as soon as the template and client are picked. A copied template keeps its fill-ins.
    • Who should have one: a template can be required of every client, or of the clients with a client tag you pick (Managed, say) - leads and archived clients don't count. Its page shows how many of them have a document from it, with a bar, and lists the ones missing one, each with a Make button. Admin > Document Templates shows how many have one on each, and a Required tab lists them.
    • Several clients at once: New documents for several clients, from the template's page or the list, makes one for each client picked - or for every client missing one - each filled in from its own client with its primary site and contact, the fill-ins answered once for all of them. Clients that already have one are skipped unless you say otherwise.
    • A client's Files lists the documents it should have across the top, each a click from making it, and its overview counts them under Documents missing. Document from template lists them first.
    • Reviews: a template can say its documents are reviewed every 3 or 6 months, every year or every 2 years. A document is due once it hasn't been edited or marked as reviewed for that long. It says so on its page - Review due, or when the next review is and who last reviewed it - with Mark reviewed. Files marks the ones due and has a Review due tab listing them from every folder, the client's overview counts them, and the template's page and the list show how many are due. An archived template's documents aren't counted.
    • A document can be linked to the template it counts as made from, from its page - one written before the template, say - so it counts towards who has one and is reviewed as the template says. What it says stays as it is.
    • Export and import: Admin > Document Templates exports every current template, the ones picked, or one from its page, as a file to import into another ITFlow or keep. Each goes with its summary, what it says and its images, its fill-ins and how often its documents are reviewed - not who should have one, which is each install's own call. Importing, one already here by name is left as it is, added as well under a name of its own, or replaced - keeping its documents and who should have one. A new one comes in required of no one.
    • The starter document templates on Maintenance > Starter Content are rebuilt - fourteen of them, with Asset Inventory and Vendors and Escalation new - filled in from the client, with its sites, networks, equipment, servers, domains, licenses, vendors and contacts as tables, asking for the rest (a circuit type from a list, a start date, a required hostname), and the ones that go stale reviewed every 6 or 12 months. Who should have each is left to you. Update brings the ones added from an earlier version up to this one.
    • A Document Templates report (Reports > Clients & Documentation): for each template, the documents made from it in the period against the period before, its current documents and the clients with one, how many of the clients it is required of have one, and its documents due a review; and by client, the templates each should have a document from, the ones missing and the documents due. For one client, or the documents one agent made, and exported by template or by client.
    • Templates can be copied (with their images), archived - not offered for new documents, while the documents made from them stay - restored and deleted. A document made from one remembers it, and its page says which template it came from.
    • The template window has its icons, a summary, and Draft it with AI when an AI model is set up for documentation. A draft uses the placeholders and tables of records, and puts what else is to be filled in in square brackets.
    • Document from template in a client's Files shows each template's summary and how often it has been used. A document made with no name or summary given takes the template's.
  • License templates (rebuilt)
    • Admin > License Templates lists what each is, its type and license type, how many licenses have been made from it and for how many clients with their seats in use against bought, when it was last used and when it last changed, and by whom - searched by name, version, summary, type or notes, sorted from the column headings, a page at a time, with Active and Archived tabs.
    • A template's page shows what a license made from it starts with - name, version, type, license type and notes - the licenses made from it with their client, seats and renewal, how many are renewing in the next 30 days or past their renewal date, and who made it and last changed it.
    • New license for a client, from the page or the list, makes one for the client you pick with its seats, key, purchase and renewal dates and order reference, and takes you to the client's Licenses.
    • Templates can be copied, archived - not offered on New License, while the licenses made from them stay - restored and deleted.
    • The template window has its icons, a summary and room for the notes every license from it should carry.
    • A license started from a template on New License remembers it, and its quick look says which template it came from.
    • A template can carry the seats a license starts with, how often it renews, its vendor - picked from the vendor templates - and the product in Products & Services it is sold as. The page and the list show them, and the list finds a template by its vendor or product.
    • A license made from one starts with its seats, and its renewal date is worked out from when it was bought - a year on for a yearly one, or from today when there is no purchase date. Its vendor is the client's own one made from the vendor template, or one of that name; a client without it has it added from the vendor template, by anyone who can add vendors.
    • On New License, picking a template fills in its seats, vendor and renewal date as well, and the renewal date follows the purchase date until you type one in. A vendor you picked yourself stays.
    • Renew starts on the template's term for licenses made from it.
    • New licenses for several clients at once, from the template's page or the list: pick the clients, skip the ones that already have one, and give the seats, dates and order reference once.
    • A license's quick look shows the product it is sold as, with its price, to anyone who can see Sales.
    • Who should have it, on the template's page: every client, or the clients with certain client tags (leads and archived clients don't count). The page shows how many of them have it and which are missing it, each with Make, and Make for the clients missing one picks them all. The list counts it on each required template and has a Required tab.
    • A client's Licenses shows the licenses it should have and hasn't, each starting New License from its template, and its overview counts them

Don't miss a new itflow release

NewReleases is sending notifications on new releases.