Microsoft Project and Project Server End of Life Audit
Security SoftwareList Microsoft Project and Project Server Installs and Their EOL Dates
This report provides an overview of all the Project and Project Server installations in your network along with their end-of-life date. If you have a Microsoft Project version that is EOL, make sure you update it as soon as possible. You can read more in our Microsoft Project and Project Server EOL blog post.
Microsoft Project and Project Server are project management tools that help you manage complex projects efficiently. They provide you with a range of tools and features to create and manage tasks, allocate resources, track progress, and analyze performance. Like all Microsoft products, once they go end of life, they will no longer receive any updates, security fixes, or support. Over time this can seriously affect performance as well as make them a security risk. We advise you to audit your Microsoft Project installations to see which ones are going end-of-life soon.
Microsoft Project End of Life Query
Select Distinct Top 1000000 tblAssets.AssetID, tblAssets.AssetName, tblAssets.Domain, tsysAssetTypes.AssetTypename As AssetType, tblAssets.Username, tblAssets.Userdomain, tsysAssetTypes.AssetTypeIcon10 As icon, tblAssets.IPAddress, tsysIPLocations.IPLocation, tblAssetCustom.Manufacturer, tblAssetCustom.Model, tsysOS.OSname As OS, tblAssets.Version As OSVersion, tblAssets.SP, subquery1.Software, subquery1.Version, subquery1.Publisher, subquery1.EOLDate, Case When IsDate(subquery1.EOLDate) = 1 and GetDate() < subquery1.EOLDate Then Cast(DateDiff(DAY, GetDate(), subquery1.EOLDate) As NVARCHAR) + ' days remaining' End As [Days Remaining], tblAssets.Lastseen, tblAssets.Lasttried, Case When subquery1.EOLDate = 'EOL' then '#ffadad' When IsDate(subquery1.EOLDate) = 1 and GetDate() > subquery1.EOLDate Then '#ffadad' When IsDate(subquery1.EOLDate) = 1 and GetDate() >= DateAdd(month, -1, subquery1.EOLDate) Then '#ffd152' Else '#d4f4be' End As backgroundcolor From tblAssets Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype Inner Join tsysIPLocations On tsysIPLocations.LocationID = tblAssets.LocationID Inner Join tblState On tblState.State = tblAssetCustom.State Left Join tsysOS On tsysOS.OScode = tblAssets.OScode Left Join (Select tblSoftwareUni.softwareName As Software, tblsoftware.softwareVersion As Version, tblSoftwareUni.SoftwarePublisher As Publisher, Case When Cast(ParseName(tblsoftware.softwareVersion, 4) As int) <= 14 Then 'EOL' When tblsoftware.softwareVersion Like '15.%' Then '2023-04-11' When tblsoftware.softwareVersion Like '16.%' and tblSoftwareUni.softwareName like '%2016%' and tblSoftwareUni.softwareName not like '%server%' Then '2025-10-14' When tblsoftware.softwareVersion Like '16.%' and tblSoftwareUni.softwareName like 'Microsoft Project Server 2016' Then '2026-07-14' When tblsoftware.softwareVersion Like '16.%' and tblSoftwareUni.softwareName like '%2019%' and tblSoftwareUni.softwareName not like '%server%' Then '2025-10-14' When tblsoftware.softwareVersion Like '16.%' and tblSoftwareUni.softwareName like 'Microsoft Project Server 2019' Then '2026-07-14' When tblsoftware.softwareVersion Like '16.%' and tblSoftwareUni.softwareName like '%2021%' and tblSoftwareUni.softwareName not like '%server%' Then '2026-10-13' End As EOLDate, tblsoftware.AssetID From tblsoftware Inner Join tblSoftwareUni On tblSoftwareUni.SoftID = tblsoftware.softID Where ((tblSoftwareUni.softwareName Like '%Microsoft Project%' and tblSoftwareUni.softwareName not Like '%server%') or (tblSoftwareUni.softwareName Like 'Microsoft Project Server [0-9][0-9][0-9][0-9]')) And tblSoftwareUni.SoftwarePublisher Like '%Microsoft%') As subquery1 On subquery1.AssetID = tblAssets.AssetID Where ((subquery1.Software Like '%Microsoft Project%' and subquery1.Software not Like '%server%') or (subquery1.Software Like 'Microsoft Project Server [0-9][0-9][0-9][0-9]')) And subquery1.Publisher Like '%Microsoft%' and tblState.Statename = 'Active'