QuickSync and QuickBill Guide

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

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.

Prompt to install QuickBooks SDK

Enter your Name, Company, and QuickSync license number when prompted.

Prompt for Name, Company, and QuickSync license number

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.

  1. Log in to the GlobalSearch Web client as an administrative user.

  2. Open the GlobalSearch User Management panel.

  3. 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.

  4. Under “Archive Permissions”, ensure that “Full API Access” is selected

  5. Click “Apply Security”.

Adding Full API Access 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.”

  1. Open the Field Catalog and click Lists.

  2. Click the Add button in the lower-right corner.

  3. Enter the name of the List in the List Name text box.

  4. 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.

  5. Click OK and click Close.

Lists for QuickBooks Transactions

Suggested List Name

List Values

Required or Recommended

Notes

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

  1. Log in to the GlobalSearch Web Client Administration page as a database administrator.

  2. Open the Field Catalog and select Lists.

  3. Click Add button in the lower-right corner and enter the name of the List in the List Name text box.

  4. Click the slider to designate the list will use an External Binding.

  5. If prompted, use “Assembly Binding” as the Binding Type.

  6. In the “Assembly Path” text box, specify the path to the MongoListBinder.dll file on the GlobalSearch server.

  7. In the “Assembly Parameters” text box, enter the name of the XML configuration file, without the extension.

  8. Click Test Load to test the connection.

    1. 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.

  9. Click Save.

Example of an Assembly Bound List for Vendors

 

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'}}

 

  1. Edit the $match statement to identify the type of QuickBooks entry.

    1. For example, for data from QuickBooks Accounts, specify Account in this section. For data from Vendors, specify Vendor.

  2. Edit the $project statement to identify the field data in the database to be returned.

    1. In the case above, Name is the field which will be pulled.

    2. 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.

  3. 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

List

$match

$project

Notes

QB Accounts

'Value.S9QBItemType':'Account'

_id:0,'ListValue':'$Value.Name'

Alternatively can use '$Value.FullName'

QB Class

'Value.S9QBItemType':'Class'

_id:0,'ListValue':'$Value.Name'

Alternatively can use '$Value.FullName'

QB Customer Messages

'Value.S9QBItemType':'CustomerMsg'

_id:0,'ListValue':'$Value.Name'

 

QB Customer:Jobs

'Value.S9QBItemType':'Customer'

_id:0,'ListValue':'$Value.Name'

Alternatively can use '$Value.FullName'

QB Invoice Items

'Value.S9QBItemType':'Item'

_id:0,'ListValue':'$Value.Name'

 

QB PO Items

'Value.S9QBItemType':'Item'

_id:0,'ListValue':'$Value.Name'

 

QB SO Items

'Value.S9QBItemType':'Item'

_id:0,'ListValue':'$Value.Name'

 

QB Terms

'Value.S9QBItemType':'Terms'

_id:0,'ListValue':'$Value.Name'

 

QB Vendors

'Value.S9QBItemType':'Vendor'

_id:0,'ListValue':'$Value.Name'

 

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.

  1. Log in to the GlobalSearch Web Client Administration page as a database administrator.

  2. Open the Field Catalog and click the Add button in the lower-right corner.

  3. Enter the appropriate name in the Field Name text box, exactly as shown in the table below.

  4. Select the type of data for the Field from the Data Type drop-down list, as shown in the table.

  5. 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.

  6. If a List is needed for your QuickBooks Transaction, assign a List to the Field:

    1. Click “List Options”.

    2. Select “Standard Pick List”.

    3. From the dropdown, select the appropriate Field List for this Field.

    4. Under “List Type” , select Drop Down to ensure that the value meets QuickBooks requirements.

    5. Click OK.

  7. 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

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