When trying to service map an application service located behind an Azure Application Gateway and the pattern is unable to determine what is behind the Application Gateway.
Debugging the pattern it shows that connection 'Connect to backend pool members' is looking for information that does not appear to exist.
The specific step is "10. Parse IP config (pool members)". Here it tries to extract information into the table backend_app_pool_ip_config from the response stored in app_gateway_xml (it's a REST query against https://management.azure.com/subscriptions/.../resourceGroups/.../providers/Microsoft.Network/applicationGateways/...) but is unable to find the value for 'ip_id' which corresponds to /xml/value/properties/backendAddressPools/properties/backendIPConfigurations/id/text().
This path does not exist in the payload. Because of this, the value for ip_id is blank.
This value is used later in step "32. Remove duplicate IPs" which removes duplicate records in the backend_app_pool_ip_config based on this field. As such, because the ip_id is blank, all records in this table are removed except for 1.
Release or Environment
Seen in Orlando Patch4b
Step "8. Convert JSON to XML" on the Identification section "Application Gateway service by CMDB object id identification" converts (app_gateway_xml) to xml format from the cloud REST call of the Azure management input URL.
Next, step "10. Parse IP config" of the Connection section "Connect to backend pool members" retrieves IP_ID, backend address poll name and IP.
The root cause of the issue is that the path "/xml/value/properties/backendAddressPools/properties/backendIPConfigurations/id/text()" of ip_id does not correspond to the path on the xml string.
Fixing the field of ip_id by removing "backendIPConfigurations/id" from the definition and replacing it with "backendAddresses/fqdn".
Changes to be done: The parsing of 'ip_id' of 'backend_app_pool_ip_config' table on step "10. Parse IP config (pool members)" to be changed.