How Application CIs are created by Agent Client Collector for VisibilityThis KB is aimed at technical customers and tech support engineers, to go into more detail than the public docs on the subject, to aid with debugging. Steps involved in ACC creating Application CIs: The Agent Client Collector "Enhanced Discovery" check is triggered from the instance, via the MID ServerThe ACC service on the target host executes Ruby script "basic_inventory.rb", which runs "running_processes.rb", both of which are from the "acc-f-modules" plugin.On Windows win_command_runner.rb is run, or for Linux/Mac running_processes_unix.rb is run, to collect the currently running processes data from the host, and both of those scripts are in the "acc-f-commons" plugin. The data collected includes all the usual fields needed to populate the cmdb_running_processes table in the instance, and the raw output of the running_processes.rb script will be seen in the ecc_queue input of the check. e.g. "output" : "{\"basic_inventory\":{...},...,\"tcp_connections\":{\"connections\":[{\"type\":\"on\",\"pid\":\"4\",\"ip\":\"0.0.0.0\",\"port\":\"80\"},...}, ... , \"running_processes\":{\"processes\":[{\"name\":\"System Idle Process\",\"parameters\":\"\",\"creationDate\":\"20220702062424.114086\",\"command\":\"System Idle Process\",\"ppid\":\"999990\",\"pid\":\"0\",\"caption\":\"System Idle Process\",\"description\":\"System Idle Process\",\"priority\":0},{\"name\":\"System\",\"parameters\":\"\",\"creationDate\":\"20220702062424.114086\",\"command\":\"System\",\"ppid\":\"0\",\"pid\":\"4\",\"caption\":\"System\",\"description\":\"System\",\"priority\":8},... The AgentNowResponseProcessor business rule acts as the sensor for the ECC Queue input, which uses script include AgentNowHandler, then script include MainDiscoveryHandler and its addDataIntoCMDB function, which will compile the IRE payload items for the main computer CI attributes. Note: This will happen even if only ACC-F is installed without ACC-V, however the next steps only happen for ACC-V.MainDiscoveryHandler then goes on to run function insertTcpConnectionsAndRunningProcessInfoIntoCMDB, which uses script include AgentDiscoveryHandlerADMHelper, to insert record into cmdb_running_processe and cmdb_tcp.The Application Dependency Mapping code runs, which is similar to IP-based Discovery. This tries to match running processes with known Applications, using the conditions in the Discovery Process Classification records (Discovery Definition - CI Classification - -Processes [discovery_classy_proc]). If there is a match a with a process classifier, a new application CI and "Runs on::Runs" relationship will be added to the IRE payload. The table/Class used for the application is the one defined on the process classifier record.The name of the CI will take the form "<Label of the CI class table in the Dictionary>@<hostname of the host CI>". Note: This naming of the application CI is is different to how IP-based Discovery process classification, or Discovery Patterns would name the CI. If the name is not overridden by a application specific pattern, then Discovery defaults to <process classifier record Name>@<hostname of the host CI>" . If a Pattern is involved, the naming convention will be specific to that pattern. e.g. Oracle pattern will include the "<Oracle instance SID>@<hostname of the host CI>", and the response for this is often to have unique names for multiple instances of the same software installed and running on the same host. If this is not done, as is the case with ACC currently, then you can end up with duplicate application CIs being created with different names, or the same single CI being updated multiple times for multiple different running processes.Port, command and key parameters are recorded. No other attributes are populated, other than those that can be populated using the running process data, which may mean key identification attributes for a specific application, or to identify specific instances of the application may be missing. The whole IRE payload is then given in one go to the CMDB IRE API createOrUpdateCI(). Notes: All of the above code is actually in the Agent Client Collector Framework (ACC-F) app, not the Agent Client Collector for Visibility app (ACC-V). It just checks if Discovery is installed (which is a prerequisite for ACC-V) and does the ADM and process classification steps depending.It is possible to run any of the ruby scripts from the command line of the host to help with debugging the execution, and see the raw output on the screen. These are in the cache folder of the ACC install.Temporarily creating instance system property glide.cmdb.logger.source.identification_engine=info,warn,error,debug,debugVerbose will allow seeing details of the IRE API debug for processing issues and the full result in the syslog table. It's important not to leave that in place though on a production instance, and it does rather spam the logs.