Skip to main content

GetAssignmentConfiguration

/// <summary>
/// Retrieves the assignment-to-web-role configuration stored in the tt_configuration entity.
/// The configuration is expected to be a JSON string named "Assignments.json".
/// </summary>
public Dictionary<string, Dictionary<string, List<string>>> GetAssignmentConfiguration(IOrganizationService service, ITracingService tracingService)
{
// Build query to retrieve the configuration record
QueryExpression configQuery = new QueryExpression("tt_configuration")
{
ColumnSet = new ColumnSet("tt_content"),
Criteria = new FilterExpression
{
Conditions = { new ConditionExpression("tt_name", ConditionOperator.Equal, "Assignments.json") }
}
};

// Execute query
EntityCollection configResults = service.RetrieveMultiple(configQuery);
if (configResults.Entities.Count == 0)
{
tracingService.Trace("Assignments.json configuration not found.");
return null;
}

try
{
// Parse JSON content into a nested dictionary structure
string jsonContent = configResults.Entities[0].GetAttributeValue<string>("tt_content");
return JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, List<string>>>>(jsonContent);
}
catch (Exception ex)
{
tracingService.Trace($"Failed to parse configuration JSON: {ex}");
throw new InvalidPluginExecutionException("Configuration parsing failed.", ex);
}
}