Background info:
What is Sync Manager?
Intuit Sync Manager securely uploads your QuickBooks company file data and downloads the changes made to this data by Intuit dataservices, thereby keeping the data ‘in sync’.
When you subscribe to any of the services that require access to your QuickBooks company file data, you need to set up your company file for sync. This feature is available only for QuickBooks 2009 or later.
What Intuit Sync Manager does not do:
- Intuit Sync Manager does not keep two copies of company files in sync. It only keeps your data in QuickBooks and the online applications (such as QBConnect) in sync.
- Intuit Sync Manager does not keep an online backup of your file. It only stores the data online and this is not in a format that can be restored to your QuickBooks.
FAQ's on sync manager:
How does sync work with respect to dataservices ?
Let's take two examples in my first example I am adding a customer to QuickBooks desktop. The only way you can retrieve this customer via dataservices is by first syncing your QuickBooks company file that has this data using sync manager. if you do not sync, then this data is not available on the cloud.i.e. if I do retrieve all customers, this customers is not available yet.
Once the data is synced, it is now available on the cloud. For retrieving objects using dat Services please look at https://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0050_Data_Services/0500_QuickBooks_Windows/0100_Calling_Data_Services/0015_Retrieving_Objects
In my second example, I am adding a customer using dataservices, in this case until you sync, you will not get this data in QuickBooks. But the point to note here is if I do retrieve all customers via dataservices, before my sync, I will be able to retrieve that customer because it is there on the cloud but not synced with QuickBooks.
In my customer object look for the field "<Synchronized>", if it is true, it means this object has been synced.
Now a very common question that may come to your mind is what If I have an object(customer in our case)in QuickBooks and I add the same object(customer) using dataservices. What happens now ? If you add the same object using dataservices that already exists in your QuickBooks and your company file is synced , dataservices will throw an error stating you cannot have object with the same name.
This case holds true for update too. The only way to update an existing object in QuickBooks using dataservices is first sync your company file then modify the object using dataservices, now sync again for it to be reflected in your QuickBooks company data.
For an object created on cloud, never synced before you can modify that object without syncing but it will not show up at all on your QuickBooks. In order to see the data you need to Sync.
(Optional)
Let's get deeper into code level.
1) My application calls Intuit dataservices to add a Customer.
<Add xmlns="http://www.intuit.com/sb/cdm/v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
RequestId="b19VbjuoNJOCaaYdZLjKaa22bWirJn5G"
xsi:schemaLocation="http://www.intuit.com/sb/cdm/v2 ./RestDataFilter.xsd ">
<OfferingId>ipp</OfferingId>
<Object xsi:type="Customer">
<Synchronized>false</Synchronized>
<TypeOf>Person</TypeOf>
<Name>Cloud customer</Name>
<Address>
<Line1>123 Street</Line1>
<Line2>Apt 123</Line2>
<City>Toronto</City>
<Country>Canada</Country>
<Default>1</Default>
<Tag>Billing</Tag>
</Address>
<Active>true</Active>
<ShowAs>Whisky canada</ShowAs>
<OpenBalance>
<CurrencyCode>USD</CurrencyCode>
<Amount>0</Amount>
</OpenBalance>
<OpenBalanceDate>2011-11-21</OpenBalanceDate>
<JobInfo>
<Status>None</Status>
</JobInfo>
</Object>
</Add>
2) I get the response for this that customer added
<?xml version="1.0" encoding="UTF-8"?>
<RestResponse xmlns="http://www.intuit.com/sb/cdm/v2">
<Success RequestId="b19VbjuoNJOCaaYdZLjKaa22bWirJn5G">
<PartyRoleRef>
<Id idDomain="NG">2640547</Id>
<SyncToken>1</SyncToken>
<LastUpdatedTime>2011-12-15T23:11:37Z</LastUpdatedTime>
<PartyReferenceId idDomain="NG">3463181</PartyReferenceId>
</PartyRoleRef>
<RequestName>CustomerAdd</RequestName>
<ProcessedTime>2011-12-15T23:11:37Z</ProcessedTime>
</Success>
</RestResponse>
3) Now I sync, and after that I see object in quickbooks.
4) Retrieve this customer using dataservices (I am using <Id idDomain="NG">2640547</Id> for retriveing)
<?xml version="1.0" encoding="UTF-8"?><!–XML GENERATED by IntuitDataSyncEngine (IDS) using SBDomainServicesCDMbranches3.9.0-rel-1–>
<RestResponse xmlns="http://www.intuit.com/sb/cdm/v2"
xmlns:xdb ="http://xmlns.oracle.com/xdb"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://www.intuit.com/sb/cdm/v2 ../common/RestDataFilter.xsd"><Customers>
<Customer>
<Id idDomain="NG">2640547</Id>
<SyncToken>2</SyncToken>
<MetaData>
<CreatedBy>app</CreatedBy>
<CreateTime>2011-12-15T23:12:53.0Z</CreateTime>
<LastModifiedBy>app</LastModifiedBy>
<LastUpdatedTime>2011-12-15T23:12:53.0Z</LastUpdatedTime>
</MetaData>
<ExternalKey idDomain="QB">19</ExternalKey>
<Synchronized>true</Synchronized>
<PartyReferenceId idDomain="NG">3463181</PartyReferenceId>
<TypeOf>Person</TypeOf>
<Name>Cloud customer</Name>
<Address>
<Id idDomain="QB">00000000000001OX</Id>
<Line1>123 Street</Line1>
<Line2>Apt 123</Line2>
<City>Toronto</City>
<Country>Canada</Country>
<Default>1</Default>
<Tag>Billing</Tag>
</Address>
<Active>true</Active>
<ShowAs>Cloud customer</ShowAs>
<OpenBalance>
<CurrencyCode>USD</CurrencyCode>
<Amount>0</Amount>
</OpenBalance>
<JobInfo>
<Status>None</Status>
</JobInfo>
</Customer>
</Customers></RestResponse>
5) I need to modify my customer name using dataservices, mod request below
<Mod xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" RequestId="21c0d7b9ffah420bb4d8ad3221cbe3f9" xsi:schemaLocation="http://www.intuit.com/sb/cdm/V2./RestDataFilter.xsd ">
<OfferingId>ipp</OfferingId>
<ExternalRealmId>310459160</ExternalRealmId>
<Customer>
<Id idDomain="NG">2640547</Id>
<SyncToken>3</SyncToken>
<MetaData>
<CreatedBy>app</CreatedBy>
<CreateTime>2011-12-15T23:12:53.0Z</CreateTime>
<LastModifiedBy>app</LastModifiedBy>
<LastUpdatedTime>2011-12-15T23:12:53.0Z</LastUpdatedTime>
</MetaData>
<ExternalKey idDomain="QB">19</ExternalKey>
<Synchronized>true</Synchronized>
<PartyReferenceId idDomain="NG">3463181</PartyReferenceId>
<TypeOf>Person</TypeOf>
<Name>Cloud customer mod request</Name>
<Address>
<Id idDomain="NG">2034930</Id>
<Line1>123 Street</Line1>
<Line2>Apt 123</Line2>
<City>Toronto</City>
<Country>Canada</Country>
<Default>1</Default>
<Tag>Billing</Tag>
</Address>
<Active>true</Active>
<ShowAs>Cloud customer</ShowAs>
<OpenBalance>
<CurrencyCode>USD</CurrencyCode>
<Amount>0</Amount>
</OpenBalance>
<JobInfo>
<Status>None</Status>
</JobInfo>
</Customer>
</Mod>
6) Sync to see the changes on QuickBooks
I have understood sync manager and have a QBO app, can I use the same app to configure for QuickBooks Desktop also?
Yes, you can use the same app for both QuickBooks desktop and QuickBooks online.
The only change you need to do
For Federated app –> manage you app–. advanced setting –> Intuit data services
For Intuit Anywhere –> manage your app
What are the changes I need to do in my app code?
To ease your job we offer various devkits (java, .Net etc), which offers wrapper classes over the dataservices. You can now retrieve data with QBO or QBD realm, authentication info and call to respective QBO or QBD classes.
To use dataservices directly, you will need to call respective dataservices via Intuit provided REST endpoints.
Devkits downloads: https://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0025_Intuit_Anywhere/4000_Downloads_for_IA/8000_IPP_DevKits
Next-steps, try it out
Try out our sample apps , enable it for both QuickBooks online and desktop , use the dev-kits .
IA helloWorld https://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0025_Intuit_Anywhere/4000_Downloads_for_IA/2000_Hello_World_IA
Federated helloWorld: https://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0040_Federated_Apps/Hello_World_Federated_App
Thanks,
Minal Khodani
Senior Apps Support Specialist, Intuit Partner Platform
Leave a Reply