Network Management

Structure missing on the navigation pane of the Manage Subnets & IP Addresses page in IPAM 2025.2

This article provides guidance to resolve the issue where the IPAM structure (supernets and subnets) is missing from the Manage Subnets & IP Addresses page after upgrading to IPAM 2025.2 or 2025.2.1.

First published date

8/6/2025 6:19 PM

Last published date

10/21/2025 5:37 PM

Overview

Following an upgrade to IPAM version 2025.2 or 2025.2.1, some users may notice that the IPAM structure no longer appears in the left-hand navigation pane on the Manage Subnets & IP Addresses page. This prevents users from viewing and managing their IP address hierarchy as expected.

Product section

IP Address Manager

Cause

The view definition for the Subnet Management page did not include user accounts from Windows/SAML groups, preventing these accounts from appearing in the tree listing.

Resolution

Note:

A fix for this issue is included in SolarWinds Platform 2025.4. Consider upgrading your environment. If you can't upgrade, use the workaround below.

 

To workaround the issue, update the database view IPAM_ManageSubnetsAndIpsView in the SolarWindsOrion database to include logic for Windows and SAML group accounts in the Subnet Management tree view by following these steps:

  1. Back up the database
  2. Open SQL Server Management Studio and connect to the SQL instance hosting the SolarWinds Platform database with admin credentials.
  3. Right-click the SolarWindsOrion database and select New Query.
  4. Paste the below and select Execute:

-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[IPAM_ManageSubnetsAndIpsView]') AND OBJECTPROPERTY(id, N'IsView') = 1)
BEGIN
    DROP VIEW [dbo].[IPAM_ManageSubnetsAndIpsView]
END
GO



CREATE VIEW [dbo].[IPAM_ManageSubnetsAndIpsView]
AS

WITH RoleTable ([GroupId], [AccountID], [Role], [Distance])
AS (
    SELECT 
                groupAncestors.[GroupId]
            ,    groupRole.[AccountId]
            ,    groupRole.[Role]
            ,    groupAncestors.[Distance]
    FROM 
            dbo.[IPAM_GroupAncestors] groupAncestors
    INNER JOIN 
            dbo.[IPAM_GroupRole] groupRole
    ON
            groupRole.[GroupId] = groupAncestors.[AncestorGroupId] 
    WHERE 
             groupRole.[Role] IS NOT NULL
)

SELECT
            ipamGroup.GroupId AS [GroupId]
        ,    groupType.GroupTypeId AS [GroupType]
        ,    ipamGroup.FriendlyName  AS [FriendlyName]
        ,    ipamGroup.Comments  AS [Comments]
        ,    ipamGroup.Address AS [Address]
        ,   ipamGroup.AddressMask AS [AddressMask]
        ,    ipamGroup.AddressN AS [AddressN]
        ,    ipamGroup.CIDR AS [CIDR]
        ,    LOWER(ISNULL( groupType.GroupIconPrefix, 'unknown' )) as [GroupIconPrefix]
        ,    LOWER(si.IconPostfix) as [StatusIconPostfix]
        ,    (CASE WHEN p.[Role] IS NOT NULL THEN p.[Role] ELSE
                (
                    CASE WHEN webUserSettings.[SettingValue] 
                        IN ('SiteAdmin', 'PowerUser', 'Operator', 'ReadOnly', 'NoAccess')
                        THEN webUserSettings.[SettingValue] 
                        ELSE
                            (
                                CASE acc.[AllowAdmin] 
                                    WHEN 'Y' THEN 'SiteAdmin' 
                                    ELSE 'ReadOnly' 
                                END
                            )
                        END
                ) 
            END) AS [Role]
        ,    anc.Distance
        ,    anc.AncestorGroupId AS [AncestorId]
        ,    CASE WHEN webUserSettings.SettingValue = '' 
                    THEN ( CASE WHEN customRolesHasChildrenInfo.GroupId IS NULL THEN 0 ELSE 1 END ) 
                    ELSE ( CASE WHEN hasChildrenInfo.GroupId IS NULL THEN 0 ELSE 1 END ) 
            END AS [HasChildren] 
        ,    hasSubnetsInfo.HasSubnets AS [HasSubnets]
        ,    acc.AccountID AS [AccountID]         
        ,    ipamGroup.ClusterId AS [ClusterId]
    FROM 
        dbo.[IPAM_GroupAncestors] anc
        LEFT JOIN 
                dbo.IPAM_Group ipamGroup ON ipamGroup.GroupId = anc.GroupId
        LEFT JOIN 
                dbo.IPAM_GroupType groupType ON ipamGroup.GroupType = groupType.GroupTypeId
        LEFT JOIN 
                dbo.StatusInfo si ON ipamGroup.Status = si.StatusId
        INNER JOIN 
                dbo.[Accounts] acc ON acc.[AccountType] IN (1, 2, 4, 5)
        LEFT JOIN   (
                        SELECT 
                                rt.[GroupId], rt.[AccountID], rt.[Role], rt.[Distance]
                        FROM 
                                RoleTable rt WHERE rt.[Distance] = 
                        (
                            SELECT 
                                    MIN(m.Distance) 
                            FROM 
                                    RoleTable m 
                            WHERE 
                                    rt.[GroupId] = m.[GroupId] AND rt.[AccountID] = m.[AccountID]
                        )
                    ) p ON p.[GroupId] = anc.[GroupId] 
                        AND    
                            LOWER(p.[AccountID]) = (
                                                    CASE 
                                                        WHEN acc.[AccountType] = 4 THEN LOWER(acc.[GroupInfo]) 
                                                        ELSE LOWER(acc.[AccountID]) 
                                                    END
                                                    )
        LEFT JOIN 
                dbo.[WebUserSettings] webUserSettings
        ON 
                webUserSettings.[SettingName] = 'IPAM.IPAMAccountRole' AND LOWER(webUserSettings.[AccountID]) = (
                        CASE 
                            WHEN acc.[AccountType] = 4 THEN LOWER(acc.[GroupInfo]) 
                            ELSE LOWER(acc.[AccountID]) 
                        END
                )
        LEFT JOIN   (
                        SELECT 
                                ipamGroupHasSubnetInfo.ClusterId, COUNT(ipamGroupHasSubnetInfo.GroupId) as HasSubnets 
                        FROM
                                dbo.IPAM_Group ipamGroupHasSubnetInfo
                        WHERE 
                                ipamGroupHasSubnetInfo.GroupType <> 32 
                        AND 
                                ipamGroupHasSubnetInfo.GroupType <> 2 
                        AND 
                                ipamGroupHasSubnetInfo.ParentId IS NOT NULL 
                        GROUP by ClusterId
                    ) hasSubnetsInfo ON ipamGroup.GroupId = hasSubnetsInfo.ClusterId
        LEFT JOIN   (
                        SELECT
                                  g.GroupId, rt.AccountID 
                        FROM 
                                IPAM_Group g
                          LEFT JOIN 
                                IPAM_GroupAncestors ga ON g.GroupId = ga.AncestorGroupId AND ga.Distance = 1
                          LEFT JOIN 
                                RoleTable rt ON ga.GroupId = rt.GroupId 
                          LEFT JOIN 
                                IPAM_Group gt ON rt.GroupId = gt.GroupId 
                        WHERE 
                                (rt.Role != 'NoAccess' AND gt.GroupType IN (1,4,8,16,128,256,512)) OR gt.GroupType = 2 
                        GROUP BY 
                                g.GroupId, rt.AccountID
                    ) customRolesHasChildrenInfo ON ipamGroup.GroupId = customRolesHasChildrenInfo.GroupId AND 
                    webUserSettings.AccountID = customRolesHasChildrenInfo.AccountID
        LEFT JOIN   (
                        SELECT
                                ipamGroupChildrenCount.ParentId AS GroupId
                        FROM
                                dbo.IPAM_Group ipamGroupChildrenCount
                        WHERE 
                                ipamGroupChildrenCount.ParentId IS NOT NULL AND ipamGroupChildrenCount.GroupType IN (1,2,4,8,16,128,256,512)
                        GROUP by ParentId
                    ) hasChildrenInfo ON ipamGroup.GroupId = hasChildrenInfo.GroupId
    WHERE
        groupType.GroupTypeId IN (1,2,4,8,16,128,256,512)
GO