Releases: itflow-org/itflow
v25.12 Release
[25.12] Stable Release
Breaking Changes
- For Existing installs: php-xml extension needs to be installed for document creation and editing, new install script does this for you as of Dec 6th 2025. To install php-xml:
sudo apt install php-xml
Major Changes
- Consolidated "Files" and "Documents" into a single section called Files.
Bug Fixes
- Resolved issue with updating asset notes in asset details.
- Fixed problem with bulk ticket merging.
- Corrected issue where decimal inputs (e.g., price, cost) weren’t displaying on iPhones in certain forms.
- Added CSV escaping to the sample export data in areas where a sample CSV template is provided.
- Fix a race condition where dupe tickets, invoices, recurring invoices, recurring tickets, quotes will be created using the same number if created in parallel espcecially when using the API.
New Features & Updates
- Introduced automatic subject-based ticket merging/reply detection. Now, if an email comes from a known contact or domain and the subject matches 95% of a ticket opened in the last 7 days, it will be merged automatically.
- Added
cleanInputfunction to sanitize data before inserting it into the database when using MySQLi prepared statements. - Migrated client post functionality to use MySQLi prepared statements.
- Updated payment method post functionality to use MySQLi prepared statements.
- Implemented
saveBase64Images()to convert base64-encoded<img>tags into actual image files stored under/uploads/<module>/<id>/with secure filenames. Added wrapper functions, and updated document creation to use processed image paths. - For new documents and document templates, images are now stored in
/uploads/documents/$document_idinstead of being stored as base64 in the database, using thesaveBase64Images()function. - UI/UX improvements made to the document details page.
- Removed sidebar quick-add options.
- Created new folders in the uploads directory:
documents,document_templates, andrecurring_tickets. - Reworked the bulk action function to pass the name arrays, instead of a generic
selected_idsarray. This allows multiple bulk name arrays to be passed at once, currently used for the new file-document merge. - Big task: Converted the remaining modals to use the new
ajax-modalsystem, enabling more flexible flow expansion going forward. - Mail queue: Added a
--no-mx-validationflag to bypass recipient domain MX validation. - Bump PHPMailer from 7.0.0 to 7.0.1.
- Bump stripe-php from 18.1.0 to 19.0.0.
- Bump TCPDF from 6.10.0 to 6.10.1.
- Bump TinyMCE from 8.2.0 to 8.2.2.
v25.11 Release
[25.11] Changelog
Deprecation Notice:
-
Outdated CRON Scripts: The following scripts are removed.
/scripts/cron_mail_queue.php/scripts/cron_ticket_email_parser.php/scripts/cron.php/scripts/cron_domain_refresher.php/scripts/cron_certificate_refresher.php
Action Required: Transition to the new versions:
/cron/mail_queue.php/cron/ticket_email_parser.php/cron/cron.php/cron/domain_refresher.php/cron/certificate_refresher.php
-
PHP Extensions php-imap and php-mime-mail-parser are no longer required.
Fixes
- Ticket Listing: Resolved issue where the “Check All” checkbox was visible even when ticket status wasn’t set. Now hidden for closed tickets only.
- Timer Auto-Start: Show H/M/S placeholders when timer auto-start is disabled.
- Ticket Guest URL: Fixed email not including the ticket guest URL key.
- EML Generation: Resolved issue with EML not being generated in the new ticket parser.
- New Ticket Mail Notification: Included message when notifying the tech of a reply in the new ticket mail parser.
- Advanced Filter Collapse: Added clause to prevent collapse of advanced filters when the “from” date is set to the default (1970-01-01).
- Recurring Invoice: Fixed issue where email was marked as sent but not actually sent when forcing a recurring invoice to an invoice.
- CSRF Token: Fixed issue with deleting recurring ticket from asset details page due to missing CSRF check token.
- Vendor Website Link: Fixed missing
https://prefix in the vendor website link on the vendor details modal. - Agent Select Box: Resolved issue where agents sometimes didn’t appear in the agent select boxes.
- TinyMCE: Fixed TinyMCE editor issue on Bulk Create Ticket in Assets.
- Ticket Timer: Fixed ticket timer initialization after reload and when the tab is put to sleep (background tab).
- Client Deletion: Fixed issue with client deletion.
- Domain Records: Added flag for missing SOA record when adding a domain (prevents subdomain creation).
- Domain Fetching: Quits domain record fetching if no SOA record exists (prevents subdomains).
- Domain Expiry: Only show time to expiry when there’s an expiry date set; otherwise, display a dash.
- Certificates: Improved handling of empty date in the agent UI.
- Certificates API: Fixed bug with missing JS to fetch certificate details.
- API Updates:
- Clients API: Added support for archiving/un-archiving clients, updating client data, and abbreviation support.
- Contacts API: Added archiving/un-archiving and restriction to only allow one primary contact per client.
- Mail Queue: Added recipient domain MX validation before sending emails.
Added / Changed
- Backup / Restore: Improved backup and restore by streaming data to disk (to prevent memory issues), setting unlimited timeouts, checking for bad backup contents, and using PHP for DB import instead of shell exec. Added
.htaccessto prevent PHP execution in/uploads/directory. - Ajax Modals: Migrated all Add and Bulk modals to the new Ajax Modal for improved performance.
- Recurring Ticket Sorting: Default sorting of recurring tickets by
RunDateinstead of subject. - Recurring Ticket Enhancements:
- Added Billable column.
- Added bulk actions for setting priority, agent, billable status, and next run dates.
- Added filters for category, assigned agent, and billable status.
- Added new frequency options: 3-day and biweekly.
- Asset Select: Updated asset select dropdown to separate asset types using opt groups (planned for wider use).
- Expiring Domains & Certificates: Added "30 Day" warning for expiring domains and certificates in the dashboard.
- Ticket Search: Allowed search using both ticket prefix and number.
- Recurring Invoice: Cancel recurring invoices when the associated client is archived.
- Credentials Import/Export: Now includes TOTP secrets when importing/exporting credentials.
- Asset Notes Import: Allowed importing of asset notes.
- Ticket View: Added a "View HTML Code" button in all ticket views for TinyMCE.
- Date Range Picker: Updated all date filters to use the improved DateRangePicker JS.
- Bulk Ticket Creation: Added bulk ticket creation for clients.
- Sidebar Updates: Updated all sidebars to use absolute paths for easier integration with custom code.
- Document Actions: Added Archive and Delete buttons to the Document Details view with improved redirect behavior.
- Ticket Template Sorting: Allowed sorting by task count in ticket templates.
- Contact Modal UI: Updated contact details modal to display contact information at the top.
- API & Code Updates:
- Separated out post files for recurring tickets, invoices, expenses, and payments.
- Removed unused budget code.
- Invoice Product Autocomplete: Now allows searching for product codes as well as names.
- Client Duplicate Check: Flags duplicate clients or leads when using the client add modal.
- Recurring Invoice Reference: Added a column to invoices indicating if they were created from a recurring invoice.
- Global Search Enhancements:
- Allowed ticket details to be searchable in global search.
- Allowed searching for quotes in global search.
- UI/UX Improvements:
- Spruced up the ticket details page UI.
- Added contact email validation to flag duplicates or invalid addresses.
- API Debugging: Log API endpoint/URL path for authentication failures to aid in debugging.
- Image Upload Optimization: Removed image optimization from uploads (this will be handled by a cron job in the future).
- View Behavior Change: Updated ticket/invoice/quote views to always be in the Client section, showing client-side navigation and top info bar.
Library Updates:
- DataTable: Bumped from 2.3.3 to 2.3.4.
- TinyMCE: Bumped from 8.0.2 to 8.2.0.
- Stripe-PHP: Bumped from 17.6.0 to 18.1.0.
- PHPMailer: Bumped from 6.10.0 to 7.0.0.
- Chart.js: Bumped from 4.5.0 to 4.5.1.
v25.10 - Stable
[25.10]
Breaking Changes
- Renamed
/user/directory to/agent/. - Deprecation Notice:
/scripts/cron_mail_queue.phpand/scripts/cron_ticket_email_parser.phpare being phased out. Please transition to/cron/mail_queue.phpand/cron/ticket_email_parser.php. These older scripts will be removed in the November release—update accordingly. New Installs via the script will have this already configured. - Custom is working now. Custom code should be placed in /admin/custom/ , /agent/custom/ , /client/custom/ /guest/custom/
We will provide example code with directory structure for each custom directory a week after this release.
Fixes
- Resolved issue with "Restore from Setup" not functioning correctly.
- Corrected asset name display in logs and flash messages when editing an asset in a ticket.
- Fixed Payment Provider Threshold not being applied.
- Fixed issue where Threshold setting was not saving properly.
- Various minor fixes for Payment Provider issues.
- Removed leads from the client selection list in the "New Ticket" modal.
- Fixed issues with the MFA modal.
- Resolved MFA enforcement bugs.
- Fixed KeepAlive functionality to maintain user sessions longer.
- Fixed multiple broken links caused by the
/user/to/agent/path migration. - Fixed Custom code directories.
Added / Changed
- Removed "ACH" as a payment method; added "Bank Transfer" instead.
- Replaced relative paths with absolute paths for web assets.
- Tickets can now be resolved via the API.
- Added a filter for Archived Users and an option to restore them.
- Introduced a modal when archiving users, allowing reassignment of open and recurring tickets to another agent.
- Improved logic for determining the index/root page.
- Added "Assigned Agent" column for recurring tickets.
- Introduced "Additional Assets" option when editing assets in tickets; modal now uses the updated AJAX method.
- Added Gibraltar to the list of supported countries.
- Added Custom Link Option for the Admin Nav.
- Added Custom Link Option for the Reports Nav.
Other notes
- Major releases will happen on the first week of every Month.
25.09
Changelog
This file documents all notable changes made to ITFlow.
[25.09]
BACK UP before updating.
Breaking Changes and Notes
- We strongly recommend updating from the command line, however if performed via the webui and after performed it will return a 404. thats normal as the directory structure has changed, just close your browser then log back in then go back to update to perform the many database updates.
- This is a major release with significant changes. While the community has done a great job identifying bugs, some may still remain — continued testing is encouraged.
- All AI settings will be reset and must be reconfigured using the new AI provider backend.
- The
xcustomdirectory has been renamed tocustom. All custom libraries and post-processing scripts should now be placed here.
Added / Changed
- Numerous UI improvements and refinements across the application.
- Enhanced visual clarity by thickening the left border on ticket comments to help identify comment types.
- Ticket details UI redesigned to use less space at the top of the screen.
- Introduced tracking for the first response date/time on tickets.
- New reporting feature: Average time to first response on tickets.
- Stripe integration rebuilt using the new payment provider backend.
- Clients can now save and manage multiple payment methods.
- Support for selecting saved cards for recurring invoices in both the client and agent portals.
- Initial database structure and logic added for credit management (feature not yet enabled).
- Major backend directory restructuring.
- Introduced stock/inventory management, including a stock ledger backend.
- Stock quantities now update automatically when invoice items are added or removed.
- Invoice autocomplete now includes: name, description, price, tax, stock levels, and links
product_idtoitem_id. - Added a category filter to invoices.
- Linked stock to related expenses.
- New product fields: location, code, and type.
- Products now separated into two types: Service and Product.
- Dark mode introduced.
- Projects: Now support linking closed tickets.
- Clients: Added bulk actions for tags, referral source, industry, hourly rate, email, archive, and restore.
- Invoices: Bulk action added to assign categories.
- Assets: New
client_urifield, visible in both the agent and client portals. - Client Portal: Clients can now select an asset during ticket creation.
- Client Portal: Company logo now displays in the header.
- Client Portal: Dashboard cards are now clickable for more detail.
- Assets: Option added to include MAC Address in additional columns.
- Asset Interface: Bulk actions added — set DHCP, network type, and delete.
- API:
- Added
/locationendpoint. - Ticket content now supports HTML formatting.
- Added
- New option to filter and display 500 records per page in the footer.
- Payment methods are now treated as a separate entity instead of being grouped under categories.
- Updated libraries:
- TinyMCE
- Chart.js (major upgrade)
- DataTables
- Bootstrap
- FullCalendar
- php-stripe
Fixed
- Several security vulnerabilities patched.
- Ticket status is no longer updated when scheduling.
- Client Portal: Tech contacts can no longer edit their own details.
- Fixed overlapping logo issue in Invoice/Quote PDF exports.
- Refactored
check_login.phpinto multiple files for modular login functionality. - Removed redundant logging comments for redirects.
- Renamed
get_settings.phptoload_global_settings.php. - Simplified syntax for
ajax-modaland updated usage throughout the app. - Fixed issue where primary contact text wasn’t displaying.
- Corrected client Net Terms display.
- Fixed logic for recurring expense next run date.
- Resolved broken IMAP test button.
- Archived clients can no longer log into the portal.
- Searching closed tickets no longer reverts to open tickets.
- Fixed project search filter not showing completed projects.
- Fixed issue where company logo was not being removed correctly.
- Resolved API bugs:
- Default rate and net terms.
- Contact location.
- Document endpoint.
Developer Updates
- Replaced legacy code with newer functions like
redirect(),getFieldById(), andflash_alert(). - Significantly improved performance of queries used for filter selection boxes.
v25.06 June Stable Release
Changelog
This file documents all notable changes made to ITFlow.
[25.06]
Breaking CHANGES
- Old Document Verions will be deleted due to the major backend rewrite how document versions work.
Added / Changed
- Improved function for retrieving remote IP address for logging purposes.
- Ticket categories are now sorted alphabetically.
- Visiting a deleted invoice or recurring invoice now redirects to the listing page; delete option added to invoice details page.
- Added "Mark as Sent" and "Make Payment" actions directly on the invoice listing page.
- Introduced Ticket Category UI for recurring tickets.
- In Project Details, bulk actions and sorting are now available for tickets.
- Updated ticket details UI to use full card stacks with edit icons for stackable items (e.g., asset, watchers, contact).
- Added a new setting to toggle AutoStart Timer in ticket details (disabled by default).
- Applied gray accent theme in the client section to visually distinguish from the global view.
- Introduced Ticket Due Date functionality (currently supports add/edit only; more updates coming next release).
- Added settings option to display Company Tax ID on invoices.
- Client overview now displays badge counts for all entities.
- Overhauled UI for Invoice, Quote, and Recurring Invoice details; switched PDF generation to TCPDF PHP from PDFMake JS.
- Document versioning has been moved to a separate backend table to resolve permanent link issues -- SEE Breaking CHANGES.
- Migrated Document Templates, Vendor Templates, and Software/License Templates to dedicated tables.
- Added functionality to mark all tasks in a ticket as complete or incomplete.
- Asset CSV import now supports a purchase date field.
- Recurring Payments have been restructured to auto-charge on the invoice due date instead of at generation time.
- Added "Base Template" label for vendor templates when available.
- Backup and restore processes now use a temporary directory; files are cleaned up automatically if operations fail.
- Added confirmation prompt when accepting or declining a quote.
- Other minor code UI/UX cleanups and refactoring throughout the app.
Fixed
- Resolved issue with enabling MFA.
- Fixed UI regression where ticket listing columns would misalign.
- Non-billable invoices are no longer included in calculations.
- Addressed multiple minor reported security vulnerabilities.
- Tickets with open tasks are no longer resolved in bulk; a warning is shown along with a count of affected tickets.
v25.05 May Stable Release
Upgrading from version 25.02 or earlier? Use the update script.
https://forum.itflow.org/d/1690-update-to-25032-on-debian
Added / Changed
- Expanded file upload allow-list to include .bat and .stk file types.
- Added full backup/restore functionality. Backup downloads a zip that includes the SQL dump and uploads folder, setup now has option to restore from zip backup.
- Migrated Asset and Contact Links to modals to resolve variable overlap issue.
- Added Pagination to Notification Modal.
- Removed 500 Records Per Page option.
- Removed unused old DB checks in the top nav.
- Clients can now use the portal to setup Stripe automatic payments themselves for recurring invoices
- Automatic payments are now disabled for all recurring invoices if the saved payment method is removed
- Added Card Details and Payment added to Client Stripe.
- UI / UX updates to guest pay Make use of cards.
- Don't show Checkbox columns when ticket is closed, compact ticket list now matches round pills for status and priority.
- Ticket UI/UX update allow the ticket toolbar to be a little more mobile-friendly
- UI / UX Updates to Expenses - Combine Category and Description into 1 column.
- Country information is now displayed in Invoices, Quotes, Recurring Invoices, Clients, Locations, and the client top header.
- Added country-based search filters in Locations and Clients sections.
- Changed the settings name from Integrations to Identity Providers to make room for future iDPs (e.g. Google).
- Bump FullCalendar from 6.1.15 to 6.1.17.
- Bump DataTables from 2.2.2 to 2.3.1.
- Bump TCPDF from 6.8.2 to 6.9.4.
- Bump tinyMCE from 7.7.1 to 7.9.0.
- Bump phpMailer from 6.9.2 to 6.10.0.
- Bump stripe-php from 16.4.0 to 17.2.1.
Fixed
- "None" option for SMTP encryption now functions correctly.
- Debug table row counts now reflect actual counts instead of relying on SHOW TABLE STATUS.
- Archived Categories now display properly.
- Stripe saved payment methods are now limited to credit/debit cards only.
v25.03 March Stable Release
Changelog
This file documents all notable changes made to ITFlow.
[25.03]
Fixed
- Resolved missing attachments in ticket replies processed via the email parser.
- Fixed issue where the top half of portrait image uploads appeared cut off at the bottom.
- Ensured all tables and fields use
CHARACTER SET utf8mb4andCOLLATE utf8mb4_general_cifor updates and new installations. - Converted
service_domainstable to use InnoDB instead of MyISAM. - Fixed the initials function to properly handle UTF-8 characters, preventing contact-related issues.
- Interfaces can now start with
0. - Adjusted AI prompt handling to focus solely on content, avoiding unnecessary additions.
Added / Changed
- Introduced bulk delete functionality for assets.
- Added the ability to redact ticket replies after a ticket is closed.
- Added support for redacting specific text while a ticket is open.
- Switched file upload hashing from SHA256 to MD5 to significantly improve performance.
- Enabled assigning multiple assets to a single ticket.
- Updated all many-to-many tables to support cascading deletes using foreign key associations, improving efficiency, performance, and data integrity.
- Enabled caching for AJAX modals to reduce repeated reloads and enhance browser performance.
- Upgraded DataTables from 2.2.1 to 2.2.2.
- Upgraded TinyMCE from 7.6.1 to 7.7.1, providing a significant performance boost.
- Added “Copy Credentials to Clipboard” button in AJAX asset and contact views.
- Renamed and reorganized several tables.
- Improved theme color organization by grouping primary colors and their related shades.
- Displayed a user icon next to contacts who have user accounts.
- New image uploads are now converted to optimized
.webpformat by default; original files are no longer saved. Existing images remain unchanged. - Added international phone number support throughout the system.
- Introduced user signatures in preferences, which are now appended to all ticket replies.
- Optimized search filters to only display defined tags.
- Added “Projects” to the client-side navigation.
- Enabled “Create New Ticket” from within project details.
- Reintroduced batch payment functionality in client invoices.
- Included client abbreviations in both client and global search options.
- Added assigned software license details (User/Asset) to the client PDF export.
- Replaced client-side
pdfMakewith the PHP-basedTCPDFlibrary for generating client export runbooks. - Introduced the ability to download documents as PDFs.
- Added a “Reference” field to tickets and invoices generated from recurring templates (not yet in active use).
Breaking Changes
Important: To update to this version, you must run the following commands from the command line from the scripts directory:
php update_cli.php php update_cli.php --db_updateRepeat
--db_updateuntil no further updates are found.Back up your system before upgrading.
This version includes numerous backend changes critical for future development.
V25.02.4 - Stable
[25.02.4]
Fixed
- Resolved issue preventing the addition or editing of licenses when no vendor was selected.
- Fixed several undeclared variables in AJAX contact details.
- Corrected the contact ticket count display.
- Addressed an issue where clicking "More Details" in AJAX contact/asset details failed to include the
client_idin the URL. - Fixed an issue with recurring invoices in the client URL: clicking "Inactive" or "Active" would unexpectedly navigate away from the client section.
- Added new php function getFieldById() to return a record using just an id and sanitized as well.
[25.02.3]
Fixed
- Fixed notifications being reversed as dismissed notifications.
[25.02.2]
Fixed
- Corrected some edit modals not showing notes correctly.
- Bugfix: When exporting to CSV, the first asset wasn't being shown.
- Fix broken create / edit credentials.
- Fixed missing Notificatons link.
- Fixed a few dead links.
- Fixed Overdue count also counting Non-Billable Invoices.
- Fix Edit Client Notes.
Added / Changed
- Implemented SSL certificate history tracking.
- Added Inactive / Active Filter to Recurring Invoices.
- Merged Dismissed notifications and notification in one.
- Added Link Button to addd / edit Document WYSIWYG.
- Added Physical location to the asset export / import.
[25.02.1]
Fixed
- Resolved broken links in the client overview, project and client listings, and rack details.
- Corrected asset transfer functionality to clients.
- Fixed the ticket scheduling redirect.
- Corrected the ticket link in the Scheduled Ticket Agent Notification email.
- Addressed issues with credentials and ticket actions in the Contact Detail Modal.
- Fixed text wrapping in notifications.
- Adjusted notifications so that they are sorted with the newest first.
- Fixed drag-and-drop functionality for tickets in the Kanban view on mobile devices.
- Resolved a weird issue with TinyMCE that prevented using links referencing your ITFlow instance url.
- Corrected image orientation issues during upload and the preview optimization process.
Added / Changed
- Introduced entity link indicator icons and counts in the contacts and credentials section.
- Implemented a fade animation for the new AJAX modal.
- Removed the Client Overview Expire Day Select and replaced it with simplified 1, 7, or 45-day options.
- Added the ability to link and unlink entities within asset details.
- Introduced quick tag/category creation across the app.
- Added a Vendor Quick Details Modal.
- Enabled vendor linking and added a License Purchase Reference in the Software Licenses section.
- Added download original, optimized and thumbnail option for images.
- Added Paid status to the top corner of Invoice PDFs.
[25.02]
Fixed
- Migrated several reports to the new permissions/roles system.
- Resolved issue with empty task box showing for closed/resolved tickets.
- Corrected ticket priority sorting.
- Cloned asset interfaces when transferring assets between clients.
Added / Changed
- Restored max number of records per page option back to 500 since we dont have repeating modals.
- Bulk Categorize Tickets feature.
- Renamed "Interface port" to "Interface Description." "Interface Name" should now refer to port name and/or number.
- Changed "Transfer Asset to Client" from a single action to a bulk action.
- Updated Filter Footer UI to show "Showing x to x of x records" instead of just the total records.
- Added Client Overview section to view client assets, contacts, licenses, credentials, etc.
- Introduced Quick Peek for asset details, contact information, and document viewing throughout the ITFlow App, all made possible by AJAX.
- Enabled Simple Drag-and-Drop Ordering for Invoices, Recurring Invoices, Quotes, Ticket Tasks, and Ticket Template Tasks.
- Added new Ticket View options: Kanban and Simple View.
- Migrated all repeating modals to the new AJAX modal function for faster loading times and quicker development.
- Allowed clients to upload PDF documents to accepted quotes.
- Client Portal now shows ticket category.
- Custom links can now be added to the Client Portal navbar.
- Lots of little tweaks to UI, performance, bugs, etc.
Breaking Changes
- Cron scripts have officially been moved to the /scripts folder and are no longer in the root directory; they must be updated to function properly.
25.01.3 - Hotfix Release
Hotfix to fix Assign to Dropdown in tickets
v25.02.2 - Stable Release
[25.02.2]
Fixed
- Corrected some edit modals not showing notes correctly.
- Bugfix: When exporting to CSV, the first asset wasn't being shown.
- Fix broken create / edit credentials.
- Fixed missing Notificatons link.
- Fixed a few dead links.
- Fixed Overdue count also counting Non-Billable Invoices.
- Fix Edit Client Notes.
Added / Changed
- Implemented SSL certificate history tracking.
- Added Inactive / Active Filter to Recurring Invoices.
- Merged Dismissed notifications and notification in one.
- Added Link Button to addd / edit Document WYSIWYG.
- Added Physical location to the asset export / import.