When a manager requests a vacancy in AFAS, it goes through your normal AFAS approval flow. Once it's approved, AFAS registers it as a real vacancy, and within about fifteen minutes a matching, already-approved requisition appears in Teamtailor. Your recruiter can then open it and create the job from your own template, with the CAO, wage scale and salary already filled in instead of being looked up by hand in AFAS.
Nothing gets approved twice. Since the approval already happened in AFAS, the requisition arrives in Teamtailor already approved.
Before you start
You already have the AFAS integration set up and running for sending candidates to AFAS. This feature builds on that connection, it doesn't replace it.
You have someone available who manages connectors in AFAS, usually an application manager rather than a recruiter, since two of the steps below happen inside AFAS.
You use requisitions in Teamtailor. If requisitions aren't turned on for your account, there's nowhere for the vacancies to land.
Step 1. Get the connector file
Ask your Teamtailor contact for the connector file TeamtailorVacancyFeed.gcn and pass it to whoever manages your AFAS connectors. This file tells AFAS which vacancy information to make available to Teamtailor.
⚠️ AFAS has different environments. You're connected to one based on your member number: numbers starting with O are on Production, T on Testing, and A on Accept.
Step 2. Import the file in AFAS
In AFAS, go to General → Output → Management → GetConnector, then More actions → Import → File, and select the .gcn file.
Check the name afterwards. It must appear in the list as TeamtailorVacancyFeed, exactly that, with no spaces. If it gets renamed during import, Teamtailor won't find it and nothing will sync, with no error message to explain why.
Step 3. Grant access to it in AFAS
Go to General → Management → App connector in AFAS. Open your existing Teamtailor app connector, the one created when the integration was first set up, and add TeamtailorVacancyFeed to its GetConnectors. Save.
You don't need to create a new app connector or generate a new token. Everything else about your connection stays as it is.
Step 4. Switch the sync on in Teamtailor
In your Teamtailor account, go to Settings → Integrations → AFAS, tick Sync approved vacancies as requisitions, and save. Leave your member number and credentials as they are, they're already set up from the original integration.
While you're on this screen, check the Teamtailor API key selected. Creating requisitions needs a key with Admin read write scope. Many AFAS setups run on a read-only key, which works fine for sending candidates but won't create anything here. If there's no read-write key in the dropdown, create one first under API keys.
Once saved, you'll see a link to the requisition settings page, that's where the remaining steps happen.
Step 5. Match your locations
Open the requisition settings link from the integration panel. The page has two tabs, Locations and Requisitions. Start on Locations.
Every location AFAS uses for vacancies is listed on the left, with a dropdown of your Teamtailor locations on the right. Pick the matching Teamtailor location for each, and save.
This matters more than it looks: AFAS location names are often internal codes or your own company's naming, so they rarely match what you call your offices day to day.
Nothing syncs until every location is mapped. Start sync stays greyed out while any are outstanding, with a line underneath showing how many are left. A requisition landing on the wrong office is harder to spot and undo than one that never arrived. Every Teamtailor requisition needs a location.
Step 6. Start the sync
Press Start sync. There's no date to pick here, and that's deliberate: starting the sync brings across vacancies changed from that moment onward. Anything already sitting in AFAS stays where it is until you ask for it, that's the next step.
Once started, the sync runs by itself every fifteen minutes. There's no button to press again.
Step 7. Bring older vacancies across (optional)
Underneath the location table is an Import history card with its own date field. Set Import vacancies changed since a date, and the button shows you how many requisitions that would bring in before you press it (for example, Import 12 requisitions). It stays greyed out while that count is zero, or while any location is still unmapped, so it can't fire blind.
Be deliberate with the date, thirty open vacancies and a date of last year means thirty requisitions arriving at once.
ℹ️ This looks at when the vacancy last changed in AFAS, not when it was created. An old vacancy edited last week counts as changed last week.
Step 8. Check the Requisitions tab
The second tab lists every vacancy in the AFAS feed and what became of it:
What it says | What it means |
Imported | Done: the requisition number links straight through to the requisition in Teamtailor. |
Queued | Someone pressed Import. It arrives on the next run, within fifteen minutes. |
Failed | Teamtailor rejected it, with the reason shown underneath. It retries on its own once the cause is fixed. |
Location not mapped | Its AFAS location has no Teamtailor location yet, fix it on the Locations tab. |
Not imported | The vacancy is in AFAS but hasn't been brought across yet, usually because it last changed before the sync was started. |
No longer open in AFAS | Shown under an imported row whose vacancy has since been closed or filled. The requisition in Teamtailor is unaffected. |
Anything not imported has its own Import button, so you can bring in one vacancy on its own without running a historical import for everyone. That button stays greyed out while the vacancy's location is unmapped.
Pausing the sync
The same page has a Pause sync option, which stops new requisitions from being created. Resuming continues from where it left off rather than re-importing everything, so it's safe to use while you sort something out on your end.
What comes across
Each AFAS vacancy becomes one approved requisition, carrying:
Field | Comes from |
Job title | The vacancy description in AFAS |
Location | Whatever you mapped it to in step 5 |
Hiring manager | Matched on their work email address |
Department | The organisational unit in AFAS |
Job and function | The AFAS function code and its name |
CAO | Collective labour agreement name and code |
Wage scale and step | Including the scale type |
Salary | Amount, period, and minimum or maximum |
Contract type and FTE | Where filled in on the vacancy |
Start date | The vacancy's own start date |
Anything you add to the connector in AFAS also comes across automatically, as long as the column is named the same as the field on your requisition form, you can extend it yourself without waiting on us.
ℹ️ Not carried across yet: the job description text. Requisitions arrive with an empty body, and the recruiter writes the advert themselves, which most customers do from their own templates.
Checking it worked
Approve a test vacancy in AFAS, or pick one already open.
Wait fifteen minutes, nothing happens instantly, and refreshing doesn't speed it up.
Open the Requisitions tab on the settings page. The vacancy should be listed as Imported, with a requisition number linking through to Teamtailor. The requisition itself is already approved and named after the AFAS vacancy.
Open it and check the CAO and salary are filled in and the location is the right office.
If something goes wrong
What you see | What it usually means |
Nothing arrives at all | Check the Requisitions tab first, if it's empty, AFAS isn't sending us anything. Either the sync was never started, the connector was renamed during import (step 2), or it was never added to the app connector (step 3). If the tab lists vacancies but every one failed, your Teamtailor API key is probably read-only (step 4). |
Some vacancies sync, others don't | The Requisitions tab says why. "Location not mapped" means a new office appeared in AFAS and needs mapping. Worth rechecking periodically. "Not imported" means the vacancy last changed before the sync was started, so use its Import button, or Import history for a batch of them. |
CAO and salary are empty | You're not using wage scales on that vacancy. CAO comes from the wage scale, so a vacancy with a fixed salary and no scale has no CAO to send. Fill it in on the vacancy in AFAS. |
Requisitions land on the wrong office | The mapping points at the wrong Teamtailor location. Fix it on the settings page, requisitions created before the fix need moving by hand. |
An old, closed vacancy appeared | Vacancies whose end date has passed are skipped, but one still open in AFAS syncs even if it's old. Close vacancies in AFAS you no longer want appearing. |
The same vacancy arrives twice | This shouldn't happen, each vacancy is only sent once. Contact us rather than deleting and retrying. |
Need support?
Questions about your own AFAS configuration — wage scales, approval flows, or who can manage connectors — go to your AFAS administrator or AFAS consultant.
For anything else, contact Teamtailor directly via:
Chat: open your Teamtailor app and chat live
Email: support@teamtailor.com
