
MID Server
The Internet has become a prime utility for our day-to-day survival. The availability of Wi-Fi or hard cable network is provided by Internet service providers, these cables run through several miles across different cities, states, and countries. To subscribe to Internet services, our provider places a modem in our home. This modem allows the service provider to enable the Internet capabilities in your home and to link to their network and control them.
Similarly, ServiceNow is a cloud-based application and there are many customers who subscribe and use ServiceNow. ServiceNow is like the Internet service provider, instead of a modem there is something called MID Server that needs to be configured for ServiceNow to be able to communicate with the enterprise network. A piece of software needs to run on the enterprise network and be configured for ServiceNow to be able to communicate with the MID Server and be able to talk to the infrastructure components.
The MID Server facilitates communication and movement of data between the ServiceNow platform and external applications, data sources, and services. MID Server is a simple Java application that can run on Windows, Linux, or Unix environments; it facilitates the data exchange between the enterprise network and ServiceNow instance. As MID Server communications are initiated inside the enterprise firewall, they do not require any special firewall rules.
MID Server is not only used by discovery, but it is used by various other components within ServiceNow, which include:
- Discovery
- Orchestration
- Import sets
- Altiris
- Microsoft SMS/SCCM
- Avocent LANDesk
- HP OpenView Operations
- Microsoft System Center Operations Manager (SCOM)
- Borland Starteam Integration
- Microsoft MIIS
- Service assurance
The following figure shows the high level architecture of the MID Server and interaction points:

The ECC queue is a connection point between an instance and other systems.

The MID Server subscribes to messages published by the Asynchronous Message Bus (AMB), which notifies the MID Server about waiting jobs assigned to it. The MID Server opens a persistent connection to the instance through the AMB and listens on the /mid/server/<mid_sys_id> AMB channel. When an output record is inserted into the queue (ecc_queue) table, an AMB message is sent to the MID Server's channel.
The MID Server receives this message and immediately polls the ecc_queue table for work:
- If a job exists in the ECC queue for that MID Server , the MID Server sets the status to I'm working on it
- It then does the work that is requested
- Then it reports the findings of the job back to the ECC queue
Depending on infrastructure factors that include the size of infrastructure there might be a need to place multiple MID Servers in the enterprise network. Placing multiple MID Servers will reduce the load and distribute the functionality between the MID Servers and what they are intended for. For example, there might be five MID Servers that are being used for only SSO integration and there might be an MID Server used for orchestration.
MID Server can be installed on a single machine or multiple MID Servers on a single machine.
There are several factors that need to be considered to determine if multiple MID Servers are required:
- Network: In a WAN deployment, deploying and having one MID Server to probe the WAN network might be a huge load and might impact the performance of the MID Server, the best way is to deploy MID Server into a different LAN network
- Security: Security policy controlled network devices with Access Control List (ACL) might require additional MID Servers on a machine in the network that is already on the ACL
- Capacity and response time: When the volume of configuration items to be discovered are high, multiple MID Servers need to be installed for it to be able to return responses quickly
- Probes: Depending on the type of probe there might be a need for separate MID Servers for each type of probe
MID Servers are placed at the lowest domain level in a domain separated environment.
