QuickSync and QuickBill Guide
QuickSync Bundle
Save time with your business using QuickBooks and QuickSync Bundle. Instead of typing information from a paper document into QuickBooks and then storing it in a filing cabinet, you can capture that document into GlobalSearch and push data to and from QuickBooks with a click of a button. QuickSync Bundle comes with all of the products needed for an integrated solution to synchronize your business information between GlobalSearch and QuickBooks.
The Bundle includes:
QuickSync – Use QuickSync to get data out of QuickBooks and available to GlobalSearch via assembly bound lists.
GlobalSearch Tabular Data Control – Connect GlobalSearch and QuickBooks Transactions with line items, using the Tabular Data Control module.
This documentation is current to GlobalSearch Fall 2021 Release. Older versions of GlobalSearch may not have all features listed here or may appear different than the provided screenshots.
A note about QuickSync, QuickBill, and terminal server environments:
QuickSync and QuickBill both connect to QuickBooks using Intuit’s QB XMLRP2 connector. Because of a known limitation with QB XMLRP2 and having multiple Windows sessions on the same machine, QuickSync and QuickBill are not supported in any environment where multiple Windows sessions are open, such as terminal servers.
This applies regardless of whether:
the Windows sessions are “Active” vs “Disconnected”
any of the machine’s users use QuickBooks, any S9 products/solutions, or neither
The only known workaround at this time it to ensure only one Windows session exists when attempting to connect to QuickBooks with QuickBill or QuickSync. This means completely ending the Windows sessions for all users other than the one using QuickBill or QuickSync. Simply disconnecting them will not resolve the issue.
Because of this, the recommended course of action is to plan your setup/environment such that QuickBill and/or QuickSync are installed on devices where only one user is expected to log into Windows.
Table of Contents
- 1 GlobalSearch Setup
- 2 QuickSync Setup
- 3 QuickSync Overview
- 4 QuickSync without GlobalSearch
- 5 Setting up GlobalSearch for QuickBill and QuickSync
- 6 Fields
- 7 Create Archives
- 8 Data to QuickBooks
- 9 Data from QuickBooks
- 10 Granting QuickBill and QuickSync access to QuickBooks
GlobalSearch Setup
Please refer to the GlobalSearch Server and Client Installation Guide for details on installing the Square 9 products.
Note: The GlobalSearch configurations necessary to use the features in the QuickSync Bundle must be done by a member of the GlobalSearch SSAdmin group or someone assigned database administration rights to the database with which QuickBooks data will be shared.
QuickSync Setup
Begin the setup process by opening the QuickSync installer and running it as an administrator (Right click > “Run as administrator”). By default, this is found in C:\Program Files\Square 9 Softworks\QuickSync Installer (GlobalSearch 6.1+) or C:\Client install for QuickSync (GlobalSearch 5.0 and older).
Install the QuickBooks SDK prerequisite, if prompted.
Enter your Name, Company, and QuickSync license number when prompted.
When prompted for the Database Information, select “Use existing GlobalSearch Server”. (If you are using QuickSync without GlobalSearch, proceed to the section below.) Select the existing GlobalSearch Server to integrate with, and then click the Install button. Once finished, you will be greeted with a confirmation page and given the option to launch QuickSync. Once you launch QuickSync, you can proceed to the following sections.
QuickSync Overview
QuickSync is a local database synchronization utility that lets you extract data from a desktop version of QuickBooks and stores it in a database, ready to be used. Streamline your QuickBooks documentation process using QuickSync with GlobalSearch or other line-of-business applications.
With the local copy of QuickBooks opened to the desired Company, QuickSync can pull data from a variety of documents, which QuickBooks refers to as “Transactions.” Transactions include Checks, Invoices, Bills, Credit Memos, Deposits, Estimates, Accounts, Vendors, Terms, Taxes, Classes, Customers, Customer Message, and Items.
See the “Create Lists,” “Create Fields,” and “Create Archives” sections below on configuring QuickSync. See the “Data from QuickBooks” section for using QuickSync.
QuickSync without GlobalSearch
If you have purchased QuickSync to work with an application other than GlobalSearch, proceed to the “Data from QuickBooks” section of this article for information on QuickSync settings.
Setting up GlobalSearch for QuickBill and QuickSync
Full API Access
In order to push data to QuickBooks with QuickBill, you must have the Full API Access security setting enabled for the GlobalSearch Archive associated with the QuickBooks Transaction. For further details on setting Archive security, please see the GlobalSearch Configuration Guide.
Log in to the GlobalSearch Web client as an administrative user.
Open the GlobalSearch User Management panel.
Select the users/Archives you are going to be using with QuickBill
If using “Security by Users/Groups” with GlobalSearch 6.1+, first select all users and/or groups that will be performing the push under “Users & Groups”. Then, select the Archive(s) under “Security Components”.
If using “Security by Components” or any version of GlobalSearch older than 6.1, first select the Archive(s) under “Security Components” that will be used with QuickBill. Then, select all users and/or groups under “Users & Groups” that will be performing the push.
Under “Archive Permissions”, ensure that “Full API Access” is selected
Click “Apply Security”.
Field Lists
You will need to create Fields in GlobalSearch to connect with QuickBooks. Several of these Fields will need Lists, which may be assembly bound lists. Prior to creating the Fields, create the necessary Lists. Refer to the GlobalSearch Configuration Guide for further details on creating Lists.
Tip: Make Fields and Lists for Future Use. While it is only necessary to create GlobalSearch Fields and Lists which are required for the QuickBooks Transactions you are currently using, it is a good idea to create all of the Fields and Lists shown in the tables to prepare for future needs.
Create Lists
From the GlobalSearch web client, use the Field Catalog to create the specific Lists shown in the “Lists for QuickBooks Transactions” table below.
Tip: Name Lists to Show a Connection. While Lists for QuickBooks Transactions may be named as you wish, it is a good idea to name them in a way which indicates to which Fields they are assigned. This makes configuration and maintenance easier. A useful naming convention may be to add “QB” to the name. For example, the List containing various accounts “would be named “QBAccounts.”
Open the Field Catalog and click Lists.
Click the Add button in the lower-right corner.
Enter the name of the List in the List Name text box.
Enter the values of the List in List Values as shown in the table below.
Create the list for the QuickBooks Transaction Field and enter the list values shown in the table.
For the Transactions which recommend using an assembly bound list, see the “Assembly Bound Lists” section which follows.
Click OK and click Close.
Lists for QuickBooks Transactions
Suggested List Name | List Values | Required or Recommended | Notes |
|---|---|---|---|
QB Accounts | Recommend List is assembly bound | Required by QuickBooks | Used by the Account Name Field |
QB Billable | Values: Yes, No | Not required | Used for bill or vendor credit items and expenses |
QB Class | Recommend List is assembly bound | Not required | Used for item classification |
QB Customer Messages | Recommend List is assembly bound | Required by QuickBooks | Used for message sent from QuickBooks with the invoice |
QB Customer:Jobs | Recommend List is assembly bound | Required by QuickBooks | Used for the customer name |
QB Invoice Items | Recommend List is assembly bound | Required by QuickBooks | Used for the item name |
QB PO Items | Recommend List is assembly bound | Required by QuickBooks | Used for the purchase order item name |
QB QuickBooks Transactions | Values: Bill, Credit Memo, Invoice, Purchase Order, Sales Order, Sales Receipt, Vendor Credit | Required by GlobalSearch | Used for the transaction type |
QB SO Items | Recommend List is assembly bound | Required by QuickBooks | Used for the sales order item name |
QB Terms | Recommend List is assembly bound | Not required for Bills, required for Invoices | Used to define how and when vendors should be paid |
QB Vendors | Recommend List is assembly bound | Required by QuickBooks | Used for the vendor name |
Assembly Bound Lists
In order for GlobalSearch to use data pulled from QuickBooks using QuickSync, an assembly bound list is used to access the QuickSync data. QuickSync pulls data from QuickBooks and uses it to populate a MongoDB database named QuickbooksSync. Each QuickBooks Company database that gets synchronized creates a separate collection and each document in the database is a single QuickBooks record. (If you are not using QuickSync in conjunction with GlobalSearch, you may skip to the “Data from QuickBooks” section at the end of this chapter.)
The Assembly Bound List for QuickBooks is distributed as a dynamic link library (DLL) named MongoListBinder.dll. In addition to the assembly DLL file itself, an assembly bound list is also dependent on an XML configuration file that is user defined. Each assembly bound Field List in GlobalSearch will specify a different configuration file that will be used to configure the connector for that List.
Create Assembly Bound Lists
Log in to the GlobalSearch Web Client Administration page as a database administrator.
Open the Field Catalog and select Lists.
Click Add button in the lower-right corner and enter the name of the List in the List Name text box.
Click the slider to designate the list will use an External Binding.
If prompted, use “Assembly Binding” as the Binding Type.
In the “Assembly Path” text box, specify the path to the MongoListBinder.dll file on the GlobalSearch server.
In the “Assembly Parameters” text box, enter the name of the XML configuration file, without the extension.
Click Test Load to test the connection.
Clicking the Test Load button will load any available data into the list. This is test data only and will not be used to fill the List data when the Field List is accessed in GlobalSearch or GlobalSearch. The data is loaded from the data source when a Field is accessed.
Click Save.
Tip: Use a Task-Specific Folder for Your DLL. Consider putting your DLL file in a task-specific folder within \GetSmart. For example C:\GetSmart\ListBinderForQB\MongoListBinder.dll. Assembly bound XML configuration files must be in the same directory or a subdirectory of the one where the DLL file is located.
Name DLL and XML Files Thoughtfully. The DLL name is specific and does not need to be changed. A new XML file will be created for each list and can be named at your discretion. As with any programming, spaces should be avoided in naming your files. While the DLL does not restrict the file name, it is a good idea to create file names in a manner which makes it clear what the file’s purpose is without having to open it.
For example, for the lists Account, Vendor, and Terms, your files might be: MongoListBinder.dll, MongoABL_Accounts.xml, MongoABL_Vendors.xml, and MongoABL_Terms.xml.
Once you have named the files do not rename them or connections will no longer work properly.
CAUTION: When creating an assembly bound list in GlobalSearch to show QuickSync QuickBooks data, you will need to create separate GlobalSearch Field Lists for each XML configuration file that must correspond to the Transaction fields for the selected QuickBooks Company. For example, if you are creating lists for Account and Vendor in two different QuickBooks Companies, you will need to create four Field Lists.
Also note that QuickBooks configuration allows for only one Company at a time be open for a connection.
Create Configuration Files
Each assembly bound list has a corresponding configuration XML file with the same basic structure, although it needs to be individually configured to access the correct QuickBooks records. The syntax resembles this example:
<ListSetup>
<ConnectionString>mongodb://127.0.0.1</ConnectionString>
<Database>QuickbooksSync</Database>
<Collection>Square 9 Softworks Demo</Collection>
<Search><![CDATA[{$match:{'Value.S9QBItemType':'Account'}}||{$project:{_id:0,'ListValue':'$Value.Name'}}||{$sort:{'ListValue':1}}]]></Search>
</ListSetup>The XML file contains four user-defined parameters:
ConnectionString – The ConnectionString is the URL string to the MongoDB server. If the QuickSync data is not on the GlobalSearch server, specify the correct IP address to point to the proper file instead of using 127.0.0.1.
Database – The Database value is the database, named QuickbooksSync by default. This name can be changed, if you wish.
Collection – A separate Collection is available for each QuickBooks database from which data is pulled. Specify the QuickBooks database name for this collection.
Search – The Search value is the part that actual pulls data back (the command executed to return data). Each stage is separated by two vertical bars ( || ).
Behind the Scenes: The Search statement is embedded in a Character Data (CDATA) section. The tags indicate that the data between them should be interpreted as purely textual and not as XML markup. This prevents the XML parser from erroring on any invalid XML markup embedded in the statement.
Excluding the CDATA section, the Search string syntax resembles this example:
{$match:{'Value.S9QBItemType':'Account'}}||{$project:{_id:0,'ListValue':'$Value.Name'}}
This can be broken down into two separate statements at the two vertical bars:
{$match:{'Value.S9QBItemType':'Account'}}
{$project:{_id:0,'ListValue':'$Value.Name'}}
Edit the $match statement to identify the type of QuickBooks entry.
For example, for data from QuickBooks Accounts, specify Account in this section. For data from Vendors, specify Vendor.
Edit the $project statement to identify the field data in the database to be returned.
In the case above, Name is the field which will be pulled.
An error log named MongoListBinder_errors.log will appear in the same directory as the assembly bound list to aid in configuring the list correctly.
Once the assembly bound lists are created, configure GlobalSearch to bind the lists to the proper Index Fields, as defined in the next section.
Tip: Use a MongoDB Visualizer. Each QuickBooks record type has separate fields. To understand those fields in the database, it is recommend that you view the data using a MongoDB visualizer.
Suggested Parameters for MongoListBinder Configuration Files
List | $match | $project | Notes |
|---|---|---|---|
QB Accounts |
|
| Alternatively can use |
QB Class |
|
| Alternatively can use |
QB Customer Messages |
|
|
|
QB Customer:Jobs |
|
| Alternatively can use |
QB Invoice Items |
|
|
|
QB PO Items |
|
|
|
QB SO Items |
|
|
|
QB Terms |
|
|
|
QB Vendors |
|
|
|
Fields
In order to push data to QuickBooks, there must be Fields in GlobalSearch that correspond to QuickBooks Transaction fields. In the GlobalSearch Field Catalog, create the specific Index Fields and Table Fields shown in the “Fields for QuickBooks Transactions” table. Once Lists have been created, create Fields for indexing data for your documents and then attach the Lists to their corresponding Fields. Refer to the GlobalSearch Configuration Guide for further details on creating Fields and Table Fields.
Note: The availability of some data fields and QuickBooks Transactions (such as Sales Orders) are specific to the version of QuickBooks being used. Consult your QuickBooks documentation for details.
Create Index Fields
The configuration of the Fields must be set exactly as described, including how Fields are named, the case, and any colon or spaces.
Log in to the GlobalSearch Web Client Administration page as a database administrator.
Open the Field Catalog and click the Add button in the lower-right corner.
Enter the appropriate name in the Field Name text box, exactly as shown in the table below.
Select the type of data for the Field from the Data Type drop-down list, as shown in the table.
Under Field Properties, make sure “Required” is checked for Transactions which are required, as shown in the table.
For the “Transaction ID” field, it is highly recommended that “System Field” and “Read Only” are selected, as this field is set automatically.
If a List is needed for your QuickBooks Transaction, assign a List to the Field:
Click “List Options”.
Select “Standard Pick List”.
From the dropdown, select the appropriate Field List for this Field.
Under “List Type” , select Drop Down to ensure that the value meets QuickBooks requirements.
Click OK.
Click Save.
CAUTION: QuickBill uses the name of the GlobalSearch Field to match the data in QuickBooks. It is imperative that the names of the Fields match exactly what is shown below.
Fields for QuickBooks Transactions
Field Name | Data Type | Required or Recommended | Assigned List | Notes |
|---|---|---|---|---|
Account | character | Required by QuickBooks | QB Account | Used for the account name |
AP Account | character | Optional |
| Used for Bills. Supported in GSE 4.5.4+ |
Amount | decimal | Required by QuickBooks |
| Used for the expense line item amount |
Billable | character | Optional | QB Billable | Used for bill or vendor credit items and expenses |
Class | character | Recommended | QB Class | Used for item classification |
Customer Message | character | Required by QuickBooks | QB Customer Message | Used for message sent from QuickBooks with the invoice |
Customer:Job | character | Required by QuickBooks | QB Customer:Job | Used for the customer name, must include the colon |
Customer Sales Tax | character | Optional |
| Used for Customer Sales Tax. Supported in GSE 4.5.4+ |
Description | character | Recommended | Used to describe the item | |
Due Date | date | Recommended | Used for date the invoice is due to be paid | |
Document Type | character | Recommended | Used for the type of document | |
Expense Memo | character | Recommended | Used for notes | |
Invoice Date | date | Recommended | Used for the date the invoice was created | |
Invoice Item | character | Required by QuickBooks | QB Invoice Item | Used for the item name |
Memo | character | Recommended | Used for notes | |
PO Item | character | QB PO Item | Used for the purchase order item name | |
PO Number | character | Recommended | Used for the purchase order number | |
Quantity | decimal | Required by QuickBooks | Used for the quantity of items | |
Quickbooks Transaction | character | Required by QuickBooks | QB Quickbooks Transaction | Used for the transaction type |
Rate | decimal | Required by QuickBooks | Used for the payment rate | |
Reference Number | character | Recommended | Used for the invoice number | |
Sales Tax | character | Optional |
| Used for Sales Tax. Supported in GSE 4.5.4+ |
SO Item |