Follow these steps to set up the Exact Online integration between GoMeddo Subscription Management aand Exact Online.
1. Create a Connected app in Exact Online.
Use the following steps to create a connected app in Exact Onlinehttps://support.exactonline.com/community/s/knowledge-base#All-All-DNO-Process-appcenter-eol-appcenter-dev-registerapp-p. When creating a new connected app, set the Redirect URI to a mock value, like https://www.gomeddo.com .
Make sure to note down the Client Id and Client secret, you need these in step 2.
2. Create an Auth. Provider in Salesforce.
In Setup, navigate to Identity -> Auth. Providers and click “New”. Create an Auth. Provider with the following settings. The values for Consumer Key and Consumer Secret should be copied from the fields Client ID and Client Secret of Connected app that was created in the first step.
...
After the Auth. Provider is saved, copy the value of “Callback URL” from Salesforce to the Redirect URI field in the connected app in Exact Online (which you filled with the mock value in step 1).
3. Create a Named Credential in Salesforce.
In Setup, navigate to Security -> Named Credentials, and at the top right, click “New Legacy”. Create a Named Credential with the following settings:
We will set up a connection to https://start.exactonline.nl, depending on your country this URL can change (for example for Germany we use https://start.exactonline.de).
...
After saving the Named Credential you will be redirected to Exact Online, where you will be asked to confirm the connection between Salesforce and Exact Online.
4. Update fields on the administration
You need to provide a couple of details on the administration record in GoMeddo Subscription Management related to the data that you want to sync with Exact.
Named Credential - Fill in the name of the Named credential created in step 3 (Exact in the example)
Balance Sheet For Debtors - The standard balance sheet used for debtors
Default Ledger Account - The standard ledger code
Sales Journal - The Sales Journal (you can find this under Master data under Journals in Exact, enter the code of the journal on which the sales invoices must be entered)
Company code - You need to fill this with the value of the division id in exact online. To find this:
Go to Exact Online click on the administration selector and click ‘all options’
Hover the administration from the list, in the url you will find the division id.
When not using article mappings in Salesforce, ensure an article called STANDAARD exists. In older versions of Exact Online, this was created by default. However, in newer versions, you need to create it manually.
5. Update Data to make sure data is mapped between GoMeddo Subscription Management and Exact.
Now that you've established a connection between GoMeddo Subscription Management and Exact Online, it's essential to configure some data to ensure the connection functions properly.
Accounts: Create debtor numbers by assigning them to an account, indicating their corresponding debtor number in Exact Online if a debtor already exists in Exact Online. Utilize the "manage debtor numbers" action on the account for this.
Products: Similarly, manage products by using the "Manage Administrations" button on a Product in Salesforce. Through this, assign a ledger, ensuring it is of type Profit & Loss in Exact Online.
VAT Codes: these are related to the administration. in Exact Online you can find these under Master data (Stamgegevens in the screenshot below).
...
Make sure to include the leading zeros in the value if it is a number. For each VAT Rate, you require a corresponding VAT Code in GoMeddo Subscription Management under administration. In the image below you will find our VAT Code is VBI.
...
6. (Optional) Schedule the Job_GetOpenAmounts to retrieve the open amounts from Exact
Under the tab “GoMeddo Jubscription Jobs” you are able to schedule various tasks. One of them is a task to retrieve the open amount from your finance system. The name of this job is Job_GetOpenAmounts. If you schedule this from the page everyday the system will retrieve the open amounts from Exact Online.
...
🎉 After this the connection has been set up. You are now able to create debtor numbers in exact from Salesforce (or map account to existing debtor numbers) and invoices will be synced between GoMeddo and Exact Online.
Sync overview
The following fields sync between GoMeddo Subscription Management and Exact Online.
Exact field | Salesforce field | Notes |
---|---|---|
DEBITEUR | ||
Name | Account.Name | |
Account.Subscription25__Billing_Email_Address__c | Formula field referencing: Account.Subscription25__Billing_Attendant_To__r.Email | |
Phone | Account.Phone | |
VATNumber | Account.Subscriptoin25__VAT_Number__c | Configurable in a custom setting: CLIENT_VAT_NUMBER_FIELD |
BankAccount > IBAN | Account.Subscription25__IBAN__c | Configurable in a custom setting: |
ChamberOfCommerce | Configurable in a custom setting: CLIENT_ACCOUNT_COC_FIELD | |
SalesPaymentCondition | Configurable in a custom setting: CLIENT_ACCOUNT_PAYMENT_METHOD_FIELD | |
Addresses – Billing | Account.BillingAddress | |
Addresses – Visiting | Account.Subscription25__Visiting_Street__c etc. | Standard address in Exact can be set in a custom setting: |
Addresses – Shipping | Account.ShippingAddress |
...
Exact field | Salesforce field | Notes |
INVOICE LINE | ||
Item (Artikel) | Fixed value “STANDAARD” | Configurable in a custom setting: CLIENT_ARTICLE_FIELD |
GLAccount | Subscription25__Ledger_Number__c | Via Subscription25__Administration_Product__c object |
UnitPrice | OrderItem.UnitPrice | |
Quantity | OrderItem.Quantity | |
VAT | Subscription25__VAT_Code__c | Via Subscription25__Administration_Product__c and Subscription25__VAT_Code__c objects |
StartDate | OrderItem.ServiceDate | Only if it does not fall in the same month as the invoice date |
EndDate | OrderItem.EndDate | Only if it does not fall in the same month as the invoice date |
Description | OrderItem.PricebookEntry.Product2.Name – OrderItem.Description | Configurable in a custom setting: CLIENT_INVOICE_LINE_DESCRIPTION_FIELD |
Note | Configurable in a custom setting: CLIENT_INVOICE_LINE_NOTES_FIELD | |
Costcenter | Configurable in a custom setting: CLIENT_COST_CENTER_FIELD | |
Costunit | Configurable in a custom setting: CLIENT_COST_UNIT_FIELD |
Create a Connected app in Exact Online.
Use the following steps to create a connected app in Exact Onlinehttps://support.exactonline.com/community/s/knowledge-base#All-All-DNO-Process-appcenter-eol-appcenter-dev-registerapp-p. When creating a new connected app, set the Redirect URI to a mock value, like https://gen25.com.
Create an Auth. Provider in Salesforce.
In Setup, navigate to Identity -> Auth. Providers and click “New”. Create an Auth. Provider with the following settings. The values for Consumer Key and Consumer Secret should be copied from the fields Client ID and Client Secret of Connected app that was created in the first step.
...
After the Auth. Provider is saved, copy the value of “Callback URL” from Salesforce to the Redirect URL to the Redirect URL field in the connected app in Exact Online.
Create a Named Credential in Salesforce.
In Setup, navigate to Security -> Named Credentials, and at the top right, click “New Legacy”. Create a Named Credential with the following settings:
We will set up a connection to https://start.exactonline.nl, depending on your country this URL can change (for example for Germany we use https://start.exactonline.de).
...
After saving the Named Credential you will be redirected to Exact Online, where you will be asked to confirm the connection between Salesforce and Exact Online.
TIM ALLES HIERONDER MAG WEG
...
You now have to create an Auth. Provider of type Open ID
Create a Named Credential
And specify the name of that named credential on your administration
Create OAuth Token
To set up the Salesforce to Exact Online integration, we require an OAuth Token to be present. The OAuth Token can be created by running the following piece of code in the Anonymously in the Developer Console.
...
The id that is logged on line 8 will be important for the next step, make sure you write it down. In the rest of the document, we reference this id by using <ID>.
We will set up a connection to https://start.exactonline.nl, depending on your country this URL can change (for example for Germany we use https://start.exactonline.de).
Code Block | ||
---|---|---|
| ||
Subscription25__OAuth_Token__c oAuthToken = new Subscription25__OAuth_Token__c();
oAuthToken.Name = 'Exact Online';
oAuthToken.Subscription25__Client_Id__c = '-';
oAuthToken.Subscription25__Client_Secret__c = '-';
oAuthToken.Subscription25__Endpoint__c = 'https://start.exactonline.nl';
Database.insert(oAuthToken);
system.debug(oAuthToken.Id); |
Navigate to the following URL, replacing <ID> with the Id of the record you just created, http://login.salesforce.com/apex/Subscription25__OAuth?tokenId=<ID>
You are now redirected to a new page, copy the URL of that page.
The URL should look something similar to https://<YOURDOMAIN>.visualforce.com/apex/OAuth?tokenId=<ID>
Create Exact App Centre OAuth App
Log into Exact App centre on https://apps.exactonline.com/, press manage my apps in the top right corner.
...
Press register an app, give it the name “Salesforce”, for the redirect URI use the URL we just copied. Accept the terms and press Register.
You will see the page, from this page we will need to copy the Client ID and the Client Secret.
...
Update OAuth Token
Navigating back to the developer console of Salesforce, run the following piece of code. Replace <ID> with the id of the token from Salesforce, replace <CLIENT_ID> with the Client ID copied from the Exact Authorisation Details above, replace <CLIENT_SECRET> with the Client Secret copied from the Exact Authorisation details.
Code Block | ||
---|---|---|
| ||
Subscription25__OAuth_Token__c OAuthToken2 = [
SELECT Subscription25__Client_Id__c, Subscription25__Client_Secret__c
FROM Subscription25__OAuth_Token__c
WHERE Id = '<ID>'
];
oAuthToken2.Subscription25__Client_Id__c = '<CLIENT_ID>';
oAuthToken2.Subscription25__Client_Secret__c = '<CLIENT_SECRET>';
Database.update(OAuthToken2); |
Create a remote site setting
Salesforce will communicate from Salesforce to Exact Online by using an URL which should be whitelisted in your remote site settings of Salesforce, in this example we use https://start.exactonline.nl. Which might change based on your Exact instance.
Info |
---|
Salesforce explains how to create a remote site setting on this page: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_callouts_remote_site_settings.htm
|
A remote site setting would look something like this:
...
Activate the token
Navigate back to the URL you used before to grab the URL: http://login.salesforce.com/apex/Subscription25__OAuth?tokenId=<ID>
Press the Authorize button. You are navigated to Exact Online and might to log in again. After you’ve done this you need to accept the terms:
...
After you’ve done this you are redirected to Salesforce and will need to press the Get Refresh Token button. You will get a success notification after you’ve done this.
...
Reset authentication
In some rare cases, the authentication of Exact Online expires. To reset it, navigate to Setup, then Security -> Named Credentials. Select the record you created for your administration. If you can't remember which one, check the Administration record and look for the name in the Named Credential field.
Press 'Edit' and save the record. Make sure 'Start Authentication Flow on Save' is enabled. This will open the exact Online login screen. If needed, log in and accept the terms. Once you've logged in, you'll be redirected to Salesforce and the connection will be up and running again.