public (EsasLoadResult esasLoadResult, object[] loadedObjects) Load()
        {
            EsasLoadResult loadResult = new EsasLoadResult();

            loadResult.LoaderStrategyName = this.GetType().Name;
            loadResult.LoadStartTimeUTC   = DateTime.UtcNow;

            object[] loadedObjects = null;
            try
            {
                var esasContext = _esasWebServiceContextFactory.Create();

                Stopwatch sp = new Stopwatch();
                sp.Start();

                DateTime deltaTimeLoadvalue = _loadTimeStrategy.GetLoadTimeCutoff(this);
                _logger.LogInformation($"Set a load-cutoff time of {deltaTimeLoadvalue.ToString("O")}");
                loadedObjects = LoadObjects(deltaTimeLoadvalue);
                loadResult.ModifiedOnDateTimeUTC = deltaTimeLoadvalue;

                sp.Stop();

                loadResult.EsasLoadStatus = EsasOperationResultStatus.OperationSuccesful;
                loadResult.LoadTimeMs     = sp.ElapsedMilliseconds;
                if (loadedObjects != null)
                {
                    loadResult.NumberOfObjectsLoaded = loadedObjects.Count();
                }

                esasContext = null; // mark as ready for disposal
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message, ex);
                loadResult.EsasLoadStatus = EsasOperationResultStatus.OperationFailed;
                loadResult.Message        = $"Exception: {ex.Message}";
            }

            loadResult.LoadEndTimeUTC = DateTime.UtcNow;
            return(loadResult, loadedObjects);
        }