private static async Task <string> Run(AppConfiguration configuration)
        {
            var validator = new ConfigurationValidator(configuration);

            if (!validator.Validate())
            {
                return("The validation of provider configuration details failed");
            }

            var tokenProviderOptions = new LogicTokenProviderOptions
            {
                AuthorizationScope = configuration.TokenProvider.AuthorizationScope,
                ClientId           = configuration.TokenProvider.ClientId,
                ClientSecret       = configuration.TokenProvider.ClientSecret,
            };

            if (configuration.TokenProvider.AuthorizationTokenIssuer != null)
            {
                tokenProviderOptions.AuthorizationTokenIssuer = configuration.TokenProvider.AuthorizationTokenIssuer;
            }

            using var httpClient           = new HttpClient();
            using var tokenProviderFactory = new LogicTokenProviderFactory(tokenProviderOptions);
            var options = new CitizenDocumentsOptions(configuration.SubscriptionId, configuration.ServiceUri);

            using var citizenDocumentClient = new CitizenDocumentsClient(httpClient, tokenProviderFactory, options);
            using Stream stream             = File.OpenRead(configuration.DocumentName);

            var uploadWithLargeSizeDocument = await citizenDocumentClient.UploadFileAsync(stream, new UploadFileParameters(
                                                                                              new Guid(configuration.ConfigurationId),
                                                                                              new Guid(configuration.SubscriptionId),
                                                                                              cpr : configuration.Cpr,
                                                                                              documentName : configuration.DocumentName,
                                                                                              documentType : configuration.DocumentType,
                                                                                              retentionPeriodInDays : configuration.RetentionPeriodInDays))
                                              .ConfigureAwait(false);

            Log.Information("The {DocumentType} document with id {DocumentId} and file access page url {FileAccessPageUrl} is uploaded successfully", uploadWithLargeSizeDocument.DocumentType, uploadWithLargeSizeDocument.DocumentId, uploadWithLargeSizeDocument.FileAccessPageUrl);

            return("The citizen document was uploaded successfully");
        }