private ExecutionContext ProvisionExecutionContext(CancellationToken cancellationToken, string data) { var kv = new InMemoryKeyValueStore <string, object>(); if (!string.IsNullOrWhiteSpace(data)) { try { var deserialized = JsonSerializer.Deserialize <Dictionary <string, string> >(data); foreach (var(k, v) in deserialized) { kv.AddOrUpdate(k, v); } } catch (Exception e) { Trace.TraceError(e.ToString()); throw; } } else { Trace.TraceInformation("no data passed to execution context"); } var scope = _backgroundServices.CreateScope(); var context = new ExecutionContext(scope, kv, cancellationToken); return(context); }