Salesforce Integration with Navision
Microsoft Dynamics Navision (NAV) is an enterprise resource planning (ERP) product that helps small and medium-sized businesses centrally manage their financials and streamline operations. We recently implemented a comprehensive Salesforce Field Service Lightning (FSL) solution with a 2-way integration with NAV for one of our clients. They went live 3 weeks after the start of implementation. I’ve put together an overview of how we did it.
- Microsoft Dynamics NAV: work order creation and invoicing
- Salesforce Service Cloud with FSL: work order dispatch and completion
- Integration type: 2-way, asynchronous (but close to real-time) integration
- Integration tool: Talend Open Source ETL
The Customer Service team receives hundreds of customers’ enquiries on a daily basis and lodge corresponding work orders into NAV. When ready to be dispatched to technicians, work order documents are printed from NAV and handed to the technician. Once the work order was completed manually, the paperwork was handed over to the back office so the invoices could be manually generated through NAV.
The requirement was to remove this manual paperwork and automate the full process in FSL.
Building this functionality in Salesforce required some time as the proper business flows had to be rebuilt in Salesforce with the customer hierarchy and the invoicing fully integrated as well. Time was one of the key components we were lacking, and the customer wanted to manage work orders using the FSL app as soon as possible. Even though the work order management needed to be done in FSL, the customer still wanted to capture the work order in NAV as the financials related to the work order were completed in NAV.
From the back office perspective, work order data would still be entered in NAV and when the work order becomes ‘Ready for Action’, it would flow to Salesforce. In addition, the work order status needed to be set as ‘Allocated’ in NAV to indicate the process was happening in Salesforce. We didn’t want the customer to do any double data entry so they had to create the same work order with the respective customer structure in Salesforce. In order to remove manual data entry, the next option was to build an integration between these two systems.
As this NAV integration was only temporary, the objective being to go live with Field Service Lightning as early as possible to get early ROI, we wanted to avoid unnecessary costly integration solutions.
In the market, there were a couple of tools which were already available for the integration between Salesforce and NAV, but all of them were associated with a cost. We didn’t want to recommend a tool which had licensing associated to it because they will only use this integration until we develop the full functionality in Salesforce. The NAV system that customer was using was very old and didn’t have the API support. Because of that, we investigated other options and found Talend was the winning tool.
INTEGRATION PATTERN: Batch Data Synchronisation
INTEGRATION FREQUENCY: Close to real time
- Micro Datanet
- Microsoft Dynamics NAV Integration for Salesforce by RapidiOnline
- Talend cData Driver
- Talent Open Source IDE
Microsoft Dynamics Navision is hosted in a MS SQL Server Database. Talend is an open source IDE which can be used for the integration between Salesforce and MSSQL server as the connectors are freely available. Using the open source Talent IDE we build a JAR which did the following:
- Connect to MSSQL DB
- Get all the work orders which are ready for allocation
- Create a csv temp file which had all the work order details and stored in the server
- Connect to Salesforce
- Create the work order in Salesforce using the temp file in step 3
- If no errors are given using the file in step 3 we update the work order status to allocated in MSSql DB
- If any errors are found then the errors will be written to a file which will be emailed
- Finally the cleanup will be done for the temporary files
The Talend Job will look as follows:
As this is JAR file then we can schedule in the server using the windows task scheduler for the frequency required.