The S3FileObject enables the QBO 3 Attachment module to store and retrieve files on Amazon S3.


  • From S3 Management Console, create a new bucket:
    • Bucket patterns are {dev|uat}site-quandis-{net|com}
      • Eg. uatscra-quandis-net
    • Ensure region is US Standard
  • Ensure you have a valid AWS Access Key and Secret Access Key which contains permissions for the bucket
  • Build and deploy qbo.Attachment.Amazon.dll
  • Ensure FileObject.config contains an entry for the newly created bucket:
<FileObject Name="AmazonS3" Type="qbo.Attachment.Amazon.S3FileObject, qbo.Attachment.Amazon" Uri="https://uatscra-quandis-net.s3.amazonaws.com/">
        <Permission Method="ListFiles" Function="Administrators"/>
  • Ensure Credential.config contains a corresponding entry for the FileObject entry
    <Credential UriPrefix="https://uatscra-quandis-net.s3.amazonaws.com/" AuthType="Basic" Username="{AWS Access Key}"
Password="{AWS Secret Key}" Domain=""/>

Upgrading to AWSSDK.dll from to

AWSSDK.dll for .NET version (S3FileObject.cs Revision 12144) allowed for files to be uploaded to S3 with leading slashes. For example and attachment record with PathURL of /Contact/123/SomeFile.pdf could be saved to S3 with the Path:
  • /
    • Contact
      • 123
        • SomeFile.pdf
 AWSSDK version 2.X does not allow leading slashes. As a result, upgrading to the latest version of qbo.Attachment.Amazon.dll (Revision 23855 or greater) which uses AWSSDK version 2.X will not function correctly without the conversion process described below.

Conversion Process

The conversion process consists of a one-time move of all objects in the S3 Bucket from root folder of "/" to new root folder "qboRoot" resulting in a new root folder called "qboRoot" which maps to the leading "/" in the PathURL. Note any PathURL values that do not start with a leading slash (Eg. Contact/123/SomeFile.pdf) will result in a root folder of "Contact" in the S3 Bucket and are not applicable here. To convert follow these steps:

  • Build and deploy qbo.Attachment.Amazon (Revision 23847), S3FileObject.cs (Revision Number 23854). This must be deployed before the move and will allow file object reads in both old and new locations while objects are being moved.
  • Download and install the AWS CLI. http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html#install-msi-on-windows
  • Configure AWS CLI. This is a command line utility similiar to DOS commands. From a command prompt:
    • type: 'aws configure' (http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
    • Input 
      • Key: {Your Key} (Use the same keys used in credential config)
      • SecretKey: {Your Secret Key}
      • region: 'us-east-1'
      • output: 'text'
    • You should then see a file called config in your home folder: C:\Users\{NTUserName}\.aws
    • From here, you can execute AWS Command Line Syntax.
  • Execute commands to move objects from "/" to "qboRoot". During the move process you can view files from the S3 Management Console. More information on mv can be found here http://docs.aws.amazon.com/cli/latest/reference/s3/mv.html. Note that you can use the copy command 'cp' similar to move but you would then have to issue a command to delete old root folder "/" when complete with copy. Also note recursive option must be used in most cases
    • Move all items in one call
      • aws s3 mv s3://{YourBucketName}// s3://{YourBucketName}/qboRoot --recursive
      • Eg. 'aws s3 mv s3://uatscra-quandis-net// s3://uatscra-quandis-net/qboRoot' --recursive
    • Move individual folders. Eg. 'Contact' folder:
      • aws s3 mv s3://{BucketName}//{FolderName}/ s3://{BucketName}/qboRoot/{FolderName} --recursive
      • Eg. 'aws s3 mv s3://uatscra-quandis-net//Contact/ s3://uatscra-quandis-net/qboRoot/Contact' --recursive
    • Copy individual folders. Eg. 'Contact' folder to 'ContactTest'
      • Eg. 'aws s3 cp s3://uatscra-quandis-net//Contact/ s3://uatscra-quandis-net/qboRoot/ContactTest' --recursive
  • Depending on the amount of objects the move times will vary. Once all items are moved, you can upgrade to  AWSSDK 2.X by getting latest version of qbo.Attachment.Amazon.dll (Revision 23855 or greater)