public static async Task Run(
            [ServiceBusTrigger("datalockprocessor", Connection = "ServiceBusConnection")]
            string myQueueItem,
            [OrchestrationClient] DurableOrchestrationClient client,
            TraceWriter log)
        {
            try
            {
                log.Info("DataLockProcessor Starting");
                // DI
                var commitmentProvider = new CommitmentProvider();
                var accountProvider    = new AccountProvider();

                var earnings = JsonConvert.DeserializeObject <List <Earning> >(myQueueItem);

                var ukprn = earnings.Select(x => x.Ukprn).FirstOrDefault();

                var commitments = commitmentProvider.GetCommitments(ukprn, earnings).ToList();
                var accounts    = accountProvider.GetAccounts(commitments.Select(x => x.EmployerAccountId).Distinct().ToList());

                var input = new EarningsInput(ukprn, commitments, earnings, accounts);

                await client.StartNewAsync(nameof(EarningsOrchestrator), input);

                log.Info("DataLockProcessor Finishing");
            }
            catch (Exception e)
            {
                log.Error("Error sending learner info", e);
            }
        }
        protected override async Task OnActivateAsync()
        {
            ActorEventSource.Current.ActorMessage(this, "Actor activated.");

            // load commitments
            var sw = Stopwatch.StartNew();

            var stateNames = await StateManager.GetStateNamesAsync();

            if (stateNames != null && stateNames.Any())
            {
                TestDataGenerator.Log("DataLockActorStateManager", $"skiping initialisation, state has {stateNames.Count()} keys");
                Debug.WriteLine($"?????????????????????????????????? skiping initialisation, state has {stateNames.Count()} keys ?????????????????????????????????? ");
                return;
            }

            TestDataGenerator.Log("DataLockActorStateManager", $" initialising, state has no keys keys");
            Debug.WriteLine($"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! initialising, state has no keys keys !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ");

            var cache = GetLocalCache();

            ICommitmentProvider commitmentProvider = new CommitmentProvider();

            //var table = CloudStorageAccount.Parse(Configuration.TableStorageServerConnectionString).CreateCloudTableClient().GetTableReference("Config");
            //var tableOperation = TableOperation.Retrieve<ConfigEntity>("LOCAL", "Config");
            //var json = await table.ExecuteAsync(tableOperation);
            //var map = JsonConvert.DeserializeObject<ConcurrentDictionary<long, long>>(((ConfigEntity) json.Result).Map);
            //Ukprn = map.Single(kvp => kvp.Value == Ukprn).Key;

            var commitments = commitmentProvider.GetCommitments(Ukprn)
                              .GroupBy(c => string.Concat(c.Ukprn, "-", c.LearnerReferenceNumber))
                              .ToDictionary(c => c.Key, c => c.ToList());

            Debug.WriteLine($"read from provider in {sw.ElapsedMilliseconds.ToString("##,###")}ms");

            sw.Restart();


            await cache.Reset();

            foreach (var c in commitments)
            {
                await cache.Add(c.Key, c.Value);
            }

            Debug.WriteLine($"saved in state in {sw.ElapsedMilliseconds.ToString("##,###")}ms");
            TestDataGenerator.Log("DataLockActorStateManager", $" saved in state in {sw.ElapsedMilliseconds.ToString("##,###")}ms");
        }