/// <summary>
        /// Uploads file to blob store and FTP site as needed.
        /// </summary>
        /// <param name="content">
        /// The content of the file to upload.
        /// </param>
        /// <returns>
        /// The task to upload the file where needed.
        /// </returns>
        public async Task UploadFilteringFile(string content)
        {
            string fileName = String.Concat("Filtering", DateTime.Now.ToString("yyyyMMddHmmss"), ".txt");
            MasterCardFilteringBlobClient blobClient = MasterCardBlobClientFactory.MasterCardFilteringBlobClient(Log);

            // Upload file to the blob store and MasterCard.
            byte[] contentBytes = Encoding.ASCII.GetBytes(content);
            using (MemoryStream memoryStream = new MemoryStream(contentBytes))
            {
                // Upload the file to the blob store.
                memoryStream.Position = 0;
                await blobClient.UploadAsync(memoryStream, fileName).ConfigureAwait(false);

                Log.Verbose("Uploaded file {0} to blob store.", fileName);

                // Upload the file to MasterCard.
                IFtpClient ftpClient = MasterCardFtpClientFactory.FilteringFtpClient(Log);
                memoryStream.Position = 0;
                await ftpClient.UploadFileAsync(fileName, memoryStream);

                Log.Verbose("Uploaded file {0} to MasterCard.", fileName);
            }

            // Mark the file copy in the blob store as having been uploaded to MasterCard.
            await blobClient.MarkAsCompleteAsync(fileName).ConfigureAwait(false);

            Log.Verbose("File {0} marked as uploaded.", fileName);
        }