var numArgs = $.Arguments.Count();
var hierarchyId = sccm.SiteId;
var siteMap = {};
var currentServerName = "";
// Find Sites
var siteQuery = $.Format(" \
SELECT site.SiteCode, site.Type, site.ReportingSiteCode, site.ServerName, res.ServerRemoteName \n\
FROM SMS_Site as site JOIN SMS_SystemResourceList as res \n\
ON res.SiteCode = site.SiteCode AND res.RoleName ='SMS Site Server'");
sccm.Query(siteQuery, function () {
var site = this["site"];
var res = this["res"];
var siteCode = site.SiteCode;
var siteType = site.Type;
var parentSiteCode = site.ReportingSiteCode;
var serverFqdn;
var serverQuery = "\
SELECT res.ServerRemoteName, res.ServerName, res.SiteCode FROM SMS_SystemResourceList as res \n\
WHERE res.SiteCode IN ( SELECT SiteCode FROM SMS_Site WHERE Status != 4 AND SiteCode = '" + sccm.SiteCode + "') \n\
AND res.RoleName ='SMS Site System'";
// Find all servers under the site code sccm.SiteCode
sccm.Query(serverQuery, function () {
var serverDef, serverFqdn, parentSiteCode;
var siteCode = this.SiteCode;
var serverName = this.ServerName;
if ($.IsNullOrEmpty(parentSiteCode) == true) {
var siteServerFqdn = siteMap[siteCode].SiteServerFqdn;
// top site may have multiple servers.
if ($.EqualsIgnoreCase(siteServerFqdn, serverFqdn)) {
// Here for CAS & Standalone Primary
var siteType = siteMap[siteCode].SiteType;
var siteDef;
var hierarchy = data.CreateClassInstance("$MPElement[Name='MECM.Hierarchy']$");
hierarchy.AddProperty("$MPElement[Name='MECM.Hierarchy']/HierarchyId$", hierarchyId);
hierarchy.AddProperty("$MPElement[Name='MECM.Hierarchy']/SiteServer$", serverFqdn);
hierarchy.AddProperty("$MPElement[Name='MECM.Hierarchy']/SiteCode$", sccm.SiteCode);
hierarchy.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "ConfigMgr - " + sccm.SiteCode);
data.AddInstance(hierarchy);
var group = data.CreateClassInstance("$MPElement[Name='MECM.HierarchyComputers.Group']$");
group.AddProperty("$MPElement[Name='MECM.HierarchyComputers.Group']/HierarchyId$", hierarchyId);
group.AddProperty("$MPElement[Name='MECM.HierarchyComputers.Group']/SiteServer$", serverFqdn);
group.AddProperty("$MPElement[Name='MECM.HierarchyComputers.Group']/SiteCode$", sccm.SiteCode);
group.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "ConfigMgr Hierarchy - " + sccm.SiteCode);