Subticket Manager: Troubleshooting
Troubleshooting the osTicket Subticket Manager: panel missing, queue icons missing, linking fails, wrongly linked tickets, rate limit, activation errors, debug log and common questions.
Subticket Manager: Troubleshooting
Panel does not appear in the ticket view
Symptoms: A ticket opens normally but the "Parent Ticket / Child Tickets" section is missing, or osTicket shows a PHP error after activation.
Check:
- Autoloader: Does
include/plugins/<folder>/vendor/autoload.phpexist? Without this file the plugin cannot find its classes. On the Git route it is missing until you have runcomposer install --no-dev. - Plugin active: The Subticket Manager must be enabled under Manage → Plugins.
- Staff area: The panel appears only in the staff area, not in the client portal.
- JavaScript: Open the browser console. If it shows
[Subticket] Failed to load subticket-panel.js, the file at<osTicket>/include/plugins/<folder>/js/subticket-panel.jsis not reachable for the browser, for example because the web server blocks access toinclude/. - Browser cache: Reload the page with Ctrl+Shift+R.
Queue icons are missing
Symptoms: Parent tickets show no code-fork icon in the queue.
Check:
- The script only acts on pages whose path contains
tickets.php, and only on rows with a link of the formtickets.php?id=<ID>. - As a logged-in agent open
<osTicket>/scp/ajax-subticket.php?action=batch_parent_status&ticket_ids=15in the browser. The response must contain"success": true. If the file does not exist, copy it toscp/as described under Installation. - Check the browser console for messages with the prefix
[SubticketManager]. - The script starts 500 ms after the page has loaded. If osTicket changes the table via AJAX afterwards, reload the page.
Linking fails
Symptoms: After Link to Parent the message Failed to link tickets or Invalid parent ticket ID/number appears.
Check:
- Ticket number: Enter the number shown in the ticket header, not the internal ID. The dialog accepts digits only (at most ten). If your numbering contains letters or hyphens, the panel cannot link the ticket.
- Self-reference: A ticket cannot be its own parent.
- Loop: The chosen parent must not be a descendant of the ticket. Example: if A is the parent of B and B is the parent of C, you cannot make C the parent of A. Remove one relationship of the chain first.
- Department: You need access to the department of the child ticket. Without it the message is
You do not have access to this ticket.
The panel does not always state the reason. For failures in linkTicket the plugin writes the cause with the prefix [SUBTICKET-PLUGIN] to the PHP error log.
Ticket unexpectedly became a child
Symptoms: A ticket created normally shows up as a child of another ticket.
Cause: You clicked Create Subticket earlier but did not submit the form. The plugin keeps the parent ID in your session until a ticket is created.
Solution: Remove the link with Unlink from Parent. In future either create the subticket or log out when you discard the form.
"Too many requests"
The AJAX actions children, link, unlink and create allow 100 requests per 60 seconds per session. After that the plugin blocks the session for 60 seconds. This hardly happens in normal use. A loop in your own code can trigger the limit.
Errors on activation
Symptoms: Activation reports Target directory not writable: ..., Failed to deploy file to scp/... or Source file not found: ....
Solution:
- Give the web server user write permission on the
scp/directory. - Check that the
scp-files/folder with the three files exists in the plugin folder. - Alternatively copy the files by hand (see Installation).
HTTP 500 from ajax-subticket.php
| Message | Cause |
|---|---|
SubticketPlugin not found |
No file class.SubticketPlugin.php exists under include/plugins/*/ |
Multiple SubticketPlugin installations detected |
The plugin exists more than once. Remove the extra copy |
Controller not found |
ajax/SubticketController.php is missing in the plugin folder |
Reading the debug log
With SUBTICKET_DEBUG the plugin writes to /tmp/subticket-debug.log. Typical lines:
Stored subticket_parent in session: 15andAuto-linking ticketshow the auto-link flow.onTicketView() calledshows that the panel is rendered.Deploying fileandFile deployedshow the copy toscp/.
The log contains ticket data. Disable debug mode after the analysis.
Frequently asked questions
Does the plugin close parent tickets automatically?
No. The plugin does not change any ticket status. The configuration fields for it (for example "Auto-close Parent Ticket") have no function.
Is there a tree view or batch functions?
No. The overview page lists existing relationships, at most 100 child tickets.
Can a ticket have multiple parents?
No. osTicket stores exactly one ticket_pid per ticket.
How many levels are allowed?
The plugin does not limit the depth. The loop check follows the chain at most ten levels deep.
What remains after uninstalling?
The links in ticket_pid always remain. Tables, the version column and indexes are removed only with the option Remove Data on Uninstall enabled, and the two commands for column and index work on MariaDB only.
Does the plugin work with a table prefix other than ost_?
No. All queries use ost_ hard-coded.
Can I manage subtickets through the REST API?
Yes, through the API Endpoints plugin. Details under Extending and Integration.