public string ReceiveOnlineBatchExternalAttachment(string username, string passwd, string receiversReference, long sequenceNumber, string batch, [XmlElement(DataType = "base64Binary")] byte[] attachments)
        {
            _logger.Info("ReceiveOnlineBatchExternalAttachment Recieved from: " + username);
            _logger.Debug("ReceiveOnlineBatchExternalAttachment Recieved from: " + username + " Batch: " + batch);

            // Authenticate username + passw
            if (!Authenticate(username, passwd))
            {
                _logger.Debug("ReceiveOnlineBatchExternalAttachment Invalid request");
                return(Response(resultCodeType.FAILED_DO_NOT_RETRY));
            }
            _logger.Debug("ReceiveOnlineBatchExternalAttachment, User Aithenticated");
            // Verify batch vs. XSD (Schema verification)
            if (!XmlUtils.ValidateBatchXml(batch, _filepath, new List <string> {
                "/xsd/genericbatch.2013.06.xsd"
            }))
            {
                _logger.Debug("ReceiveOnlineBatchExternalAttachment Validation Failed");
                return(Response(resultCodeType.FAILED_DO_NOT_RETRY));
            }

            try
            {
                var serializer = XmlUtils.GetXmlSerializerOfType <DataBatch>();
                // result is a DataBack object, which can be sent async to a recipient in the reciever application portfolio
                var result = XmlUtils.DeserializeXmlString <DataBatch>(serializer, batch);

                if (FileUtil.AlreadyExists(_filepath, _foldername, username, receiversReference, sequenceNumber))
                {
                    _logger.Debug("ReceiveOnlineBatchExternalAttachment Duplicate Request");
                    return(Response(resultCodeType.FAILED_DO_NOT_RETRY));
                }
                // Saving payload to disk
                var filename = Guid.NewGuid() + "_" + username + "_" + receiversReference + "_" + sequenceNumber;
                FileUtil.SaveXmlFileToDisk(_filepath, _foldername, filename, serializer, result);
                FileUtil.SaveAttatchmentsAsZip(_filepath, _foldername, filename, attachments);
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
                return(ex.Message);
            }

            _logger.Debug("ReceiveOnlineBatchExternalAttachment Validated OK ");
            return(Response(resultCodeType.OK));
        }