Inleiding
De AFAS-koppeling haalt personeels- en verlofgegevens uit AFAS op en legt die vast in Xedule. Doel is het verlichten van de administratieve last bij het beheren van medewerkergegevens: doordat de gegevens rechtstreeks uit het bronsysteem komen, wordt de kans op fouten bij het handmatig overnemen aanzienlijk kleiner. De koppeling ondersteunt het werkproces Plannen en Roosteren, zowel bij de initiële vulling van Xedule als bij het periodiek actueel houden ervan.
De koppeling kent één richting: gegevens stromen van AFAS naar Xedule. Er gaan geen basisgegevens vanuit Xedule terug naar AFAS. Het koppelvlak biedt medewerkergegevens aan per lesjaar of openstelling in Xedule; alleen medewerkers met een actieve aanstelling binnen dat tijdvak worden aangeboden.
De koppeling is een standaardkoppeling die per klant geactiveerd wordt. Het technisch beheer en onderhoud van het koppelvlak zelf wordt door Xedule Support en AFAS ondersteund. Het activeren van de koppeling en het testen en beheren van de datastromen is de verantwoordelijkheid van de functioneel beheerder van de instelling: het inrichten en configureren van de AFAS-connectoren, het inrichten en configureren van Xedule, het controleren van de opgehaalde gegevens en het doorvoeren van de initiële vulling van de productiegegevens.
Randvoorwaarden en functionele eisen
Technische randvoorwaarden
Aan de onderstaande voorwaarden moet zijn voldaan voordat de koppeling bruikbare gegevens oplevert.
- Onder Beheer/Configuratie/AFAS is een geldig serveradres van de AFAS-omgeving ingesteld. Ontbreekt dit, dan wordt de import direct afgebroken (hoofdstuk “Foutafhandeling en meldingen”).
- Onder diezelfde configuratie is een geldig autorisatietoken ingesteld. Ontbreekt dit, dan wordt de import eveneens direct afgebroken.
- In Xedule is binnen het gekozen tijdvak minimaal één kostenplaats aan een team gekoppeld. De koppeling leidt haar kostenplaatsfilter hieruit af; is er geen enkele gekoppelde kostenplaats, dan stopt de import. Zonder dat filter zouden namelijk alle medewerkers uit AFAS worden opgehaald.
- De kostenplaatscodes uit AFAS zijn in Xedule als kostenplaats bekend en binnen de betreffende periode aan het juiste team gekoppeld. Een kostenplaatsnummer kan in Xedule aan maar één team worden gekoppeld. Aanstellingen op een kostenplaats die in Xedule niet bestaat, worden overgeslagen (paragraaf “Gegevens die zonder melding worden overgeslagen”).
- De mapping tussen AFAS-verlofsoorten en Xedule-verlofsoorten is vooraf in de configuratie vastgelegd. Binnen de lijst met reguliere verlofsoorten mag elke AFAS-code maar één keer voorkomen, en binnen de lijst met roosterverlofsoorten eveneens; bij een dubbele code wordt de verwerking afgebroken. Beide lijsten worden apart gecontroleerd, dus dezelfde code mag wel in beide lijsten staan.
- Het ophalen van roosterverlof is optioneel en gebeurt alleen wanneer dit in de configuratie is aangezet. Staat de optie uit, dan wordt roosterverlof niet opgehaald en niet verwerkt, ook niet wanneer de connector in AFAS beschikbaar is.
- In Xedule is een openstelling aanwezig die het opgevraagde schooljaar bestrijkt. Alle berekeningen — werktijdfactor, verlofuren en normjaartaak — vinden plaats binnen de context van dat jaar.
- Een medewerker kan via de formatieverdeling aan twee kostenplaatsen gekoppeld zijn: een hoofdkostenplaats en een feitelijke kostenplaats. Binnen één organisatorische roostereenheid komen beide binnen als hoofdteam respectievelijk uitleenteam, mits beide kostenplaatsen aan een team gekoppeld zijn.
- Lopen de kostenplaatsen over twee organisatorische roostereenheden heen, dan komt de medewerker in de ene eenheid binnen als hoofdteamlid en in de andere als uitleen, mits de kostenplaatsen in beide eenheden correct zijn gekoppeld.
Functionele eisen aan de inrichting van AFAS
- Een medewerker heeft één unieke personeelscode (Roostercode). De uniciteit hiervan wordt door AFAS zelf geborgd. Dit veld is in een standaard AFAS-omgeving niet aanwezig; het moet als extern sleutelveld door AFAS Support worden toegevoegd.
- De velden Gebruikersnaam en MdwType zijn niet standaard onderdeel van de aanstellingen-connector en moeten daar expliciet als kolom aan worden toegevoegd. Zonder deze velden kunnen de inlognaam en het medewerkertype niet worden overgenomen.
- Een medewerker heeft een aanstelling bij een organisatorische eenheid; die eenheid komt in Xedule overeen met een team.
- Kostenplaatsen uit AFAS worden gekoppeld aan teams in Xedule.
- Het hoofdteam van een medewerker is altijd een onderwijsteam.
- Een medewerker heeft één werkgever.
- Een einddatum van een dienstverband, organisatorische eenheid of verlof is altijd een tot-en-met-datum: 30 januari geldt als 30-01 23:59:59.
- Bij de urenberekening van verlof wordt uitgegaan van de werkweekuren die gelden voor de sociale verzekeringsafdrachten van de betreffende CAO.
Functionele eisen aan de inrichting van Xedule
- De organisatie-eenheden uit AFAS zijn als team in Xedule aanwezig.
- Een organisatie-eenheid uit AFAS is binnen de Xedule-omgeving uniek.
- De medewerkertypes die AFAS aanlevert, bestaan als medewerkertype in de Xedule-basisdata. Een type dat niet bestaat, wordt niet gekoppeld (paragraaf “Gegevens die zonder melding worden overgeslagen”).
- De verlofsoorten uit de configuratie bestaan als voorwaarde bij de medewerker in Xedule.
CAO-uitgangspunten
De koppeling zet de aangeleverde AFAS-gegevens om naar het format dat de CAO voorschrijft. Twee waarden sturen die omrekening: de normjaartaak en de referentieweek. De normjaartaak is CAO-afhankelijk en bedraagt bij de gangbare onderwijs-CAO's 1659 uur bij een volledige werktijdfactor. De referentieweek volgt daaruit: de normjaartaak gedeeld door 45 weken, wat bij 1659 uur uitkomt op afgerond 36,87 uur per week. Deze referentieweek wordt gebruikt om een verlofwaarde in uren per week om te rekenen naar een deel van een volledige werktijdfactor (paragraaf “Berekening van de verlofuren”).
De medewerker wordt door de koppeling gekoppeld aan de standaard-CAO van het planningsscenario: de CAO met de meest recente datum binnen dat scenario. Het veld CAO uit de aanstellingen wordt door AFAS wel aangeleverd, maar bepaalt niet welke CAO aan de medewerker wordt gekoppeld. Wijkt de CAO van een individuele medewerker af van de scenario-CAO, dan moet dat in Xedule handmatig worden gecorrigeerd.
De configuratiepagina
De configuratiepagina van de AFAS-koppeling staat in het tabblad Configuratie binnen het beheertabblad van Xedule. Hier worden de instellingen vastgelegd die bepalen hoe de uit AFAS opgehaalde gegevens worden verwerkt. Dit hoofdstuk beschrijft uitsluitend het configuratiescherm zelf; welke gegevens per connector worden opgehaald en verwerkt staat in hoofdstuk “Entiteiten: ophalen, velden en verwerking”.
Serververbinding en algemene instellingen
In het bovenste gedeelte van de pagina worden het serveradres en het token ingevuld waarmee de verbinding met AFAS tot stand komt, samen met de algemene schakelaars van de koppeling.
| Veld | Waarde / voorbeeld | Toelichting |
|---|---|---|
| Serveradres — productie | https://[klantcode].soap.afas.online/profitservices/appconnectorget.asmx | Verplicht. Het webservice-adres van de productieomgeving van de instelling; [klantcode] wordt vervangen door de omgevingscode. Dit ene adres wordt voor alle entiteiten gebruikt (hoofdstuk “Volgorde en samenhang van de uitvraag”). |
| Serveradres — acceptatie | https://[klantcode].soapaccept.afas.online/profitservices/appconnectorget.asmx | Optioneel; alleen nodig wanneer er op een acceptatieomgeving wordt getest. Het veld wordt gecontroleerd op een geldige webadresnotatie. |
| Token | Door AFAS gegenereerde tokenwaarde | Verplicht. Wordt door AFAS gegenereerd en uitsluitend door de functioneel beheerder in Xedule ingevoerd. Na opslaan is de waarde niet meer zichtbaar maar blijft hij actief. |
| Meldingenscherm activeren | Aan / Uit | Optioneel. Bepaalt of na een handmatige import het meldingenscherm wordt getoond (paragraaf “Meldingen in het meldingenscherm”). |
| Gebruikersnaam overnemen | Aan / Uit | Optioneel. Bepaalt of de inlognaam van de medewerker uit AFAS wordt overgenomen (paragraaf “Aanmaken van de medewerker”). Staat de schakelaar uit, dan blijft de inlognaam in Xedule leeg. |
| Roosterverlof importeren | Aan / Uit | Optioneel; standaard uit. Bepaalt of de roosterverlof-connector wordt aangeroepen en verwerkt (paragraaf “Roosterverlof”). |
Het serveradres en het token vormen samen de sleutel tot de gegevens in AFAS: met die combinatie kunnen van buitenaf gegevens uit AFAS worden opgehaald. Ga er daarom zorgvuldig mee om en deel ze niet buiten de kring van beheerders. Na de eerste inrichting hoeven in dit scherm normaal gesproken geen aanpassingen meer te worden gedaan.
Verlofsoorten
In dit deel van de pagina worden de reguliere verlofsoorten ingesteld. Per regel worden twee velden ingevuld: een keuze uit de vaste lijst Xedule-benamingen hieronder, en de bijbehorende AFAS-stamcode. Het is mogelijk meerdere AFAS-verlofsoorten in dezelfde Xedule-verlofsoort te laten optellen door die benaming meerdere keren te kiezen; omgekeerd mag dezelfde AFAS-code binnen deze lijst maar één keer voorkomen (paragraaf “Technische randvoorwaarden”).
Per ingerichte verlofsoort kan daarnaast worden ingesteld of de standaard verlofurenberekening wel of niet wordt toegepast (paragraaf “Berekening van de verlofuren”). Dit is niet instelbaar voor de twee looncomponent-verlofsoorten seniorenverlof en zwangerschapsverlof; die volgen altijd hun eigen berekening.
| Naam | Betekenis / toepassing |
|---|---|
| ScholingUurPerJaar | Scholingsuren die de medewerker jaarlijks toegekend krijgt. |
| BapoPercentPerJaar | Het seniorenverlof- of BAPO-percentage per jaar; hoort bij de seniorenverlof-entiteit (paragraaf “Seniorenverlof (BAPO)”). |
| BijzonderVerlofPercentPerJaar | Bijzonder verlof, uitgedrukt als percentage per jaar. |
| LeeftijdsurenPerJaar | Leeftijdsuren die de medewerker jaarlijks toegekend krijgt op basis van leeftijd. |
| PersoonlijkBudgetUurPerJaar | Het jaarlijkse persoonlijke budget van de medewerker, in uren. |
| Adoptieverlof | Verlof in verband met adoptie. |
| BuitengewoonVerlofKort | Kortdurend buitengewoon verlof. |
| BuitengewoonVerlofLang | Langdurend buitengewoon verlof. |
| Calamiteitenverlof | Verlof bij calamiteiten of noodsituaties. |
| Zorgverlof | Verlof voor zorgtaken. |
| Zwangerschapverlof | Zwangerschaps- en bevallingsverlof; hoort bij de zwangerschapsverlof-entiteit (paragraaf “Zwangerschapsverlof”). |
| Ouderschapsverlof | Ouderschapsverlof. |
| Geboorteverlof | Geboorteverlof rondom de geboorte van een kind. |
Roosterverlofsoorten
In dit deel van de pagina worden de roosterverlofsoorten ingesteld, op dezelfde manier en met dezelfde vaste lijst benamingen als in paragraaf “Verlofsoorten”. Eén verschil is van belang: bij de reguliere verlofsoorten wordt aan AFAS-zijde het stamnummer van het looncomponent ingevuld, bij de roosterverlofsoorten de verlofboekingscode uit AFAS. Dit onderdeel is alleen van toepassing wanneer het importeren van roosterverlof aanstaat (paragraaf “Roosterverlof”).
Volgorde en samenhang van de uitvraag
Alle entiteiten worden opgehaald via hetzelfde webservice-adres uit paragraaf “Serververbinding en algemene instellingen”, waarbij per entiteit een AFAS-connector met een vaste naam wordt aangeroepen. De uitvraag verloopt in een vaste volgorde, omdat de eerste uitvraag bepaalt welke medewerkers de overige uitvragen betreffen.
De basisuitvraag bepaalt de set medewerkers waarop alle volgende uitvragen filteren.
De basisgegevens worden opgehaald met de opgegeven periode en de kostenplaatsen als filter. Uit het resultaat worden de unieke personeelscodes afgeleid; die vormen het filter voor alle volgende uitvragen. De kostenplaats speelt daarna geen rol meer in de uitvraag: alle overige connectoren filteren uitsluitend op personeelscode en periode.
Voor de periode geldt bij elke uitvraag hetzelfde principe: een record wordt meegenomen wanneer de geldigheidsperiode ervan de opgevraagde periode raakt. Een record waarvan de einddatum leeg is — een nog lopend dienstverband of verlof — wordt eveneens meegenomen. Een record zónder begindatum valt buiten de selectie; roosterverlof kent bovendien een eigen afwijking, beschreven in paragraaf “Roosterverlof”.
Entiteiten: ophalen, velden en verwerking
Per entiteit staan hieronder de aangeroepen connector, de aangeleverde velden en de verwerking daarvan. Velden die AFAS wel aanlevert maar die de koppeling niet gebruikt, staan er eveneens in: zij mogen in de connector blijven staan, maar hebben geen effect in Xedule.
Basisgegevens dienstverband
Connector: Xedule_basis. Deze uitvraag levert de basale dienstverbandgegevens per medewerker en is de enige uitvraag die op kostenplaats filtert. Het resultaat bepaalt welke medewerkers verder worden verwerkt, en per medewerker het dienstverband met de meest recente begindatum — de basis voor de datum uit dienst (paragraaf “Aanmaken van de medewerker”).
| Extern veld (exacte benaming) | Betekenis | Xedule-bestemming | Verwerking / filter |
|---|---|---|---|
| Roostercode | Unieke personeelscode van de medewerker. | Sleutel voor alle volgende uitvragen | De unieke waarden vormen het filter voor de overige connectoren (hoofdstuk “Volgorde en samenhang van de uitvraag”). |
| KPL | Kostenplaatscode. | — | Filter: uitsluitend de kostenplaatsen die in Xedule binnen het tijdvak aan een team zijn gekoppeld. |
| Begin / Eind | Geldigheid van de functieregel. | Datum uit dienst | Filter op de opgevraagde periode; een lege Eind betekent een lopend dienstverband en wordt meegenomen. |
| DV / DVboven | Dienstverbandnummer en het nummer van het bovenliggende dienstverband. | — | Wordt aangeleverd maar niet verwerkt. |
| MdwType | Medewerkertype. | — | Wordt in deze uitvraag niet verwerkt; het medewerkertype komt uit de aanstellingen (paragraaf “Aanstellingen”). |
Aanstellingen
Connector: Xedule_aanstellingen. Deze uitvraag levert de dienstverbanden met de werktijdfactor, de kostenplaats en de persoonsgegevens, voor de in paragraaf “Basisgegevens dienstverband” gevonden personeelscodes. Het periodefilter houdt rekening met vier combinaties van al dan niet ingevulde einddatums van het dienstverband en van het rooster, zodat nog lopende aanstellingen ook meekomen.
| Extern veld (exacte benaming) | Betekenis | Xedule-bestemming | Verwerking / filter |
|---|---|---|---|
| Roostercode | Unieke personeelscode van de medewerker. | Personeelsnummer en externe referentie | Filter; tevens de sleutel waarmee alle gegevens aan dezelfde medewerker worden gekoppeld. |
| Achternaam / Voorvoegsel | Achternaam en tussenvoegsel. | Achternaam | Samengevoegd tot één naam, gescheiden door een komma; een leeg voorvoegsel wordt weggelaten. |
| Roepnaam | Roepnaam van de medewerker. | Voornaam | Wordt ongewijzigd overgenomen. |
| E-mailadres. | E-mailadres | Onderdeel van de groeperingssleutel (paragraaf “Aanmaken van de medewerker”). | |
| Gebruikersnaam | Inlognaam van de medewerker. | Inlognaam | Alleen overgenomen wanneer de schakelaar uit paragraaf “Serververbinding en algemene instellingen” aanstaat. Moet in AFAS als kolom aan de connector zijn toegevoegd. |
| Geboortedatum | Geboortedatum van de medewerker. | Geboortedatum | Wordt overgenomen wanneer het veld is gevuld; een lege waarde blijft leeg. |
| FTE | Volledige werktijdfactor van het dienstverband. | Werktijdfactor | Samen met PercAanst (paragraaf “Werktijdfactor, hoofdteam en uitleen”). |
| PercAanst | Aanstellingspercentage. | Werktijdfactor | Samen met FTE (paragraaf “Werktijdfactor, hoofdteam en uitleen”). |
| Uitbreidingsdienstverband | Geeft aan of het een tijdelijke uitbreiding van het dienstverband betreft. | Tijdelijke werktijdfactor-aanpassing | Is dit waar, dan landt de berekende waarde in de tijdelijke aanpassing in plaats van in de werktijdfactor zelf. Moet in AFAS als kolom met exact deze naam aan de connector zijn toegevoegd en als ja-neewaarde worden aangeleverd (true of false). Heet de kolom anders of ontbreekt zij, dan leest Xedule de waarde als onwaar (paragraaf “Werktijdfactor, hoofdteam en uitleen”). |
| BeginFie / EindFie | Begin- en einddatum van het dienstverband. | Geldigheidsperiode van de aanstelling | Filter op de opgevraagde periode, samen met BeginRoo/EindRoo. |
| BeginRoo / EindRoo | Begin- en einddatum van het rooster. | Geldigheidsperiode van de aanstelling | Filter op de opgevraagde periode, samen met BeginFie/EindFie. |
| KPLhfd | Kostenplaats van het hoofddienstverband. | Hoofdteam-indicatie | Vergeleken met KPLfv om hoofdteam of uitleen te bepalen (paragraaf “Werktijdfactor, hoofdteam en uitleen”). |
| KPLfv | Kostenplaats van de functievervulling. | Team waaraan de medewerker wordt gekoppeld | Bepaalt het team; bestaat de kostenplaats niet in Xedule, dan wordt de aanstelling overgeslagen (paragraaf “Gegevens die zonder melding worden overgeslagen”). |
| MdwType | Medewerkertype. | Koppeling met het medewerkertype | Gekoppeld op gelijke naam; bestaat het type niet in de basisdata, dan wordt de koppeling niet gelegd. Moet in AFAS als kolom aan de connector zijn toegevoegd. |
| CAO | De CAO-waarde van de medewerker in AFAS. | — | Wordt aangeleverd maar niet verwerkt; de medewerker krijgt de scenario-CAO (paragraaf “CAO-uitgangspunten”). |
| OEhfd / OEfv | Organisatorische eenheid van het hoofd- respectievelijk feitelijke dienstverband. | — | Wordt aangeleverd maar niet verwerkt; het team volgt uit de kostenplaats. |
| DV / DVboven | Dienstverbandnummer en het nummer van het bovenliggende dienstverband. | — | Wordt aangeleverd maar niet verwerkt. |
Aanmaken van de medewerker
De aangeleverde aanstellingen worden gegroepeerd op de combinatie van personeelscode, achternaam, voorvoegsel, roepnaam, e-mailadres, inlognaam en geboortedatum. Voor elke unieke combinatie ontstaat één medewerker in Xedule. Wijkt één van die zeven waarden tussen twee aanstellingsregels af, dan levert dat dus twee medewerkers op; consistentie van deze velden in AFAS is daarmee een voorwaarde voor een schone import.
De personeelscode wordt in Xedule zowel als personeelsnummer als als externe referentie vastgelegd. De inlognaam wordt alleen overgenomen wanneer de configuratie dat toestaat (paragraaf “Serververbinding en algemene instellingen”).
De datum uit dienst wordt in twee stappen bepaald. Eerst wordt gekeken naar het dienstverband met de meest recente begindatum uit de basisgegevens: heeft dat een einddatum, dan is dat de datum uit dienst. Heeft het die niet, dan wordt de laatste einddatum van de aanstellingen gebruikt — maar alleen wanneer álle aanstellingen van de medewerker een einddatum hebben. Is ook dat niet het geval, dan blijft de datum uit dienst leeg en geldt de medewerker als in dienst.
Werktijdfactor, hoofdteam en uitleen
De werktijdfactor van een aanstelling is de volledige werktijdfactor vermenigvuldigd met het aanstellingspercentage gedeeld door honderd, afgerond op vier decimalen. Betreft de aanstelling een tijdelijke uitbreiding van het dienstverband, dan komt diezelfde waarde niet in de werktijdfactor terecht maar in de tijdelijke werktijdfactor-aanpassing, zodat de vaste en de tijdelijke component in Xedule los van elkaar zichtbaar blijven.
Bij die tijdelijke aanpassing horen drie dingen die in de praktijk vragen oproepen.
- Het veld Uitbreidingsdienstverband is het enige dat de keuze bepaalt. Het moet als kolom met exact die naam aan de connector Xedule_aanstellingen zijn toegevoegd en als ja-neewaarde worden aangeleverd (true of false). Levert AFAS de kolom onder een andere naam, dan wordt zij genegeerd en leest Xedule de waarde als onwaar: de volledige werktijdfactor komt dan in de gewone werktijdfactor terecht, zonder dat daar een melding over verschijnt. Wordt er wel een kolom met die naam geleverd maar met een waarde die geen ja-neewaarde is, dan mislukt de import in zijn geheel met een technische foutmelding.
- Het tijdelijke karakter zit niet in het veld maar in de looptijd van het dienstverband. Loopt de uitbreiding het hele schooljaar door, dan staat de tijdelijke aanpassing ook het hele jaar bij de medewerker.
- De tijdelijke aanpassing telt mee waar het om de totale omvang gaat: bij de keuze van het hoofdteam wordt gerekend met de werktijdfactor en de tijdelijke aanpassing bij elkaar opgeteld, en bij een uitleenrelatie wordt diezelfde som als werktijdfactor van die relatie vastgelegd.
Meerdere aanstellingen die elkaar in tijd overlappen en dezelfde kostenplaats en dezelfde hoofd- of nevenstatus hebben, worden samengevoegd; de werktijdfactor en de tijdelijke aanpassing worden daarbij elk afzonderlijk opgeteld. Een vast dienstverband en een uitbreiding op dezelfde kostenplaats leveren in hetzelfde tijdvak dus een vaste en een tijdelijke waarde naast elkaar op.
De geldigheidsperiode van een aanstelling loopt van de laatste van de twee begindatums (dienstverband en rooster) tot de eerste van de twee einddatums. Ontbreekt een einddatum, dan geldt het einde van het schooljaar in Xedule. Aanstellingen van dezelfde medewerker op dezelfde kostenplaats en met dezelfde hoofd- of nevenstatus worden samengevoegd tot aaneengesloten periodes, waarbij de werktijdfactoren van overlappende aanstellingen bij elkaar worden opgeteld.
Of een aanstelling een hoofdteam of een uitleen oplevert, volgt uit de vergelijking van twee kostenplaatsen.
De kostenplaats van de functievervulling ten opzichte van die van het hoofddienstverband.
Het hoofdteamlidmaatschap wordt in Xedule op periodeniveau vastgelegd, de in-dienstperiode op weekniveau. Bestaat er voor hetzelfde tijdvak al een hoofdteamrelatie, dan wordt een tweede aanstelling in datzelfde tijdvak alsnog als uitleen vastgelegd. Omdat het hoofdteam per periode wordt bepaald, is het raadzaam hoofdteamwisselingen per periode te organiseren; een wisseling midden in een periode leidt tot meldingen in het meldingenscherm (paragraaf “Meldingen in het meldingenscherm”).
Het medewerkertype wordt gekoppeld aan het gelijknamige medewerkertype in de Xedule-basisdata. De koppeling maakt zelf geen medewerkertypes aan.
Seniorenverlof (BAPO)
Connector: Xedule_seniorenverlof. Deze uitvraag levert het seniorenverlof per medewerker als een deel van een volledige werktijdfactor. Anders dan bij de overige verloven is geen omrekening via de referentieweek nodig: de aangeleverde waarde is al een werktijdfactor-deel.
| Extern veld (exacte benaming) | Betekenis | Xedule-bestemming | Verwerking / filter |
|---|---|---|---|
| Roostercode | Unieke personeelscode van de medewerker. | Sleutel naar de medewerker | Filter. |
| BAPO_FTE | Het toegekende seniorenverlofpercentage, als deel van een volledige werktijdfactor. | Voorwaarde BapoPercentPerJaar bij de medewerker | Vermenigvuldigd met de normjaartaak en het deel van het schooljaar dat het verlof beslaat. |
| BeginRoo / EindRoo | Begin- en einddatum van het rooster. | Geldigheidsperiode van het verlof | Filter op de opgevraagde periode; bij een lege einddatum geldt het einde van het schooljaar. |
| DV | Dienstverbandnummer. | — | Wordt aangeleverd maar niet verwerkt. |
Het aantal verlofuren volgt rechtstreeks uit dat werktijdfactor-deel en de normjaartaak van de medewerker.
| Stap | Berekening (in gewone taal) | Voorbeeldwaarde |
|---|---|---|
| 1 | Vermenigvuldig de normjaartaak van de medewerker met het toegekende seniorenverlofpercentage. | 1659 × 0,10 = 165,9 uur |
| 2 | Vermenigvuldig het resultaat met het deel van het schooljaar waarin het verlof geldig is. | heel jaar: × 1,00 |
| 3 | Beslaat het verlof het volledige schooljaar, dan wordt het resultaat afgerond op hele uren. | 166 uur |
| 4 | Verdeel het aantal uren over de dagen van de openstelling waarin het verlof geldig is. | naar rato van het aantal dagen |
Seniorenverlof wordt niet samengevoegd met de overige verloven: elke regel uit deze uitvraag levert een eigen voorwaarde op.
Verloven
Connector: Xedule_verloven. Deze uitvraag levert de verloven die via een looncomponent in de salarisadministratie lopen, vastgelegd in uren per week. Elke regel wordt via de mapping uit paragraaf “Verlofsoorten” vertaald naar een Xedule-verlofsoort en vervolgens omgerekend naar verlofuren.
| Extern veld (exacte benaming) | Betekenis | Xedule-bestemming | Verwerking / filter |
|---|---|---|---|
| Roostercode | Unieke personeelscode van de medewerker. | Sleutel naar de medewerker | Filter. |
| LCstam | Stamnummer van het looncomponent. | Bepaalt de Xedule-verlofsoort | Vertaald via de mapping uit paragraaf “Verlofsoorten”; een code die daar niet in staat, wordt overgeslagen (paragraaf “Gegevens die zonder melding worden overgeslagen”). |
| Nieuwe_waarde | Waarde van het looncomponent, in uren per week. | Aantal verlofuren | Omgerekend volgens paragraaf “Berekening van de verlofuren”. |
| Nieuwe_begindatum / Nieuwe_einddatum | Begin- en einddatum van de verlofmutatie. | Geldigheidsperiode van het verlof | Filter op de opgevraagde periode; bij een lege einddatum geldt het einde van het schooljaar. |
| LCcode / LComs / PMoms | Looncomponentnummer en de omschrijvingen daarvan. | — | Wordt aangeleverd maar niet verwerkt; handig bij het inrichten van de mapping. |
Berekening van de verlofuren
AFAS levert een verlof aan als een aantal uren per week. Xedule legt verlof vast als een aantal uren binnen het schooljaar. De omrekening daartussen verloopt in vier stappen: de weekwaarde wordt eerst uitgedrukt als deel van een volledige werktijdfactor, dat deel wordt vermenigvuldigd met de normjaartaak, daarvan wordt het deel genomen dat in dit schooljaar valt, en het resultaat wordt over de dagen van de openstelling verdeeld.
| Stap | Berekening (in gewone taal) | Voorbeeldwaarde |
|---|---|---|
| 1 | Deel de aangeleverde uren per week door de referentieweek (de normjaartaak gedeeld door 45 weken). De uitkomst is het deel van een volledige werktijdfactor dat het verlof beslaat. | 7,372 ÷ 36,87 = 0,20 |
| 2 | Bepaal hoeveel dagen van het verlof in dit schooljaar vallen, ten opzichte van de lengte van het schooljaar. | 122 van 365 dagen = 0,334 |
| 3 | Vermenigvuldig de normjaartaak met dat deel en met het werktijdfactor-deel uit stap 1. | 1659 × 0,334 × 0,20 = 110,8 uur |
| 4 | Verdeel het aantal uren over de dagen van de openstelling waarin het verlof geldig is. | naar rato van het aantal dagen |
De omrekening van uren per week naar verlofuren binnen het schooljaar.
Loopt een verlof door in een volgend schooljaar, dan wordt het per schooljaar apart berekend: elke import betreft één schooljaar en kent daaraan het deel toe dat binnen dat jaar valt.
Is voor een verlofsoort ingesteld dat de standaard verlofberekening niet wordt toegepast (paragraaf “Verlofsoorten”), dan geldt een eenvoudiger regel: de aangeleverde waarde wordt vermenigvuldigd met het aantal roosterdagen binnen de verlofperiode gedeeld door het aantal roosterdagen per week. De normjaartaak en de CAO spelen daarbij geen rol. Deze variant is bedoeld voor verlofsoorten waarvan AFAS de waarde al in de gewenste eenheid aanlevert.
Verlofmutaties van dezelfde verlofsoort bij dezelfde medewerker die elkaar in de tijd overlappen, worden samengevoegd tot aaneengesloten periodes waarin de uren bij elkaar worden opgeteld. Alleen periodes met een positief aantal uren worden daadwerkelijk in Xedule vastgelegd; een berekening die op nul of lager uitkomt, levert geen voorwaarde op.
Zwangerschapsverlof
Connector: Xedule_zwangerschapsverlof. Deze uitvraag levert de in het schooljaar geldende zwangerschaps- en bevallingsverloven. Dit verlof volgt niet de berekening uit paragraaf “Berekening van de verlofuren”: voor elke dag binnen de verlofperiode wordt het verlof volledig vastgelegd, op basis van de werktijdfactor van de medewerker op die dag vermenigvuldigd met de normjaartaak. Het verlof telt daarmee voor honderd procent mee in de planning.
| Extern veld (exacte benaming) | Betekenis | Xedule-bestemming | Verwerking / filter |
|---|---|---|---|
| Roostercode | Unieke personeelscode van de medewerker. | Sleutel naar de medewerker | Filter. |
| Begin | Begindatum van het verlof. | Begin van de verlofperiode | Filter op de opgevraagde periode. |
| DefEind | Definitieve einddatum. | Einde van de verlofperiode | Heeft voorrang op de verwachte einddatum. Het periodefilter werkt uitsluitend op dit veld. |
| VerwEind | Verwachte einddatum. | Einde van de verlofperiode | Alleen gebruikt wanneer de definitieve einddatum nog niet bekend is. |
Omdat het periodefilter alleen op de definitieve einddatum werkt, komt een verlof waarvan uitsluitend de verwachte einddatum is ingevuld mee via de variant voor een lege einddatum. Het verdient daarom aanbeveling de definitieve einddatum in AFAS in te vullen zodra die bekend is.
Roosterverlof
Connector: Xedule_roosterverloven. Deze uitvraag levert de verlofboekingen die niet via een looncomponent in de salarisadministratie lopen, maar rechtstreeks vanuit het roosterverlof-menu van AFAS worden vastgelegd. De connector wordt alleen aangeroepen wanneer het importeren van roosterverlof aanstaat (paragraaf “Serververbinding en algemene instellingen”); staat de schakelaar uit, dan wordt roosterverlof niet opgehaald en niet verwerkt, ook niet wanneer de connector in AFAS beschikbaar is. De verwerking en de berekening zijn verder gelijk aan die van de reguliere verloven (paragraaf “Berekening van de verlofuren”), met de mapping uit paragraaf “Roosterverlofsoorten”.
| Extern veld (exacte benaming) | Betekenis | Xedule-bestemming | Verwerking / filter |
|---|---|---|---|
| Roostercode | Unieke personeelscode van de medewerker. | Sleutel naar de medewerker | Filter. |
| Verlofboeking_type_verlof | De verlofboekingscode. | Bepaalt de Xedule-verlofsoort | Vertaald via de mapping uit paragraaf “Roosterverlofsoorten”; een code die daar niet in staat, wordt overgeslagen (paragraaf “Gegevens die zonder melding worden overgeslagen”). |
| Verlofboeking_waarde_per_week | Waarde van de boeking, in uren per week. | Aantal verlofuren | Omgerekend volgens paragraaf “Berekening van de verlofuren”. |
| Verlofboeking_Begindatum / Verlofboeking_Einddatum | Begin- en einddatum van de verlofboeking. | Geldigheidsperiode van het verlof | Filter op de opgevraagde periode. Beide datums moeten gevuld zijn; zie de toelichting hieronder. |
| Samengestelde_verlofboeking | Kenmerk waarmee dubbele boekingen worden herkend. | — | Wordt in AFAS als filter gebruikt (zie hieronder) en door Xedule niet verwerkt. |
| Verlofboeking_omschrijving | Omschrijving van het type verlof. | — | Wordt aangeleverd maar niet verwerkt; handig bij het inrichten van de mapping. |
Twee punten verdienen aandacht bij het inrichten. Ten eerste haalt deze uitvraag, anders dan de overige uitvragen, geen boekingen op waarvan de einddatum leeg is: een roosterverlof zonder einddatum komt niet in Xedule terecht. Zorg er daarom voor dat elke boeking die in Xedule moet landen een einddatum heeft. Ten tweede moet in AFAS het filter op het kenmerk voor samengestelde verlofboekingen op "is niet leeg" staan, zodat dezelfde boeking niet meermaals wordt aangeleverd.
Om de connector in AFAS beschikbaar te maken en aan de bestaande koppeling toe te voegen, doorloopt de functioneel beheerder van AFAS de volgende stappen.
- Ga naar Algemeen > Uitvoer > Beheer, kies in de menubalk "Meer acties" en vervolgens "Importeren", en importeer het connectorbestand voor de roosterverloven.
- Ga naar Algemeen > Beheer > App Connector en open de App Connector die de koppeling met Xedule beheert.
- Ga binnen die App Connector via het linkermenu naar "Getconnectoren", klik op "Nieuw", selecteer de zojuist toegevoegde roosterverloven-connector en rond de toevoeging af.
- Open de nieuw toegevoegde Getconnector, ga naar het filterscherm en voeg daar de codes toe van de verloftypen die aan Xedule mogen worden doorgegeven — of verwijder de codes die dat niet mogen. De beschikbare verloftypen staan in AFAS onder de inrichting van de verlofsoorten. Sla de aanpassingen op.
- Richt vervolgens de roosterverlofsoorten aan Xedule-zijde in (paragraaf “Roosterverlofsoorten”), zodat de AFAS-codes aan de juiste Xedule-benamingen worden gekoppeld.
Import: doorvoeren, handmatig en via geplande taak
Handmatig importeren en geplande taken
Het importeren van gegevens uit AFAS kan op twee manieren plaatsvinden. Bij handmatig importeren kiest de gebruiker in het importtabblad van Xedule het gewenste bronsysteem, haalt de gegevens op en bepaalt daarna zelf welke verwerkingsactie wordt doorgevoerd; dit is pas mogelijk nadat de configuratie uit hoofdstuk “De configuratiepagina” is uitgevoerd. Daarnaast kan de import als geplande taak worden ingericht, waarbij dezelfde verwerkingsactie vooraf wordt vastgelegd.
Elke import betreft één lesjaar of openstelling in Xedule. Alleen medewerkers met een actieve aanstelling binnen dat tijdvak worden aangeboden; medewerkers die volledig buiten het tijdvak vallen, komen niet mee.
De drie doorvoerknoppen
Een import schrijft nooit rechtstreeks weg. Nadat de gegevens zijn opgehaald, toont Xedule een vergelijking: links de gegevens zoals het bronsysteem ze aanlevert, rechts dezelfde gegevens zoals ze op dat moment in Xedule staan. Pas wanneer u op een doorvoerknop drukt, verandert er iets in Xedule. Welke knop u kiest, bepaalt hoe ver dat doorvoeren gaat.
Elke import doorloopt dezelfde vier stappen; alleen de laatste stap wijzigt gegevens.
Er zijn drie knoppen. Ze werken in alle importkoppelingen op dezelfde manier en gaan altijd één kant op: van het bronsysteem naar Xedule. Via deze schermen wordt er nooit iets naar het bronsysteem teruggeschreven.
| Pictogram | Knop | Wat de knop doet | Wanneer u die kiest |
|---|---|---|---|
| bijwerken | Werkt alleen de regels bij die zowel in het bronsysteem als in Xedule bestaan en waarvan een of meer waarden verschillen. Er wordt niets toegevoegd en niets verwijderd. | Als u alleen wijzigingen op bestaande gegevens wilt overnemen en bewust nog geen nieuwe objecten in Xedule wilt laten ontstaan. | |
| toevoegen en bijwerken | Doet hetzelfde als bijwerken en maakt daarnaast de regels aan die alleen in het bronsysteem voorkomen. Er wordt niets verwijderd. | De gebruikelijke keuze voor een reguliere import gedurende het jaar. | |
| toevoegen, bijwerken en verwijderen | Doet hetzelfde als toevoegen en bijwerken en trekt daarnaast de geldigheid in van de objecten die alleen nog in Xedule bestaan. | Alleen wanneer het bronsysteem voor deze gegevensgroep volledig leidend is en de aanlevering compleet is. |
Er is geen knop waarmee u uitsluitend toevoegt: bij elke knop die toevoegt, worden bestaande regels ook bijgewerkt.
Het resultaat van elke knop, per soort verschil tussen beide kanten.
Welke velden worden overgenomen
Bij een bijwerking worden niet alle velden overschreven, maar alleen de velden die daadwerkelijk verschillen; regels die in het geheel niet verschillen worden overgeslagen. Welke velden worden vergeleken, ligt per gegevensgroep vast: dat zijn precies de velden die in de vergelijking naast elkaar worden getoond. Velden die niet in de vergelijking voorkomen, worden door een import dus nooit overschreven.
Wat verwijderen precies doet
Verwijderen is geen harde verwijdering. Xedule trekt de geldigheid van het object in voor het tijdvak waarin u werkt; het object zelf en zijn historie blijven bestaan. In de praktijk betekent dat bijvoorbeeld dat een medewerker voor dat tijdvak uit dienst wordt gezet, een student in dat tijdvak niet meer studeert, een faciliteit in dat tijdvak niet meer geldig is, of dat een relatie tussen twee objecten voor dat tijdvak vervalt. Een groep is de uitzondering: valt de periode van de groep volledig binnen het tijdvak, dan wordt de groep zelf opgeruimd.
- Alleen gegevens die per tijdvak geldig zijn, kunnen op deze manier worden ingetrokken. Gegevenssoorten zonder tijdvak worden door de verwijdervariant ongemoeid gelaten.
- De knop kijkt niet naar de herkomst van een object. Objecten die handmatig in Xedule zijn aangemaakt en die niet in de aanlevering voorkomen, worden dus ook ingetrokken — tenzij de koppeling ze via een vast filter buiten de vergelijking houdt.
- Er wordt niet gecontroleerd of het object elders nog in gebruik is. Een object dat nog in het rooster of de jaarplanning voorkomt, wordt evengoed ingetrokken.
Alleen bij deze variant vraagt Xedule vooraf om een bevestiging. Het doorvoeren zelf gebeurt in één handeling: gaat er iets mis, dan blijven de gegevens in Xedule zoals ze waren.
Hoe een regel links aan een regel rechts wordt gekoppeld
Of een regel als nieuw, als gewijzigd of als alleen in Xedule wordt gezien, hangt af van de manier waarop beide kanten aan elkaar worden gekoppeld. Xedule gebruikt daarvoor in de eerste plaats de referentie uit het bronsysteem die bij het Xedule-object is vastgelegd. Is die niet gevuld, dan valt de vergelijking terug op de natuurlijke sleutel van het object: bijvoorbeeld het personeelsnummer van een medewerker, de code van een student of leeractiviteit, of de combinatie van code, periode en type bij een groep. Hoofdletters spelen daarbij geen rol.
Dit verklaart de twee situaties die het vaakst tot onverwachte uitkomsten leiden. Wijzigt in het bronsysteem de sleutel van een object waarvan in Xedule nog geen referentie is vastgelegd, dan ziet Xedule dat als een nieuw object naast het bestaande. En heeft een handmatig aangemaakt Xedule-object dezelfde sleutel als een aangeleverd object, dan worden beide als één regel behandeld en wordt het handmatige object met de aangeleverde waarden bijgewerkt.
Waarop een knop wordt toegepast
Een knop werkt op alle regels van de gegevensgroep die op dat moment geopend is, en niet op een selectie; er is geen aanvinkmogelijkheid per regel. Wel kan de lijst worden gefilterd op het soort verschil — alles, alleen links, alleen rechts, in beide, of in beide maar ongelijk — en werkt de knop daarna alleen op de regels die het filter overlaat. Wordt de knop op het overzichtstabblad gebruikt, dan geldt de keuze voor alle gegevensgroepen van die import tegelijk.
Dezelfde keuze in een geplande taak
Wordt de import als geplande taak uitgevoerd, dan vervalt de vergelijkingsstap en ligt de keuze vooraf vast. Per gegevensgroep zijn dezelfde drie mogelijkheden in te stellen, aangevuld met de mogelijkheid die gegevensgroep over te slaan. Is er voor een taak niets ingericht, dan geldt de ruimste variant en wordt er dus ook verwijderd. Richt een geplande taak daarom altijd bewust in, en werk in de beginperiode handmatig tot de gegevensstroom stabiel is.
Foutafhandeling en meldingen
De koppeling kent drie soorten uitkomsten: fouten die de import volledig stoppen, gegevens die zonder melding worden overgeslagen, en signaleringen in het meldingenscherm die de import niet blokkeren maar wel om actie vragen.
Meldingen die de import stoppen
Treedt een van onderstaande situaties op, dan wordt de import afgebroken en worden er geen gegevens in Xedule weggeschreven. Er blijven dus ook geen gedeeltelijk verwerkte gegevens achter.
| Melding | Situatie | Wat te doen |
|---|---|---|
| Geen Server geconfigureerd onder Beheer/Configuratie/AFAS. | Het serveradres is niet ingevuld. | Vul het serveradres in op de configuratiepagina (paragraaf “Serververbinding en algemene instellingen”). |
| Geen Token geconfigureerd onder Beheer/Configuratie/AFAS. | Het autorisatietoken is niet ingevuld. | Vul het token in op de configuratiepagina. Is het token wel ingevuld maar werkt het niet, laat AFAS dan een nieuw token genereren. |
| Geen kostenplaatsen | Er is binnen het gekozen tijdvak geen enkele kostenplaats aan een team gekoppeld. | Koppel in Xedule de betreffende kostenplaatsen aan de juiste teams voor dat tijdvak (paragraaf “Technische randvoorwaarden”). |
| Geen melding; de import eindigt zonder resultaat | Dezelfde AFAS-verlofsoortcode komt meer dan één keer voor in de lijst met verlofsoorten of in de lijst met roosterverlofsoorten, of er is een onverwachte fout opgetreden. | Controleer eerst beide verlofsoortlijsten op dubbele AFAS-codes (paragraaf “Verlofsoorten” en 3.3). Blijft de import mislukken, neem dan contact op met Xedule Support; de oorzaak staat dan in de logging van de omgeving. |
Gegevens die zonder melding worden overgeslagen
De onderstaande situaties stoppen de import niet en leveren ook geen melding op. Zij zijn wel de meest voorkomende verklaring voor gegevens die na een geslaagde import in Xedule ontbreken.
- Een aanstelling waarvan de kostenplaats niet als kostenplaats in Xedule bestaat of binnen de periode niet aan een team is gekoppeld, wordt overgeslagen. De medewerker komt dan wel binnen, maar zonder teamlidmaatschap voor die periode.
- Een verlofregel waarvan de AFAS-code niet in de verlofsoortmapping voorkomt, wordt overgeslagen. Dit geldt zowel voor de reguliere verloven als voor het roosterverlof.
- Een medewerkertype dat niet in de Xedule-basisdata bestaat, wordt niet aan de medewerker gekoppeld. De overige gegevens van de medewerker komen wel binnen.
- Een berekende verlofperiode die op nul of minder uren uitkomt, wordt niet vastgelegd.
- Een roosterverlofboeking zonder einddatum komt niet mee in de uitvraag (paragraaf “Roosterverlof”).
Meldingen in het meldingenscherm
Staat het meldingenscherm aan (paragraaf “Serververbinding en algemene instellingen”), dan wordt na een handmatige import een controle op de aangeleverde gegevens uitgevoerd. Deze meldingen blokkeren de import niet, maar wijzen op situaties die handmatig moeten worden opgelost. De controle rekent per periode; organiseer hoofdteamwisselingen daarom zoveel mogelijk per periode.
| Melding | Situatie | Wat te doen |
|---|---|---|
| Medewerker bestaat met hetzelfde personeelsnummer en afwijkend referentie id | Het geïmporteerde referentie-ID wijkt af van het referentie-ID dat in Xedule bij hetzelfde personeelsnummer bekend is. | Vervang in Basisdata > Medewerker > Basisdata > Referentie ID het bestaande referentie-ID door het nieuwe. |
| Medewerker heeft inzet voor het huidige hoofdteam | Het nieuwe hoofdteam wijkt af van het huidige, terwijl er in het huidige hoofdteam nog inzet is vastgelegd. | Haal in de jaarplanning-werkverdeling de werkzaamheden in de huidige en toekomstige periodes weg, of vervang het hoofdteam handmatig en leen de medewerker uit aan het oude hoofdteam voor de periode waarin het nieuwe hoofdteam geldt. |
| Medewerker heeft uitleen vanuit het huidige hoofdteam | De medewerker heeft een uitleenrelatie vanuit het huidige hoofdteam op het moment van de hoofdteamwissel. | Vervalt de uitleen, haal die dan in de huidige en toekomstige periodes weg. Verschuift de uitleen naar het nieuwe team, dan kan ook het hoofdteam handmatig worden omgezet met ingang van de juiste periode. |
| Medewerker heeft uitleen naar organisatorische eenheid [naam] | De medewerker is gedeeld en geclaimd in een andere organisatorische eenheid op het moment van de hoofdteamwissel. | Hef de deling naar die eenheid op en maak deze opnieuw aan tot en met de periode waarin vanuit het oude hoofdteam werd gedeeld. Blijft het nieuwe hoofdteam binnen dezelfde eenheid, dan kan het hoofdteam ook handmatig worden omgezet. |
| Medewerker heeft inzet buiten de aanstellingsperiode [onderdelen] | Er is inzet vastgelegd in een periode waarin de aanstelling niet actief is. Tussen haakjes staan de onderdelen waarop dat speelt. | Verwijder in de jaarplanning-werkverdeling de inzet op de taken die na de einddatum van de aanstellingsperiode liggen. |
| Medewerker heeft uitleen buiten de aanstellingsperiode [teams] | Er is een uitleenrelatie vastgelegd in een periode waarin de aanstelling niet actief is. Tussen haakjes staan de betrokken teams. | Kort in de basisdatatabel Medewerker de uitleen in tot en met de laatste week van de aanstellingsperiode, door de uitleen op tijdspanne Week te laten lopen in plaats van op Jaar of Periode. |
Los meldingen over een hoofdteamwissel als eerste op. Vindt een hoofdteamwissel midden in een periode plaats, dan geldt als algemene lijn dat de bestaande inzet en uitleen naar het nieuwe hoofdteam worden omgezet: inzet die aan het oude hoofdteam hangt, wordt als uitleen vanuit het nieuwe hoofdteam vastgelegd, en de bestaande uitleen wordt eveneens naar het nieuwe hoofdteam omgezet.
Opmerkingen
0 opmerkingen
Artikel is gesloten voor opmerkingen.