Automatic updates

Admin Tools can be updated just like any other Joomla! extension, using the Joomla! extensions update feature. Please note that Joomla! is fully responsible for discovering available updates and installing them on your site. Akeeba Ltd does not have any control of the update process.


This Joomla! feature requires that your server supports fopen() URL wrappers (allow_url_fopen is set to 1 in your server's php.ini file) or has the PHP cURL extension enabled. Moreover, if your server has a firewall, it has to allow TCP connections over ports 80 and 443 to, and If you don't see any updates or if they fail to download please ask your host to check that these conditions are met. If they are met but you still do not see the updates please file a bug report in the official Joomla! forum. In the meantime you can use the manual update methods discussed further below this page.


Admin Tools Professional needs you to set up the Download ID before you can install the updates. Please consult the Entering your Download ID documentation section for more information.

You can access the extensions update feature in different ways depending on your Joomla version:

  • Joomla 3: From the icon your Joomla! administrator control panel page. You will find the icon in the left-hand sidebar, under the Maintenance header. When there are updates found for any of your extensions you will see the Updates are available message. Clicking on it will get you to the Update page of Joomla! Extensions Manager.

  • Joomla 3 (alternate method): From the top menu of your Joomla! administrator click on Extensions, Manager. From that page click on the Update tab found in the left-hand sidebar. Clicking on it will get you to the Update page of Joomla! Extensions Manager.

  • Joomla 4: From the icon your Joomla! administrator control panel page. By default you will find the icon in the right-hand modules area, under the Update Checks header. When there are updates found for any of your extensions you will see the Updates are available message. Clicking on it will get you to the Update page of Joomla! Extensions Manager.

  • Joomla 4 (alternate method): From the sidebar of your Joomla! administrator click on System. On the new page find the Update area towards the bottom of the middle column and click the Extensions link. This takes you to the Update page of Joomla! Extensions Manager.

If you do not see the updates try clicking on the Find Updates button in the toolbar. If you do not see the updates still you may want to wait up to 24 hours before retrying. This has to do with the way the update CDN works and how Joomla! caches the update information.

If there is an update available for Admin Tools tick the box to the left of its row and then click on the Update button in the toolbar. Joomla! will now download and install the update.

If Joomla! cannot download the package, please use one of the manual update methods described below. If, however you get an error about copying files, folder not found or a cryptic "-1" error please follow our installation troubleshooting instructions.

If you get a white page while installing the update please try either the Built-in method (described above) or the manual update method (described below).

Updating manually

As noted in the installation section, installing and updating Admin Tools is actually the same thing. If the automatic update using Joomla!'s extensions update feature does not work, please install the update manually following the instructions in the installation section of this documentation.


When installing an update manually you MUST NOT uninstall your existing version of Admin Tools. Uninstalling Admin Tools will always remove all your settings. You do not want that to happen!

Sometimes Joomla! may forget to copy some files when updating extensions. If you find Admin Tools suddenly not working or if you get a warning that your installation is corrupt you need to download the latest version's ZIP file and install it twice on your site, without uninstalling it before or in-between these installations. This will most certainly fix this issue.

If the error occurs again after a while, without you updating our software, please contact your host. Some hosts will delete or rename files automatically and without any confirmation as part of a (broken and unfit for purpose) "malware scanner / antivirus". Unfortunately, these scanners return a lot of false positives -innocent files mistakenly marked as malicious- but rename / delete them nonetheless, breaking software installed on the server. If you are on such a host we very strongly recommend that you move to a decent host, run by people who actually know what they are doing. It will be far less headache for you and would actually improve your site's security.

Troubleshooting the updates

Before we begin please understand that extension updates are discovered, downloaded and installed by Joomla itself, using code that's under the control of the Joomla project. Akeeba Ltd can not and does not have any influence on that code. In simple terms, your issue is caused by Joomla itself and there's a very limited number of ways we can help. We can only offer a workaround and an explanation.



Please follow all of these steps in the exact order provided below, without skipping any one of them even if you think it is unnecessary. Each step and the order we tell you to follow is the result of dozens of hours poring over Joomla's code, understanding how it works and figuring out the shortest workaround to many weird things Joomla does.

For each one of your sites:

  1. Go to the backend of your site.

  2. Go to our software's main page e.g. click on Components and then on Akeeba Backup or Admin Tools or Akeeba Ticket System Professional depending on which of our software you have.

  3. Click on Options in the top right corner. This opens Joomla's com_config component showing the settings for our software.

  4. Clear your Download ID.

  5. Click on Save & Close.

  6. Click on Options in the top right corner again.

  7. Enter your Download ID.

  8. Click on Save & Close.

  9. If you have more than one Professional version of our software installed repeat the process from the beginning until here for each one of: Akeeba Backup Professional, Admin Tools Professional, Akeeba Ticket System Professional.

  10. Joomla 3: Go to Extensions, Manage, Update. Joomla 4: Go to System, Update, Extensions.

  11. Click on Clear Cache.

  12. Joomla 3: Go to System, Clear Cache. Joomla 4: Go to System, Maintenance, Clear Cache

  13. Joomla 3 only: From the dropdown select Administrator

  14. Click on Clear All / Delete All depending on your Joomla version even if the list is empty. Joomla has a hidden query cache which screws up updates if you don't clear it.

  15. Joomla 3: Go to Extensions, Manage, Update. Joomla 4: Go to System, Update, Extensions.

  16. Click on Clear Cache again.

  17. Click on Find Updates.

You should now be able to perform the updates to our software

Technical Explanation

Joomla handles the extensions updates on its own, using code inside Joomla itself. This feature was originally written to only support free extensions. Back in Joomla! 3.2 support for paid extensions was added. The following is a technical explanation of how Joomla finds updates and how it determines the download URL when you choose to update a paid extension.

How updates work

Joomla cannot read the Download ID from the component's configuration. Whenever you click on Save & Close in our software's Options page you come back to the main page of our software. There, we check if the Download ID in the Options has changed. If it has, we find the row in the #__update_sites table for our software and add dlid=THE_DOWNLOAD_ID_YOU_ENTERED in the extra_query column.

When Joomla tries to find updates it reads the contents of the URL in the location column of the #__update_sites table. This is a static XML file listing all published versions of an extension. Joomla finds the latest version compatible with your Joomla version. Then it compares the latest version with the version currently installed on your site.

If the version is different (not necessarily newer, mind you!) it decides there is an update available. At this point it creates a new row in the #__updates table and copies the extra_query column from the #__update_sites table's row to the new row in the #__updates table. At this point Joomla has not yet determined the download URL for the new version.

When you select an extension and click on the Update button Joomla reads the corresponding row of the #__updates table. It goes ahead and reads the contents of the detailsurl of that row. This is the same XML file it read to determine if there's an update available. Now it reads the downloadurl information from the XML file which contains the download URL for the new version but without the Download ID.

At this point Joomla combines this download URL with extra_query column of the #__updates table's row to create the real download URL. Moreover, it calls the onInstallerBeforePackageDownload event to let any plugins in the "installer" group to modify the download URL. It then tries to download the new version's ZIP file from this modified download URL which, hopefully, has the correct Download ID in it.

Why you get a 403

As you can understand from the explanation above, if the extra_query column in the #__update_sites table is empty or contains an invalid Download ID when Joomla tries to find updates (long before you select the update to download and install it) then the download URL will contain no or an invalid Download ID. As a result our site will forbid downloading the update with a 403 Forbidden error message. Joomla suppresses all information except the 403 error code.

The only way to correct this issue is to replace the extra_query in the #__update_sites table, clear all updates, have Joomla find all updates again (so the #__updates rows have the updated extra_query) and then retry to apply the updates.

Why do you need the complicated workaround

This brings us back to the fact that Joomla is doing some really weird things with updates.

For starters, it does not read the Download ID from the component's Options, it uses the extra_query column in the #__updates table. The only way to work around that and have our component replace the extra_query column in the #__updates table is to clear and re-enter the Download ID which triggers our code that applies the extra_query. This was addressed in Joomla 4 within the Update Sites page itself where you can now edit the Download Key directly.

The second weird thing is that the extra_query column appears twice, once in the #__update_sites and once in the #__updates table. Therefore we need to replace the #__updates table records. The only way to do that is through Joomla's extension updater's Clear Cache which empties the #__updates_table.

However, Joomla does something which makes no sense. It caches the database queries... Even though we replaced the extra_query column in #__update_sites and cleared the #__updates table (i.e. the updates cache) Joomla will still see the old, non-working update records unless we go to Clear Cache and clear the administrator cache. Even funnier, the database query cache which is part of the "system" cache may not even show up in the Clean Cache page, totally misleading the user. That's why we ask you to blindly click on Clear All on that page.

Now that the queries cache is cleared we might still see updates because Joomla did not, in fact, clear the updates cache (the #__updates table) when we told it to because of the database query cache. That's another thing that makes no sense. Therefore we need to click on Clear Cache in the Update page again to have Joomla actually clear the update cache.

At this point we can finally tell Joomla to Find Updates which will trigger the entire process we detailed above, finding the updates and using the correct extra_query. At long last, applying updates works fine since we've worked around all the weird things Joomla does when trying to find and apply updates. Luckily, this is only required once.

Why did that happen

The problem is that the extra_query column in the #__updates table went missing. There are two reasons why this could happen: 1. You clicked on the Refresh Update Sites button in the Updates page. This feature is VERY BUGGY. It silently removes the extra_query column from ALL RECORDS of the #__update_sites table. You get no warning whatsoever. 2. A third party extension triggered the Refresh Update Sites feature or stupidly deleted the extra_query column of the #__updates_sites table. Neither of these two root causes are under our control, nor can we do anything to stop that from happening.

Can we do anything about it?

There is only one thing we could do and actually did for Joomla 3: create an "installer" plugin which detects the lack of a Download ID in the download URL of our software, looks into the component's options and applies it just before Joomla tries to install an update.

The problem is that the information Joomla provides to these plugins is minimal: just a download URL. It is impossible for us to tell which software you're downloading from our site just by looking at the download URL Joomla reports. As a result, if you have two or more extensions of ours, all of their installer plugins trigger: the one for Akeeba Backup, the one for Admin Tools and the one for Akeeba Ticket System. The order in which they trigger depends on the order you installed our software and / or whether you modified the ordering of the installer plugins manually. That's why we ask you to enter the same Download ID in all of our Professional software.

If you need to use a different Download ID for each of our software you need to disable the installer plugins for all of our software. This falls back to the extra_query method. This is the recommended approach for Joomla 4. Once we remove Joomla 3 support the installer plugins will go away.

The idea here is that Joomla 4 offers built-in management of the Download Keys of all commercial extensions and will warn you if the keys go missing. This is a much better user experience but only works on Joomla 4, not Joomla 3. Therefore, while we keep supporting Joomla 3 we need to offer the installer plugins as a fallback method for the extra_query going missing.