The Factorial - Sage 100 France | Congés & Absences Payés template sends approved leave and absences from Factorial to Sage 100 France (v9) automatically. BrynQ reads the approved absences in Factorial, compares them with what is already in Sage, and sends only the changes in an import file per Sage company, <dossier>_ABSENCES.xlsx. The BrynQ Agent on your Sage server imports it with ConnectImport.
Sage can only add events through an import. It cannot change or delete one. So BrynQ never edits Sage: on every run it counts each absence in Factorial and in Sage, and sends only the events needed to make the two counts equal. To take an absence away, it sends a cancellation event.
For each absence, BrynQ counts how many times it is in Sage. Every event counts +1. Every cancellation event of the same code (the code in its Nature d'annulation field, for example 9950 for 0950) counts −1. An absence that was imported and later cancelled therefore counts 0: for BrynQ it is no longer in Sage. Then:
Examples, for one employee and one absence:
| Situation | Factorial | Sage | BrynQ sends |
| A new absence is approved | 1 | 0 | The absence |
| The next run, nothing changed | 1 | 1 | Nothing |
| The absence is deleted or refused in Factorial. It was imported in this cycle | 0 | 1 (this cycle) | A cancellation event (for example 9950) |
| The same, but it was imported in an earlier cycle | 0 | 1 (earlier cycle) | Nothing. See Day to day. |
| The dates, leave type or motif change. The old version was imported in this cycle | new 1, old 0 | new 0, old 1 | The new absence and a cancellation of the old one, in the same file |
| The same change, but the old version is from an earlier cycle | new 1, old 0 | new 0, old 1 (earlier cycle) | Only the new absence. See Day to day. |
| Only the half day changes | 1 | 1 | Nothing. See Day to day. |
| An absence that BrynQ cancelled earlier is approved again | 1 | 1 − 1 = 0 | The absence again |
| The absence is in Sage twice, both in this cycle | 1 | 2 | One cancellation event |
| The absence was entered by hand in Sage (same matricule, code, motif and dates) | 1 | 1 | Nothing: no duplicate |
| An event entered by hand in Sage with this run's date of validity is not in Factorial | 0 | 1 (this cycle) | A cancellation event. If that event's code has no Nature d'annulation, the run stops instead. |
| The deleted absence was the employee's last approved absence in Factorial | 0 | 1 | Nothing: BrynQ no longer checks this employee. See Day to day. |
Every event BrynQ sends gets a date of validity: your answer in the Configuration tab, counted from the day of the run. Events with the date of validity of the current run are this cycle. Example with Premier jour du mois suivant: every run in October uses 01/11, so in October BrynQ can still cancel and correct what it sent in October. From 1 November the runs use 01/12. What was sent in October is then an earlier cycle, and BrynQ no longer cancels it.
The steps switch between several places. Each step starts with a 📍 Where label:
| 📍 Label | What it is |
| BrynQ | The BrynQ platform in your browser (https://your-slug.app.brynq.com). |
| Factorial | Factorial in your browser. |
| Sage 100 France | The Sage application, opened on the Windows server, in the dossier (PRH file) the absences go to. |
| Windows server | The computer on which Sage 100 France and the BrynQ Agent are installed. |
| Step | What you do | 📍 Where | Who |
| 1 | Create the interface from the template | BrynQ | BrynQ administrator |
| 2 | Fill in the configuration | BrynQ, Configuration tab | BrynQ administrator, with payroll for the date of validity |
| 3 | Start in dry mode | BrynQ, interface > Settings | BrynQ administrator |
| 4 | Complete the scenario | BrynQ, Scenarios tab, with Sage 100 France open to look up the codes | BrynQ administrator, with payroll |
| 5 | Create the cancellation codes in Sage | Sage 100 France | Payroll (Sage administrator) |
| 6 | Add the authorizations | BrynQ, Authorizations | BrynQ administrator and Factorial administrator |
| 7 | Run and check | BrynQ, then the Windows server and Sage 100 France | BrynQ administrator and payroll |
📍 Where: BrynQ.
Goal: Create the interface from the template.
Who: BrynQ administrator.
📍 Where: BrynQ, Configuration tab.
Goal: Choose your test employees and the date of validity.
Who: BrynQ administrator, with payroll for the date of validity.
Open the Configuration tab:
📍 Where: BrynQ, interface > Settings.
Goal: Make your first runs safe test runs.
Who: BrynQ administrator.
In BrynQ, go to Interfaces, click the interface and open the Settings tab. Dry mode decides whether BrynQ really sends files to Sage:
| Dry mode | What happens |
| On | Test run. BrynQ compares Factorial with Sage and writes in the run log how many absences and cancellations it would send, but sends nothing. |
| Off | BrynQ sends the changes to Sage. |
📍 Where: BrynQ, Scenarios tab, with Sage 100 France open to look up the codes.
Goal: Tell BrynQ which Sage codes each Factorial leave type uses.
Who: BrynQ administrator, with payroll.
Open the Scenarios tab and the scenario Congés & Absences Payés. Complete every item marked with an exclamation mark (!):
| Mapping | What to do |
| Legal entity → Dossier | Map each Factorial legal entity to its Sage company (dossier). The dossier must match the company folder in the Sage import folder, which is the company name of the PRH file. |
| Legal entity + leave type → Sage codes | For each Factorial leave type, per legal entity, enter three Sage values: the Code nature événement (event code), the Motif d'absence (reason code for DSN reporting) and Nombre (the Sage constant that counts the duration, for example in working days or calendar days). Enter the leave type name exactly as it is in Factorial. |
| Employee number → Matricule | Prefilled. The Factorial company identifier is used as the Sage matricule. |
| Start and end date | Prefilled. |
| Date of validity | Filled in automatically from your answer in the Configuration tab. |
| Half day | Prefilled. A half day at the end of the first day becomes an afternoon absence on the first day in Sage; a half day at the start of the last day becomes a morning absence on the last day. Check only. |
Example of the leave type mapping (use the codes of your own Sage file):
| Factorial legal entity | Factorial leave type | Code nature événement | Motif d'absence | Nombre |
| Your legal entity | Paid leave | 0950 | CPS | TOTJRSOUV |
| Your legal entity | Sick leave | 2000 | MA | MAL_NBH |
📍 Where: Sage 100 France.
Goal: A cancellation code for every event code in your mapping.
Who: Payroll (Sage administrator).
BrynQ cancels and corrects absences with cancellation codes (see How it works). Every Code nature événement in your mapping needs its own cancellation code in Sage. You do this once per code, in every Sage dossier the absences go to. The example below creates the cancellation code for 0950 Absence congés.
⚠ If a step is skipped or done wrong, this is what you can expect:
| What went wrong | What you see | What to do |
| The original code has no Nature d'annulation, or a code from the mapping was skipped | The run stops before anything is sent, and lists the codes. | Do step 9 for each listed code, then run again. |
| The Sens was not reversed on the cancellation code | Nothing in BrynQ: the run reports that Sage is up to date. But in Sage a cancellation adds the days again instead of removing them, so balances such as congés pris are wrong. | Correct the Sens on the cancellation code. Then check and correct the balances of the employees with cancelled absences in Sage by hand. |
| Nature d'annulation is also filled in on the cancellation code (for example when you copied a code that already had one) | As soon as the first cancellation is in Sage, BrynQ mixes up the two codes and sends the same absences again on every run. | Empty Nature d'annulation on the cancellation code, then cancel the duplicate absences in Sage by hand. |
| The new code was already used by another event nature | Events of that other nature count as cancellations: absences are sent twice, or not cancelled. | Create a cancellation code with a free number, select it in Nature d'annulation of the original code, and check the absences of the affected employees in Sage. |
📍 Where: BrynQ, Authorizations.
Goal: Connect Factorial and Sage.
Who: BrynQ administrator and Factorial administrator.
📍 Where: BrynQ, then the Windows server and Sage 100 France.
Goal: Check that the first absences arrive correctly.
Who: BrynQ administrator and payroll.
Once the interface runs, HR works in Factorial and BrynQ updates Sage. A few situations need a hand correction in Sage (see How it works for why). Make corrections in Factorial before the cycle changes where you can.
| Situation | What to do | 📍 Where | Who |
| A leave request comes in | Approve it. Only approved absences are sent. | Factorial | Manager or HR |
| An absence must change or be cancelled, and it was sent in the current cycle | Change or delete it in Factorial. The next run corrects Sage. | Factorial | HR |
| The same, but it was sent in an earlier cycle | Change or delete it in Factorial, and cancel the old event in Sage by hand. BrynQ sends the new version, but does not cancel the old one. | Factorial and Sage 100 France | HR and payroll |
| Only the half day changes | Change it in Factorial and correct the event in Sage by hand. BrynQ does not compare half days. | Factorial and Sage 100 France | HR and payroll |
| An employee's last approved absence in Factorial is deleted | Cancel the event in Sage by hand. BrynQ no longer checks this employee. | Sage 100 France | Payroll |
| You want to enter an absence directly in Sage | Enter it in Factorial instead. An event entered by hand in Sage with the current date of validity, and not in Factorial, is cancelled by the next run. | Factorial | HR |
| A new leave type is added in Factorial | Add it to the mapping (Step 4). If it uses a new Code nature événement, create its cancellation code first (Step 5). | BrynQ and Sage 100 France | BrynQ administrator and payroll |
| A leave type is removed from the mapping | First check that Sage has no events of that type in the current cycle. Otherwise the next run stops, because it cannot cancel them without the mapping. | Sage 100 France, then BrynQ | Payroll and BrynQ administrator |