Crowland:
There is no easy, built-in way to find out what modules are in use (hint to the core team, hint to the core team).
However, if you are not afraid of semi-complex SQL queries, try the ones below from your Host account, or directly to the server if you have that kind of access. I have to say that I cannot take credit for these queries, I have collected them from different places over time.
Here they are, have fun.
-- Query to just get the count of the modules used.
select
b.FriendlyName ModuleFriendlyName
,count(d.tabid) Occurs
from modules a
join moduledefinitions b on b.moduledefid = a.moduledefid
join TabModules c on c.ModuleID = a.ModuleID
join Tabs d on d.TabID = c.TabID
join Portals e on e.PortalID = a.PortalID
group by
b.FriendlyName
order by
b.FriendlyName
-- Query to get listing of modules per tab
SELECT m.ModuleID
,t.tabname
,tm.panename
,m.ModuleTitle
,dm.modulename
,dm.friendlyname
,m.PortalID
FROM [Modules] m
join [ModuleDefinitions] md
on (m.moduledefid = md.moduledefid)
join [Desktopmodules] dm
on (md.desktopmoduleid = dm.desktopmoduleid)
join [tabmodules] tm
on (m.moduleid = tm.moduleid)
join [tabs] t
on (t.tabid = tm.tabid)
--ORDER BY t.tabid, md.moduledefid
ORDER BY m.PortalID,tm.panename, t.tabname
--Another query to find modules in use
SELECT DM.ModuleName, DM.FriendlyName,
(SELECT COUNT(*) FROM Modules WHERE ModuleDefId = MD.ModuleDefId)
AS 'TotalInstances', (SELECT COUNT(*) FROM Modules WHERE ModuleDefId = MD.ModuleDefId AND IsDeleted = 1) AS 'RecycleBinInstances' FROM DesktopModules DM
INNER JOIN ModuleDefinitions MD ON DM.DesktopModuleID = MD.DesktopModuleID GROUP BY DM.ModuleName, DM.Friendlyname, MD.ModuleDefId ORDER BY 'TotalInstances'
--This SQL statement returns the pages in all portals which my installed modules are being used on:
SELECT TOP 100 PERCENT dbo.DesktopModules.DesktopModuleID, dbo.DesktopModules.FriendlyName, dbo.ModuleDefinitions.ModuleDefID, dbo.Modules.ModuleID, dbo.Modules.ModuleTitle, dbo.Modules.AllTabs, dbo.Modules.PortalID, dbo.Tabs.ParentId, dbo.Tabs.TabID, dbo.Tabs.TabName, dbo.Tabs.Title
FROM dbo.TabModules INNER JOIN dbo.Modules
ON dbo.TabModules.ModuleID = dbo.Modules.ModuleID
INNER JOIN dbo.Tabs ON dbo.TabModules.TabID = dbo.Tabs.TabID
INNER JOIN dbo.ModuleDefinitions ON dbo.Modules.ModuleDefID = dbo.ModuleDefinitions.ModuleDefID
INNER JOIN dbo.DesktopModules ON dbo.ModuleDefinitions.DesktopModuleID = dbo.DesktopModules.DesktopModuleID
WHERE (dbo.DesktopModules.FriendlyName = 'Reports')
ORDER BY dbo.DesktopModules.DesktopModuleID, dbo.Tabs.TabName
--This SQL statement returns which installed modules are NOT being used:
SELECT TOP 100 PERCENT dbo.DesktopModules.DesktopModuleID, dbo.DesktopModules.FriendlyName, dbo.DesktopModules.Version, dbo.DesktopModules.IsPremium FROM dbo.Modules
INNER JOIN dbo.TabModules ON dbo.Modules.ModuleID = dbo.TabModules.ModuleID
INNER JOIN dbo.ModuleDefinitions ON dbo.Modules.ModuleDefID = dbo.ModuleDefinitions.ModuleDefID
RIGHT OUTER JOIN dbo.DesktopModules ON dbo.ModuleDefinitions.DesktopModuleID = dbo.DesktopModules.DesktopModuleID
WHERE (dbo.DesktopModules.IsAdmin = 0)
GROUP BY dbo.DesktopModules.DesktopModuleID, dbo.DesktopModules.FriendlyName, dbo.DesktopModules.Version, dbo.DesktopModules.IsPremium
HAVING (COUNT(dbo.TabModules.TabID) = 0)
ORDER BY dbo.DesktopModules.FriendlyName
Carlos