Tag Archives: MYOB integration

MYOB: Problem accessing unregistered company file

We encountered an MYOB error saying “[MYOB ODBC] – This company file has not been registered for ODBC Access.” when installing one of our ReadyMade product, RIO Finance desktop client for our customer.

After contacting the MYOB support, we realized that the customer has to contact MYOB team to enable the ODBC access feature in their company file. The customer will still have to do it even though we have the MYOB developer key (which can be obtained by joining the MYOB Partner program) which can read and write information into a company file.

Integrating to MYOB AccountRight


URL http://myob.com.au/
Description On-premise Accounting Application
Trial Version with API Access Yes.
Protocol Microsoft ODBC
Data Format SQL and Stored Procedures
Authentication MYOB user and password authentication and/or partner OEM key (if requires writing to MYOB)
API Limits No limit.
Sample Use Case Salesforce Opportunity > Creates/Updates > MYOB Sales Order or Invoice
MYOB Item > Creates/Updates > Salesforce Product
Salesforce Account/Contact > Creates/Updates > MYOB Customer Card
F2I 2.9

MYOB Integration: AccountRight 2011 ODBC connection error

Recently I was helping my development team to do some testing of our Salesforce-MYOB ReadyMade product to see if it is compatible with the latest ODBC driver “MYOB_AccountRight_2011” released by MYOB.

After installing the ODBC driver in my machine, I created a new System DSN with the ODBC driver. As soon as I clicked on the “Test Configuration” button to test the connection, I received a popup message as shown below:

The same error can also be found in the MYOB ODBC log file (the log file is located in <MYOB AccountRight 2011 installation folder>/ODBC_Inst/Logging/OpenAccessSDK60_Net_xxxxxxxx.log):

SQLDRV :  [TID: 1EF8]:[Fri Aug 17 12:09:16.015 2012] ndam.cpp:2850: [IP] Error 0: There was no endpoint listening at http://localhost:6961/GatewayService.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
SQLDRV :  [TID: 1EF8]:[Fri Aug 17 12:09:16.015 2012] net_drv.cpp:560: Error from ipConnect()
SQLDRV :  [TID: 1EF8]:[Fri Aug 17 12:09:16.016 2012] damdrv.c:615: sqldrv_connect(): IP connect() returned error while connecting to datasource:Test

I couldn’t find more information about this error in the Internet, but fortunately I am able to find out the root cause. I realized that MYOB has installed a Windows service named “MYOB AccountRight Server 2011.1” in my machine during the installation. This Windwos service acts as a communication bridge between the MYOB Application/ODBC driver and the company file and it has to be “Started” all the time. Otherwise, you will encounter the error mentioned above and you won’t be able to launch the MYOB AccountRight application correctly.

Hopefully this helps those who encounters the same issue!

MYOB & database.com come together to expose MYOB data to the cloud

Thinking about a cloud database?  Why not look at database.com, if you are a Salesforce developer or you are familiar with Salesforce, you’ll find it simple to use.

Check out a brief summary of some recent work we have completed using database.com  to expose MYOB Accounting data to the cloud http://www.wdcigroup.net/wedidintegration_myob_databasecom.html.

MYOB Integration: Extracting total sales data

Here’s a couple of examples you might find helpful if integrating with MYOB.
The following query extracts the total sales from July 2011 to June 2012.
SELECT SUM(TotalTax + TotalLines – TotalDiscounts) As TotalSales from Sales WHERE InvoiceDate BETWEEN ‘2011-07-01’ AND ‘2012-06-30’

|    TotalSales   |
|      29223.5     |
You can also group them by Sales Person.

SELECT Cards.Name As SalesPerson, SUM(TaxExclusiveFreight + TotalTax + TotalLines – TotalDiscounts) As TotalSales from Sales INNER JOIN cards on Sales.SalespersonID = Cards.CardRecordID WHERE InvoiceDate BETWEEN ‘2011-07-01’ AND ‘2012-06-30’ GROUP BY Cards.Name

|    SalesPerson      |       TotalSales       |
|    Deborah Brook  |          14520           |
|    Donal English     |         4503.5          |
|      Terry Ooi         |          10200           |

Extracting Data from MYOB : Total Sales

There are ways to extract data like total sales from MYOB (Database) and generate this data into useful information for the company. Here is one of the ways.

First, we may need to query all the sales data from MYOB by filtering them by type of invoice.

The next step, we can sum up the total amount of all these invoices of this type (credit). By doing this, it will return you the total account receivable.

In addition, we can acquire the sum of the overdue invoices from data mentioned above. In order to achieve this, we will have to compare each of the invoices by their due dates to the current date.

Using Salesforce & MYOB, need to sync Items to Products?

In our attempt to rival Universal Studios, we’ve been at it again, creating videos of some of our ReadyMade integration solutions.  Check out our latest video on how easy it is to integrate Salesforce & MYOB.

Want to know more about how to get Salesforce & MYOB talking? contact us or check out our other MYOB demos and information on our website.

Get the popcorn, sit back, relax and watch our videos.

Sure, they are not going to win any Oscars, but if you’re interested in Salesforce integration to 2 of the most popular accounting packages around, take a look at our Salesforce to Saasu and Salesforce to MYOB ReadyMade integration solutions.  Oh and yeh, you won’t need a big bowl of popcorn cos they only last a few minutes each.

MYOB Integration Tips

The first problem that we had while integrating MYOB with another system was importing multiple Cards with the same name into MYOB as different Cards.

In the standard MYOB interface, it allows you to create two new Cards with the same name. However, this is retricted when the cards are created via the ODBC import function. For example:

insert into import_customer_cards (CoLastName, FirstName, InvoiceDelivery)
values ((‘Andy’, ‘Cole’, ‘B’), (‘Andy’, ‘Cole’, ‘P’))

This import statement will only create one Card “Andy, Cole”. The reason being is that MYOB will create a new card “Andy, Cole” using the first “value” and update the same card again using the second “value”. This is not ideal if we happen to have two customers that have the same name.

To fix this issue, we needed to add the “CardId” field to the import statement as an unique identifier for the cards. For example:

insert into import_customer_cards (CoLastName, FirstName, InvoiceDelivery, CardId)
values ((‘Andy’, ‘Cole’, ‘B’, ”), (‘Andy’, ‘Cole’, ‘P’, ‘0001’))

WDCi featured in Talend Newsletter

WDCi is an OEM partner with Talend, the leader in open source integration and ETL.  The Talend ETL tool is used by WDCi in both our consulting and some of our pre-built integration solutions, check out the November edition of the Talend Newsletter .

Many thanks to Solatube for participating as well.  Solatube has worked closely with us to refine one of our solutions (MYOB-Salesforce).  Nothing can replace real use-case details, especially when you are trying to pre-build and package a business process to suit hundreds of organisations.