How-To: Modify Service Mapping to support Netscaler Load Balancers configured for Service GroupsIssue This article details how to modify Patterns/Service Mapping in order to support Top-Down Discovery with Netscalers that utilize Service Groups (multiple IPs per Load Balancer service, instead of a single IP), which is currently unsupported. NOTE: Dependent on Pattern fixes in PRB1360774ReleaseAll, as of NYP1CauseCurrently the Netscaler SSH pattern doesn't properly gather multiple IP addresses for cmdb_ci_lb_pool records to match the configured Service Group IP information on the Netscaler end. As a result, VIPs are not able to be properly correlated to cmdb_ci_lb_service records which reference back to the Netscaler CI record in Service Mapping. Additionally, Service Mapping does not search on any other tables (only cmdb_ci_lb_service and LB CI records) to match VIPs to Load Balancers.ResolutionPRB1360774 contains the Pattern fixes to properly gather the IP information in cmdb_ci_lb_pool and cmdb_ci_lb_pool_member records We can utilize the DiscoveryHostUtils script include to workaround the Service Mapping component and search on these additional tables and return the proper Load Balancer CI record. Modify the "findHostByIp" function in "DiscoveryHostUtils" as follows: findHostByIp : function(ip){// Check for IP matches manually on cmdb_ci_lb_pool, and cmdb_ci_lb_pool_members to support Service Groups configurationvar grLbP = new GlideRecord("cmdb_ci_lb_pool");grLbP.addQuery("ip_address","=",ip);grLbP.query();while (grLbP.next()) {if (grLbP.load_balancer.operational_status == "1")return grLbP.load_balancer;}var grLbPM = new GlideRecord("cmdb_ci_lb_pool_member");grLbPM.addQuery("ip_address","=",ip);grLbPM.query();while (grLbPM.next()) {if (grLbPM.load_balancer.operational_status == "1")return grLbPM.load_balancer;}return null;},