Should the Module Loader display an empty list?

I was trying to do an upgrade, just one version higher than what is installed (both versions being supported by my version of PHP), and both manual update and the Update Wizard would not finish properly (I would get the newer version but the Administration panel was empty).

So I checked the logs and there are some PHP Fatal errors relating to some module that doesn’t ring any bell to me.

I thought I would try to remove that module, but I see the Module Loader shows an empty list. Should it not list all the modules, including the ones that come with the installation package? Even if that’s not the case, it should show this module, as that subfolder in modules is not present in any installation package (looked in the version that is currently installed and the one that I tried to upgrade to) so it must be something that was installed separately.

How can I see a complete list of installed modules and remove what I don’t need?

Hi @bogdanm
Looks like the upgrade didn’t finish cleanly — possibly due to a custom or broken module.

If the Module Loader is blank, it’s often a permission or cache issue. Try clearing cache and checking folder permissions.

To find installed modules, check the modules/ and custom/modulebuilder/packages/ folders, or share the error logs with me — I’ll help you spot and safely remove what’s not needed.

Hi @Urvi, thank you for your answer.

For the Module Loader, I checked the rights on the files and they are owned by the user that runs the web server and write permissions everywhere.
I don’t know how to properly clean the cache. Do I go through all the subfolders in the cache/ folder and delete all files? Anything that needs to be deleted from the database too?

In modules/ there are plenty of subfolders. I tried to just delete the folder where the PHP error showed up and that made things worse. Even deleting stuff from the database related to that module didn’t make things better. I just reverted to the backup prior to the upgrade attempt.

Here’s a line from the log file:

[Wed Jun 18 09:53:09.624511 2025] [php7:error] [pid 657286] [client x.x.x.x:32192] PHP Fatal error: Uncaught Error: Call to
undefined method Basic::Basic() in /var/www/suitecrm/modules/AM_ProjectHolidays/AM_ProjectHolidays_sugar.php:71\nStack trace:\n#0 /
var/www/suitecrm/modules/AM_ProjectHolidays/AM_ProjectHolidays.php(44): AM_ProjectHolidays_sugar->AM_ProjectHolidays_sugar()\n#1 /v
ar/www/suitecrm/data/BeanFactory.php(123): AM_ProjectHolidays->AM_ProjectHolidays()\n#2 /var/www/suitecrm/data/BeanFactory.php(254)
: BeanFactory::getBean(ā€˜AM_ProjectHolid…’)\n#3 /var/www/suitecrm/modules/ACL/install_actions.php(52): BeanFactory::newBean(ā€˜AM_Pr
ojectHolid…’)\n#4 /var/www/suitecrm/modules/UpgradeWizard/index.php(277): include(ā€˜/var/www/suitec…’)\n#5 /var/www/suitecrm/inc
lude/MVC/View/SugarView.php(824): include_once(ā€˜/var/www/suitec…’)\n#6 /var/www/suitecrm/include/MVC/View/views/view.classic.php(
72): SugarView->includeClassicFile(ā€˜modules/Upgrade…’)\n#7 /var/www/suitecrm/include/MVC/View/SugarView.php(210): ViewClassic->di
splay()\n#8 /var/www/suitecrm/include/MVC/Controller/SugarController.php(432): SugarView->pro in /var/www/suitecrm/modules/AM_Proje
ctHolidays/AM_ProjectHolidays_sugar.php on line 71, referer: http://crm.mydomain.tld/index.php

I was trying to upgrade from 7.11.23 to 7.12.8 using the upgrade package. I tried with the Wizard and from the command line with the same error.
That AM_ProjectHolidays/ folder in modules/ is not present in the full instalation package for 7.11.23 and I don’t know where it came from. It’s an old install that was upgraded multiple times throughout the years.

Thank you in advance for any help you can provide.

Hi @bogdanm
The error you’re seeing is due to an outdated custom module called AM_ProjectHolidays that’s using old PHP code. The method ā€œBasic::Basic()ā€ needs to be updated to the newer ā€œ__construct()ā€ style. This is likely what’s breaking the upgrade.

Here’s what you can do:

Fix the module:
In the file ā€œAM_ProjectHolidays_sugar.phpā€, find the constructor and replace it with this:
ā€œfunction __construct() { parent::__construct(); }ā€

Clear the cache:
Yes, you can delete everything inside the ā€œcacheā€ folder (but don’t delete the folder itself). There’s no need to remove anything from the database for this step.

Why the Module Loader is empty:
That’s normal. It only shows modules that were installed using the Module Loader (ZIP files). Manually added or older custom modules like this one won’t show there.

I can help you fix or remove the module so the upgrade works properly. Let me know what you’d prefer.

Thank you @Urvi for the detailed explanations.

Regarding the cache, do I just delete the files in there or can I delete the folders too? (there are 14 of them)

I understand now, the modules I have currently are either core modules that are not supposed to be removed or old custom ones that were installed manually, so they would not show up in Module Loader.

Now I’m wondering if I even need the AM_ProjectHolidays module. Is there a way to check if a module is used anywhere? If it is not, I would rather remove it than modify it. What is the procedure for removing a custom module? I tried deleting the folder in modules/ and deleting the tables containing that name from the database but that seemed to make things worse.

I’ve checked for which files contain that name and here is the list:

root@mywebserver:/var/www/suitecrm# grep -rwl ā€˜.’ -e ā€˜AM_ProjectHolidays’
./files.md5
./modules/AM_ProjectHolidays/AM_ProjectHolidays.php
./modules/AM_ProjectHolidays/views/view.edit.php
./modules/AM_ProjectHolidays/vardefs.php
./modules/AM_ProjectHolidays/AM_ProjectHolidays_sugar.php
./modules/AM_ProjectHolidays/metadata/editviewdefs.php
./modules/AM_ProjectHolidays/metadata/quickcreatedefs.php
./modules/AM_ProjectHolidays/metadata/subpanels/default.php
./modules/AM_ProjectHolidays/metadata/metafiles.php
./modules/AM_ProjectHolidays/metadata/popupdefs.php
./modules/AM_ProjectHolidays/metadata/listviewdefs.php
./modules/AM_ProjectHolidays/metadata/detailviewdefs.php
./modules/AM_ProjectHolidays/metadata/SearchFields.php
./modules/AM_ProjectHolidays/metadata/searchdefs.php
./modules/AM_ProjectHolidays/controller.php
./cache/Relationships/relationships.cache.php
./cache/sprites/default/sprites.meta.php
./cache/modules/Project/Projectvardefs.php
./cache/modules/AM_ProjectHolidays/AM_ProjectHolidaysvardefs.php
./cache/modules/Relationships/relationships.cache.php
./custom/Extension/application/Ext/Include/GanttChartPro.php
./custom/Extension/modules/Project/Ext/Layoutdefs/am_projectholidays_project_Project.php
./custom/Extension/modules/Project/Ext/Vardefs/am_projectholidays_project_Project.php
./custom/Extension/modules/AM_ProjectHolidays/Ext/Vardefs/am_projectholidays_project_AM_ProjectHolidays.php
./custom/modules/Project/Ext/Vardefs/vardefs.ext.php
./custom/modules/Project/Ext/Layoutdefs/layoutdefs.ext.php
./custom/modules/AM_ProjectHolidays/Ext/Vardefs/vardefs.ext.php
./custom/application/Ext/Include/modules.ext.php
./custom/backup/custom/Extension/application/Ext/Language/en_us.GanttChartPro.php
./custom/backup/custom/Extension/modules/Project/Ext/Layoutdefs/project_resources.php
./custom/metadata/am_projectholidays_projectMetaData.php
./upload/upgrades/patch/SuiteCRM-Upgrade-7.8.x-to-7.9.17-restore/include/language/en_us.lang.php
./upload/upgrades/patch/SuiteCRM-Upgrade-7.6.x-to-7.8.31-restore/include/language/en_us.lang.php
./upgradeWizard.log

You’re right @bogdanm — just deleting the folder or DB tables can break things, as SuiteCRM references modules in several places.

Here’s a safe way to handle it:

  1. Check usage: If the am_projectholidays table is empty and the module doesn’t appear in the UI or Studio, it’s likely unused.
  2. Remove safely: Delete all related files in:
  • modules/AM_ProjectHolidays/
  • custom/modules/AM_ProjectHolidays/
  • Any entries in custom/Extension/... and custom/application/Ext/Include/modules.ext.php
  1. Clear cache: You can delete all contents inside the /cache folder (keep the folder itself).
  2. Rebuild: Run Quick Repair & Rebuild and Repair Relationships from Admin.

If you’re unsure, I can help you clean it up or disable it temporarily for a smooth upgrade. Let me know!Or Share your contact info.

@Urvi thank you again for all the assistance.

Since I could not find the constructor function you mentioned, I procedeed to remove all mentions of that module from the places you indicated and also found it in some other places. After clearing the cache and doing the rebuilds, the upgrade process finished cleanly. I have not removed the tables from the database yet, but I suppose it’s safe to do that now?

I upgraded to 7.12.8 and after that to 7.12.12 (it was the latest upgrade package available). I see the last version in the 7.12 branch is 7.12.14, is there an easy way to upgrade to it without an upgrade package?

@bogdanm Good to hear the upgrade went well after removing that module!

You can delete the database tables now if you’re sure the module isn’t used — just keep a backup first, to be safe.

For upgrading from 7.12.12 to 7.12.14, you’ll need the upgrade package from SuiteCRM’s website. There’s no automatic update for minor versions, so you can apply it via the Upgrade Wizard or command line like before.

If you want, I’m happy to help you with this last step. Just let me know!

@Urvi I’ve removed the tables from the database and I don’t see any impact. They were empty anyway.

Regarding the upgrade, I don’t see any upgrade package from-7.12.x-to-7.12.14
The newest one I see is from-7.12.x-to-7.12.12 which I’ve used after Upgrade-7.11.x-to-7.12.8. Anyway, it’s not very important to me as I plan to upgrade my linux web server to PHP 7.4, which will allow me to move to SuiteCRM-7.13.

@bogdanm Glad to hear everything went well

You’re right — there’s no official upgrade package from 7.12.12 to 7.12.14, so if you’re planning to upgrade to PHP 7.4 and move to 7.13, that’s a good move.

Is it easier to move from the 7.13 to 7.14 without loosing any functionality?

Good question. I guess I’ll find out when I upgrade to PHP8.
But since 7.14 does not support any version of PHP7 I don’t know how the upgrade process is supposed to be done. The web wizard is probaby out of the question as 7.13 won’t run on PHP8. The command line method should work I presume.

https://docs.suitecrm.com/admin/compatibility-matrix/

@bogdanm
If you’re comfortable, please feel free to share your contact details method so I can help you further with the upgrade process.