Network Management

Node polling stops after deleting Custom Properties in the SolarWinds Platform

This article describes the workaround for an issue that starts after deleting a node's custom property.

First published date

4/29/2026 2:48 PM

Last published date

6/5/2026 7:48 AM

Overview

Polling stops working and the following error is observed in collector logs:

ERROR SolarWinds.Collector.BusinessLayer.EntityWatcher - EntityCreator process failed Declarative.Orion.Cloud.Azure.AppService
System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'CurrentOS'.
Invalid column name 'CurrentProxyStorage'.
Could not use view or function 'dbo.NodeElements' because of binding errors.

In Audit Events, you will find an event where a custom property is deleted.

Product section

Orion Platform

Resolution

Workaround 1:

Workaround 2:

As a workaround, please run the query below to rebuild NodeElements without the NCM_Nodes dependency.

NOTE:

  • Create a backup of your database before running this query
  • Until we apply the code fix, each subsequent run of the Configuration Wizard will rebuild the NodeElements view with the NCM_Nodes dependency. So it needs to be rebuilt manually with the query below.
  • Replace Solarwinds-Orion-DB with the correct DB name
    -- 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.
    
    USE [Solarwinds-Orion-DB]
    GO
    
    /****** Object:  View [dbo].[NodeElements]    Script Date: 4/22/2026 11:19:06 AM ******/
    DROP VIEW [dbo].[NodeElements]
    GO
    
    /****** Object:  View [dbo].[NodeElements]    Script Date: 4/22/2026 11:19:06 AM ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    
    CREATE VIEW [dbo].[NodeElements] AS
    SELECT 'Node' as [EntityType], NodeID as [EntityID], NodeID, EngineID, N.[CreatedTimestamp]
    FROM NodesData AS N WITH(NOLOCK)
    WHERE N.ObjectSubType != 'ICMP'
    UNION ALL
        SELECT 'VIM.Host', HostID, N.NodeID, N.EngineID, N.CreatedTimestamp
        FROM NodesData N WITH(NOLOCK)
        INNER JOIN VIM_Hosts WITH(NOLOCK) ON N.ObjectSubType = 'ICMP' AND VIM_Hosts.NodeID = N.NodeID
    UNION ALL
        SELECT 'SAM.Aplication', ID, N.NodeID, N.EngineID, N.CreatedTimestamp
        FROM NodesData N WITH(NOLOCK)
        INNER JOIN APM_Application WITH(NOLOCK) ON N.ObjectSubType = 'ICMP' AND APM_Application.NodeID = N.NodeID
    UNION ALL
        SELECT 'CiscoAci', Id, N.NodeID, N.EngineID, N.CreatedTimestamp
        FROM NodesData N WITH(NOLOCK)
        INNER JOIN Ctx_C_Orion_CiscoAci_ApicData_poll_1 WITH(NOLOCK) ON N.ObjectSubType = 'ICMP' AND Ctx_C_Orion_CiscoAci_ApicData_poll_1.[Node.ID] = N.NodeID
    UNION ALL
        SELECT 'NetMan.Firewall', Id, N.NodeID, N.EngineID, N.CreatedTimestamp
        FROM NodesData N WITH(NOLOCK)
        INNER JOIN Ctx_C_Orion_NetMan_Firewalls_FirewallData_poll_1 WITH(NOLOCK) ON N.ObjectSubType = 'ICMP' AND Ctx_C_Orion_NetMan_Firewalls_FirewallData_poll_1.[Node.ID] = N.NodeID
    UNION ALL
        SELECT 'SCM.Node', SCM_ActiveNodes.NodeID, N.NodeID, N.EngineID, N.CreatedTimestamp
        FROM NodesData N WITH(NOLOCK)
        INNER JOIN SCM_ActiveNodes WITH(NOLOCK) ON N.ObjectSubType = 'ICMP' AND SCM_ActiveNodes.[NodeID] = N.NodeID AND SCM_ActiveNodes.Enabled = 1
    UNION ALL
        SELECT 'Orchestrators.Info', N.NodeID, N.NodeID, N.EngineID, N.CreatedTimestamp
        FROM NodesData N WITH(NOLOCK)
        INNER JOIN Orchestrators_Info WITH(NOLOCK) ON N.ObjectSubType = 'ICMP' AND Orchestrators_Info.[NodeID] = N.NodeID
    UNION ALL
        SELECT 'Orchestrators.Node', Orchestrators_Nodes.OrchestratorNodeID, N.NodeID, N.EngineID, N.CreatedTimestamp
        FROM NodesData N WITH(NOLOCK)
        INNER JOIN Orchestrators_Nodes WITH(NOLOCK) ON N.ObjectSubType = 'ICMP' AND Orchestrators_Nodes.[NodeID] = N.NodeID
    UNION ALL
        SELECT 'Interface', Interfaces.InterfaceID, N.NodeID, N.EngineID, N.CreatedTimestamp
        FROM NodesData N WITH(NOLOCK)
        INNER JOIN Interfaces WITH(NOLOCK) ON N.ObjectSubType = 'ICMP' AND Interfaces.[NodeID] = N.NodeID
    UNION ALL
        SELECT 'APIPoller', Id, N.NodeID, N.EngineID, N.CreatedTimestamp
        FROM NodesData N WITH(NOLOCK)
        INNER JOIN APIPoller_ApiPoller WITH(NOLOCK) ON N.ObjectSubType = 'ICMP' AND APIPoller_ApiPoller.[RelatedEntityId] = N.NodeID
    UNION ALL
        SELECT 'VIM.VCenter', VIM_VCenters.VCenterID, N.NodeID, N.EngineID, N.CreatedTimestamp
        FROM NodesData N WITH(NOLOCK)
        INNER JOIN VIM_VCenters WITH(NOLOCK) ON N.ObjectSubType = 'ICMP' AND VIM_VCenters.[NodeID] = N.NodeID
    UNION ALL
        SELECT 'NetFlow', N.NodeID, N.NodeID, NetFlowNodeSources.EngineID, N.CreatedTimestamp
        FROM NodesData N WITH (NOLOCK)
        INNER JOIN NetFlowNodeSources WITH (NOLOCK) ON N.ObjectSubType = 'ICMP' AND NetFlowNodeSources.NodeID = N.NodeID
        WHERE Enabled = 1 AND LastTime IS NOT NULL
    UNION ALL
        SELECT 'AzureSqlDatabase', ID, NULL, NULL, [FirstSeenUtc]
        FROM Cloud_Azure_SqlDatabaseData_man_1 WITH(NOLOCK)
    UNION ALL
        SELECT 'AzureStorageAccount', ID, NULL, NULL, [FirstSeenUtc]
        FROM Cloud_Azure_StorageAccountData_man_1 WITH(NOLOCK)
    UNION ALL
        SELECT 'AwsDirectConnect', ID, NULL, NULL, [FirstSeenUtc]
        FROM Cloud_Aws_DirectConnectData_man_1 WITH(NOLOCK)
    UNION ALL
        SELECT 'AzureExpressRouteCircuit', ID, NULL, NULL, [FirstSeenUtc]
        FROM Cloud_Azure_ExpressRouteCircuitData_man_1 WITH(NOLOCK)
    UNION ALL
        SELECT 'AwsSqlDatabase', ID, NULL, NULL, [FirstSeenUtc]
        FROM Cloud_Aws_SqlDatabaseData_man_1 WITH(NOLOCK)
    UNION ALL
        SELECT 'AzureApplicationGateway', ID, NULL, NULL, [FirstSeenUtc]
        FROM Cloud_Azure_ApplicationGatewayData_man_1 WITH(NOLOCK)
    UNION ALL
        SELECT 'AzureLoadBalancer', ID, NULL, NULL, [FirstSeenUtc]
        FROM Cloud_Azure_LoadBalancerData_man_1 WITH(NOLOCK)
    UNION ALL
        SELECT 'AwsElasticLoadBalancer', ID, NULL, NULL, [FirstSeenUtc]
        FROM Cloud_Aws_ElasticLoadBalancerData_man_1 WITH(NOLOCK)
    UNION ALL
        SELECT 'AzureAppService', ID, NULL, NULL, [FirstSeenUtc]
        FROM Cloud_Azure_AppServiceData_man_1 WITH(NOLOCK)
    UNION ALL
        SELECT 'AwsBucketStorage', ID, NULL, NULL, [FirstSeenUtc]
        FROM Cloud_Aws_BucketStorageData_man_1 WITH(NOLOCK)
    GO