If the standard QBO 3 Import Engines are insufficient for your use case, you can create a custom engine and plug it into the QBO 3 architecture.
- Create a class (.NET managed code) that implements the QBO 3 IImportEngine interface. Consider deriving from qbo.Import.Engines.AbstractEngine.
- Modify the ImportEngine.config file to include a reference to your new class
- Create an Import File Template that uses your new class (selected from the Plugin dropdown list)
Importing data into QBO 3 via the Import module typically involves the following steps:
- Creating an ImportFile record
- Uploading some Attachment to a QBO 3 file store (stored in ImportFile.PreTransformID)
- Calling ImportFile/Import: this will invoke the configured Import Engine
- Calling ImportFile/EndImport: this lets calling workflows know that the Import has been completed
The QBO 3 Import Dashboard (ImportFile.ashx/Home) provides a panel that allows you to accomplish steps 1 and 2 simply by dragging a file onto it. You may also start the pipeline by calling ImportFile/Watch, and have QBO 3 monitor any file repository (FTP site, UNC file location, etc.) for files to import.
The IImportEngine interface defines the following methods:
- Preview (optional): performs a read-only display of the data to be imported
- Import (required): imports the data from the ImportFile.PreTransformID
- Validate (optional): invokes some validation statement to ensure the data is valid prior to import
- PreTransform (optional): a method to transform ('massage') the data prior to importing it
- PostTransform (optional): a method to transform the results at the end of the transform (typically to return data back to a third party in their format)
The AbstractEngine implements all the methods above except the critical Import method.
Examples of these plugins include:
- BatchEngine: allows Excel files to 'script' any QBO 3 operations
- SqlEngine: have SQL Server do all the work using TSQL
- note that the Attachment uploaded (ImportFile.PreTransformID) will, by default, be located on the database server drives until the import is done
- you can use OPENROWSET or SSIS packages in this manner
- XmlEngine: processes QBO3 compliant XML against the Import framework