Sync Quickbooks to Salesforce

I've been working to implement the Quickbooks for Salesforce app for a few months. It has been very challenging, to say the least. As a consultant, I could have blown out my budgeted hours for the whole month in the first week. I have, however, cobbled together a working solution for my client. Thankfully, they did not witness the sausage-making process. My client used QB for manufacturing v13 (for now!).

Here is what I found:

You must be running the desktop version of QB. You must provide a separate PC with QB running on it This PC (no MACs) must logged in at all times for the sync to work. Welcome to the '90s!

Numerous technical-documentation errors:

  • The core data mapping doc was rife with flat out errors, and I don't mean typos.
  • The App upgrade doc, which was published in the last month, was incorrect. It didn't show accurate screenshots of the required steps
  • The upgrade doc required me to update validations rules which were supposed to have been created during the app upgrade, and yet were not ever created.
  • You cannot test any updates in a sandbox

If you print sales orders - neither the Account name nor the Opp name can be added to the printed page. Since printing is by a (fairly locked down) template, there is no way to add the fields to the template for Account or Opp name.

At each sync, QB will overwrite standard field values you've entered. These fields include:

  • Ship date: The sync date replaces the entered (client-requested) ship date. Ship date was a vital count-backward field for the production calendar. Support's advice: "..Just create a custom field [which do not sync]." Fine, except we NEED that info in QB.
  • Close date: The sync date replaces the calculated close date (used by production). That is horrible for us - as we have a 30-day production cycle and key it off this date.
  • Opportunity Stage: This one is maddening. Every Opp synced and every Sales Order (originating via the website) had it's stage set back to prospecting. This started after the app upgrade. It was not in the documentation. I specifically pushed the support people to state if there were any (other than given) ramifications to the update. They said "none". They said they were sure. Within a day of the App update, we reached our hourly limit for processing workflow time triggers.
  • Ship method. The field is overwritten with whatever is on the account or default on new accounts in QB (i,e, the first value). Again, our customer has selected the ship method per-order and the salesperson enters it in salesforce. Intuit support fully expect you to *manually change the ship date and ship method on every single Opp synced to QB*, if you don't like their arbitrary entry. We have a dozen ship method across all carriers, countries, rates.

A partial solution: I used workflows, concatenations, and formulas to cram all the needed info into the 'product description' field which does sync.

Here are a few pieces of logic: We needed to add back in the Ship Date, Ship Method and a Production Code (customization code) to item-specific line items:

Rule trigger:

OR(ISCHANGED(PRODUCTION_Code__c),(NOT(ISNULL(PRODUCTION_Code__c))))

[Add Ship and Code to line item desc:]

IF( PricebookEntry.Product2.Name = "SHIPPING", 

"Ship date: " & (TEXT(Opportunity.Shipping_Date__c)) + (BR()) & "Ship Method: " 
& (TEXT(Opportunity.Ship_Method__c )), 

PricebookEntry.Product2.Description  + (BR()) &   PRODUCTION_Code__c)

Since QB would overwrite the line item desc on each sync cycle, I set up a dummy field to pass info back and forth, So it the field changes, copy back ie info.

IF(OR(ISCHANGED(PRODUCTION_Code__c),(NOT(ISNULL(PRODUCTION_Code__c)))),
PricebookEntry.Product2.Description + (BR()) & PRODUCTION_Code__c ,
(BLANKVALUE(PRODUCTION_Code__c, NULL)))