-
Notifications
You must be signed in to change notification settings - Fork 15
Changing Ticket Number Format
You've been running FreeITSM for a few months. Every ticket so far looks like CKQ-418-73926, and you've decided you'd rather they looked like INC-2026-00042.
The question everybody asks at this point is the right one:
Is it actually OK to have old tickets on one scheme and new tickets on another?
Yes. It is not only OK, it is almost always the better choice. This page explains why, and when the alternative is worth it.
| Just change the format | Old tickets keep their references. New tickets get the new shape. Nothing breaks, nothing to plan, no risk. Start here. |
| Change the format and renumber | Everything looks consistent immediately. Costs you the numbers people have already written down. Worth it in one specific situation β see below. |
The instinct that a mixed estate is untidy is a real one, and worth taking seriously β so here is exactly what does and doesn't depend on the shape of a reference.
A reference is looked up, never recognised. When a reply arrives, the subject carries [SDREF:CKQ-418-73926], and FreeITSM takes whatever sits inside that tag and asks the database which ticket it belongs to. It has no opinion about how many letters or digits it should have.
That means an install can carry references from every format it has ever used, all working identically, indefinitely. Search finds them, βK finds them, email replies thread onto them, the REST API returns them.
This is the practical point. A ticket raised four months ago is almost certainly closed. Nobody is going to quote its number down the phone again. The references that get read out, written on forms and pasted into emails are this week's β and those are the ones that will have the new shape from the moment you save.
Give it a fortnight and the awkward-looking old references have dropped off the bottom of everyone's view.
There is genuine value in being able to tell, at a glance, that CKQ-418-73926 is from before the change. When somebody digs up an old thread, its reference tells you roughly when it's from β which a renumbered estate throws away.
Nothing to existing tickets. Truly nothing: no rows are touched, no history is written, no counter moves. The setting affects the next number issued and nothing else.
The one thing to get right before you save is the starting number, since that's awkward to change later without renumbering:
-
Starting from 1 is the natural choice, and means your first sequential ticket is
INC-2026-00001. - Starting from a round number above your ticket count β say 5000 when you have 900 tickets β is worth considering if you'd like sequential numbers never to look like a count of how much work you've done.
Either way the digit width is a floor and not a limit, so there's nothing to run out of.
There is one situation where it clearly earns its risk:
You have just migrated to FreeITSM. The tickets you imported carry references from your old system, or FreeITSM's random ones, they are a few weeks old at most, and nobody outside the IT team has ever quoted one. You want the whole estate to look like it was always numbered your way.
That's the case the tool was built for. It's a migration step, done once, early, before anyone gets attached to a number.
Signals that it's the wrong choice:
- Customers have your ticket numbers. In their inboxes, in their own spreadsheets, in emails to their managers. Those references still work after a renumber β but they no longer match what they see in FreeITSM, and "your ticket is TICKET-000042" against a customer saying "I have CKQ-418-73926" is a conversation you have to have every time.
- Your ticket numbers are quoted outside FreeITSM. Change records, knowledge articles, a supplier's system, a contract, an invoice, a status page. FreeITSM keeps its own references working; it can't update anybody else's copy.
- You're doing it because the mixture looks untidy. That's not a good enough reason to rewrite every reference in the system, and in a fortnight you won't notice.
Every old reference goes on working, for ever. Each number a ticket has ever had is kept, and keeps resolving to that ticket. A customer replying to a two-year-old email quoting the old number still lands on the right ticket. This is the same mechanism that already makes merging tickets safe.
A retired number is never given to somebody else. It stays permanently spoken for. Handing it on would mean an old email thread silently arriving on a different ticket, which is worse than not matching at all β so the tool refuses outright rather than allow it.
Order and dates are preserved. Tickets are renumbered oldest first, so the numbers mean something afterwards. A ticket raised in 2024 renumbered under INC-{YYYY}-{#####} comes out as INC-2024-β¦, not stamped with this year.
All or nothing. One operation. A half-renumbered estate would have two schemes in it and a counter matching neither, so it either does the lot or does nothing.
That anything outside FreeITSM is updated. A number in a customer's spreadsheet, a supplier's ticketing system or a printed report is not ours to change.
That you can undo it. There is no reverse button. The old numbers are remembered so they keep working, not so they can be put back.
That reports and saved searches read the same. Anything keyed on the text of a reference β a saved filter matching CKQ-%, a spreadsheet formula splitting on hyphens β needs revisiting.
- Decide the format and try it in the preview at the top of the numbering screen, before saving anything. The live preview costs nothing and moves no counter.
- Pick the starting number. Coming from another system, this is where you carry on from where it left off.
- Save. The renumbering tool reads the saved settings, not what's currently on screen.
- Take a database backup. It cannot be undone, and this is the only thing that would let you change your mind.
- Preview the renumber. It runs the entire job and writes nothing, then shows what would change, what already matches, the first and last few conversions, and what the next new ticket would be numbered.
- Read the first and last few conversions properly. This is the moment to notice a format that isn't doing what you thought.
- Renumber. The button only turns on once a preview has run.
- Tell your customers, if any of them hold ticket numbers. Their old references still work, so this is a courtesy rather than a scramble β but the first person to quote an old number will be confused if nobody warned them.
Switching Count separately for after you're up and running deserves the same thought.
Going from one shared sequence to per-type or per-company counting starts each new sequence at your configured starting number, which will collide with numbers already issued unless the format distinguishes them β which is why {TYPE} and {COMPANY} are required for those scopes. Existing tickets are untouched, and new tickets simply climb over any collisions rather than failing, but the first few numbers on each new sequence may skip.
If you want each type or company genuinely counting from 1, that's a renumber, and the same considerations on this page apply.
- Ticket numbering β every setting, in detail
- Ticket numbering β Developer Guide β what happens underneath
- Merging tickets β the same "old reference keeps resolving" mechanism
FreeITSM β an open-source IT Service Management platform Β· github.com/edmozley/freeitsm Β· MIT licence
- Installation
- β° Scheduled tasks (cron jobs)
- Architecture
- AI Providers
- Internationalisation (i18n)
- Timezones & Time Handling
- Theming & Dark Mode
- β¨οΈ Command palette (βK)
- π Searching inside tickets
- π Attached documents
- MobileβFriendly
-
Security
- Layer 1 β which modules you can enter
- β³ π§© Module Access Control
- β³ π οΈ Module Access β Developer Guide
- Layer 2 β what you can administer
- β³ π Roles & Permissions
- β³ π οΈ Roles β Developer Guide
- β³ π€ Why capabilities are constants
- Layer 3 β the System module
- β³ π Admin Access Control
- Hardening
- β³ π Security review response 2026-08
- β³ π‘οΈ Security hardening 2026-08
- β³ π οΈ Security hardening 2026-08 β Developer Guide
- β³ π‘οΈ Round three β plain English
- β³ π οΈ Round three β Developer Guide
- Single Sign-On (SSO)
- ποΈ LDAP & Active Directory
- Browser Extension
- API Reference
-
π REST API β how it works
- β³ π« REST API: Tickets
- β³ π» REST API: Assets
- β³ π΄ REST API: Problems
- β³ π REST API: Changes
- β³ π REST API: Knowledge
- β³ β REST API: Tasks
- β³ ποΈ REST API: CMDB
- β³ π REST API: Contracts
- β³ ποΈ REST API: Calendar
- β³ πΏ REST API: Software
- β³ π¦ REST API: Service Status
- β³ βοΈ REST API: Morning Checks
- β³ π REST API: Forms
- β³ βοΈ REST API: Workflow
- β³ πΊοΈ REST API: Network Mapper
- β³ π§ Using the API docs page
- β³ π OpenAPI specification
- β³ β OpenAPI: kept correct
- β³ π οΈ Maintaining the catalogue
- Watchtower
-
Tickets
- β³ Mailbox Authentication
- β³ π€ Email send log
- β³ Basic IMAP mailboxes
- β³ Email rendering & images
- β³ SLA Management
- β³ WhatsApp channel
- β³ π¬ Web chat channel
- β³ π£ Slack channel
- β³ π Linking tickets
- β³ ποΈ Canned responses
- β³ βοΈ Limiting replies to particular senders
- β³ βοΈ Email signatures
- β³ π The public web address
- β³ π’ Ticket numbering
- β³ π Raising a ticket for someone else
- β³ π Merging tickets
- β³ β Splitting tickets
- β³ β Selecting several tickets
- β³ π οΈ Snoozing tickets β Developer Guide
- β³ π₯ Collision detection
- β³ β±οΈ Time tracking
- Problem Management
- Tasks
- Assets
- Knowledge
- Change Management
- Calendar
- Morning Checks
- Reporting
- Software
- Forms
- Contracts
- Service Status
- π Notifications
- π¨ War Room
- Self-Service Portal
- LMS
- Process Mapper
- CMDB
- Network Mapper
- Workflows
- Issue trackers (Jira, Azure DevOps)
- System
-
Overview
- β³ π Progress tracker
- β³ Concepts & vocabulary
- β³ Email routing & mailboxes
- β³ Settings: global vs per-company
- β³ Users & self-service
- β³ Staff cross-company access
- β³ Worked examples
- β³ Pitfalls & gotchas
- β³ Scope: what it's for
- β³ π οΈ Developer Guide (make a module multi-company)
- β³ ποΈ Case study: CMDB (a linked graph)
- β³ π§ͺ Test harness (prove it's isolated)