public async Task <InvokeResult> PopulateDeviceConfigToDeviceAsync(Device device, EntityHeader instanceEH, EntityHeader org, EntityHeader user) { Console.WriteLine("Hhhhh...eeerrre"); var result = new InvokeResult(); if (EntityHeader.IsNullOrEmpty(instanceEH)) { result.AddSystemError($"Device does not have a valid device configuration Device Id={device.Id}"); return(result); } Console.WriteLine("H1"); var deviceConfig = await GetDeviceConfigurationAsync(device.DeviceConfiguration.Id, org, user); if (deviceConfig == null) { result.AddSystemError($"Could Not Load Device Configuration with Device Configuration {device.DeviceConfiguration.Text}, Id={device.DeviceConfiguration.Id}."); return(result); } var instance = await _deploymentInstanceManager.GetInstanceAsync(instanceEH.Id, org, user); Console.WriteLine("H2"); if (instance != null && instance.Status.Value == DeploymentInstanceStates.Running) { if (instance.InputCommandSSL) { device.DeviceURI = $"https://{instance.DnsHostName}:{instance.InputCommandPort}/devices/{device.Id}"; } else { device.DeviceURI = $"http://{instance.DnsHostName}:{instance.InputCommandPort}/devices/{device.Id}"; } var endpoints = new List <InputCommandEndPoint>(); foreach (var route in deviceConfig.Routes) { Console.WriteLine("H3"); foreach (var module in route.PipelineModules) { Console.WriteLine("H4"); if (module.ModuleType.Value == Pipeline.Admin.Models.PipelineModuleType.Workflow) { Console.WriteLine("H4.1"); var wfLoadResult = await _deviceAdminManager.LoadFullDeviceWorkflowAsync(module.Module.Id, org, user); Console.WriteLine("H4.2"); if (wfLoadResult.Successful) { Console.WriteLine("H4.3"); if (wfLoadResult.Result.Attributes != null) { foreach (var attribute in wfLoadResult.Result.Attributes) { if (device.AttributeMetaData == null) { device.AttributeMetaData = new List <DeviceAdmin.Models.Attribute>(); } if (!device.AttributeMetaData.Where(attr => attr.Key == attribute.Key).Any()) { device.AttributeMetaData.Add(attribute); } } } Console.WriteLine("H4.4"); if (wfLoadResult.Result.StateMachines != null) { if (device.StateMachineMetaData == null) { device.StateMachineMetaData = new List <StateMachine>(); } foreach (var stateMachine in wfLoadResult.Result.StateMachines) { if (!device.StateMachineMetaData.Where(attr => attr.Key == stateMachine.Key).Any()) { device.StateMachineMetaData.Add(stateMachine); } } } Console.WriteLine("H4.5"); if (wfLoadResult.Result.InputCommands != null) { foreach (var inputCommand in wfLoadResult.Result.InputCommands) { var protocol = instance.InputCommandSSL ? "https://" : "http://"; var endPoint = new InputCommandEndPoint { EndPoint = $"{protocol}{instance.DnsHostName}:{instance.InputCommandPort}/{deviceConfig.Key}/{route.Key}/{wfLoadResult.Result.Key}/{inputCommand.Key}/{device.DeviceId}", InputCommand = inputCommand }; if (!endpoints.Where(end => end.EndPoint == endPoint.EndPoint).Any()) { endpoints.Add(endPoint); } } } Console.WriteLine("H43"); } else { result.Concat(result); } } } } device.InputCommandEndPoints = endpoints; } else { Console.WriteLine("H21"); device.InputCommandEndPoints = new List <InputCommandEndPoint>(); device.AttributeMetaData = new List <DeviceAdmin.Models.Attribute>(); device.StateMachineMetaData = new List <StateMachine>(); } Console.WriteLine("H5"); if (deviceConfig.Properties != null) { device.PropertiesMetaData = new List <DeviceAdmin.Models.CustomField>(); foreach (var prop in deviceConfig.Properties.OrderBy(prop => prop.Order)) { device.PropertiesMetaData.Add(prop); if (prop.FieldType.Value == DeviceAdmin.Models.ParameterTypes.State) { prop.StateSet.Value = await _deviceAdminManager.GetStateSetAsync(prop.StateSet.Id, org, user); } else if (prop.FieldType.Value == DeviceAdmin.Models.ParameterTypes.ValueWithUnit) { prop.UnitSet.Value = await _deviceAdminManager.GetAttributeUnitSetAsync(prop.UnitSet.Id, org, user); } } } Console.WriteLine("H6"); return(result); }