/// <summary>
        /// Async Delegate to do processing after we construct the content of file.
        /// 1. Upload the content to blob store, upload pending
        /// 2. Ftp to FDC
        /// 3. Mark as uploaded
        /// </summary>
        /// <param name="content">
        /// Content of the file
        /// </param>
        /// <returns>
        /// Async Task Wrapper
        /// </returns>
        public async Task OnPtsBuild(string content)
        {
            IFtpClient ftpClient = FirstDataFtpClientFactory.FirstDataPtsFtpClient(Logger);

            string connectionString           = CloudConfigurationManager.GetSetting("Lomo.Commerce.Fdc.Blob.ConnectionString");
            FirstDataPtsBlobClient blobClient = FirstDataBlobClientFactory.FirstDataPtsBlobClient(connectionString, Logger);

            // FDC requires EST.
            TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
            DateTime     estNow      = TimeZoneInfo.ConvertTime(DateTime.UtcNow, easternZone);
            string       fileName    = estNow.ToString("yyyyMMddHmmss") + ".GPTD5628.TXT";

            //upload file to blob store
            byte[]       contentBytes = Encoding.ASCII.GetBytes(content);
            MemoryStream ms           = new MemoryStream(contentBytes);

            ms.Position = 0;
            await blobClient.UploadAsync(ms, fileName);

            Logger.Verbose("Uploaded file {0} to blob stored to be Ftped to FDC", fileName);

            // ftp it only if there are transactions
            if (!IsFileEmpty(ms))
            {
                ms.Position = 0;
                await ftpClient.UploadFileAsync(fileName, ms);

                Logger.Verbose("File {0} uploaded to FDC", fileName);
            }

            // mark done
            await blobClient.MarkAsUploadedAsync(fileName);

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