Skip to content

Commit

Permalink
Juiste groepnaam in tabel, teamnaam is ASCII
Browse files Browse the repository at this point in the history
  • Loading branch information
sikkepitje committed Aug 30, 2022
1 parent 7b0a893 commit a096dfb
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 21 deletions.
30 changes: 16 additions & 14 deletions Export-SchoolDataSync.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
bepaalt actieve teams en genereert CSV-bestanden ten behoeve van
School Data Sync.
Versie 20220719
Versie 20220830
Auteur Paul Wiegmans (p.wiegmans@svok.nl)
naar een voorbeeld door Wim den Ronde, Eric Redegeld, Joppe van Daalen
Expand Down Expand Up @@ -99,6 +99,18 @@ Function Write-Log {
$log | Out-File -FilePath $currentLogFilename -Append
Write-Host $log
}

$illegal_characters = "[^\S]|[\~\""\#\%\&\*\:\<\>\?\/\\{\|}\.]"
$safe_character = "_"
function ConvertTo-SISID([string]$Naam) {
return $Naam -replace $illegal_characters, $safe_character
# https://support.microsoft.com/en-us/office/invalid-file-names-and-file-types-in-onedrive-and-sharepoint-64883a5d-228e-48f5-b3d2-eb39e07630fa
}
Function ConvertTo-ASCII([string]$naam) {
# Verwijder alle tekens anders dan a-z, A-Z, 0-9, underscore en punt
$naam -replace '[^a-zA-Z0-9_.]', ''
}

#endregion Functies

# Start hoofdprogramma
Expand Down Expand Up @@ -182,21 +194,11 @@ Try {
if (!(Test-Path -Path $filename_mag_docent_xml)) { Throw "Vereist bestand ontbreekt: " + $filename_mag_docent_xml }
if (!(Test-Path -Path $filename_mag_vak_xml)) { Throw "Vereist bestand ontbreekt: " + $filename_mag_vak_xml }

$illegal_characters = "[^\S]|[\~\""\#\%\&\*\:\<\>\?\/\\{\|}\.]"
$safe_character = "_"
function ConvertTo-SISID([string]$Naam) {
return $Naam -replace $illegal_characters, $safe_character
# https://support.microsoft.com/en-us/office/invalid-file-names-and-file-types-in-onedrive-and-sharepoint-64883a5d-228e-48f5-b3d2-eb39e07630fa
}

function ConvertTo-Teamnaam([string]$Naam) {
return ($teamnaam_prefix + $naam + $teamnaam_suffix)
}

function ConvertTo-TeamId([string]$Naam) {
return ($teamid_prefix + $naam).replace($illegal_characters, $safe_character)
}

################# LEES DATA van Import-Magister
$mag_leer = Import-Clixml -Path $filename_mag_leerling_xml
# velden: Stamnr, Id, Login, Roepnaam, Tussenv, Achternaam, Lesperiode,
Expand Down Expand Up @@ -283,7 +285,7 @@ Try {
# Leerling : lijst van leerlingid's
# index is groep

function New-Team($id, $klas, $vak)
function New-Team($id, $groep, $vak)
{
# maak een nieuw teamrecord met $naam, geindexeerd op Teamid (dit wordt 'Section SIS ID')
return [PSCustomObject]@{
Expand All @@ -309,7 +311,7 @@ Try {
$vak = $groepvak.Vakcode
$id = "{0}@{1}" -f ($groep, $vak) # tijdelijk identifier uniek voor de combinatie van groep en vak
if ($team.Keys -notcontains $id) {
$tm = New-Team -id $id -klas $groep -vak $vak
$tm = New-Team -id $id -groep $groep -vak $vak
$team[$id] = $tm
} else {
$tm = $team[$id]
Expand Down Expand Up @@ -382,7 +384,7 @@ Try {
# Teamnaam en Id bepalen volgens gewenst formaat
foreach ($t in $team) {
$t.Naam = "{0}{1} {2} {3}" -f ($teamnaam_prefix, $t.Groep, $t.VakOms, $teamnaam_suffix)
$t.Id = ("{0}{1} {2}" -f ($teamid_prefix, $t.Groep, $t.Vak)) -replace $illegal_characters, $safe_character
$t.Id = ConvertTo-ASCII (("{0}{1} {2}" -f ($teamid_prefix, $t.Groep, $t.Vak)) -replace $illegal_characters, $safe_character)
}

Write-Log ("Team Totaal: {0} " -f $team.count)
Expand Down
2 changes: 1 addition & 1 deletion Import-Magister.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
TeamSync script Import-Magister.ps1 (ophalen) haalt gegevens op uit Medius (Magister)
Webservice.
Versie 20211125
Versie 20220830
Auteur Paul Wiegmans (p.wiegmans@svok.nl)
naar een voorbeeld door Wim den Ronde, Eric Redegeld, Joppe van Daalen
Expand Down
12 changes: 6 additions & 6 deletions README.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
= TeamSync versie 20220718
= TeamSync versie 20220830

Paul Wiegmans <p.wiegmans@svok.nl>

Expand All @@ -14,7 +14,7 @@ Paul Wiegmans <p.wiegmans@svok.nl>

TeamSync is een universele oplossing voor het overbrengen van gegevens uit Magister naar School Data Sync ten behoeve van een geautomatiseerde aanmaak van Teams in een Microsoft 365 omgeving.

Deze oplossing maakt gebruik van https://sds.microsoft.com/[Microsoft School Data Sync]. School Data Sync is een oplossing die identiteiten vanuit een schooladministratiesysteem synchroniseert met Microsoft 365, en klassenteams maakt voor alle actieve klassen of lesgroepen.
Deze oplossing maakt gebruik van https://sds.microsoft.com/[Microsoft School Data Sync]. School Data Sync creeert en synchroniseert klassenteams voor alle actieve klassen en lesgroepenvan een school, door deze te voeden met informatie uit een schooladministratiesysteem.

Inspiratie hiervoor komt uit eerder werk genaamd 'v06-sds-files_FONSVITAE.ps1' door Wim den Ronde, Eric Redegeld, Joppe van Daalen.

Expand Down Expand Up @@ -56,7 +56,7 @@ Voor het ophalen van gegevens wordt gebruik gemaakt van de Magister SOAP/XML Web

Voor het genereren van de juiste gegevens voor School Data Sync moeten de identiteiten van docenten en leerlingen in Magister worden gepaard (gekoppeld, "match") aan de overeenkomstige identiteiten van alle gebruikers in Microsoft 365 en Teams, dus in Azure Active Directory (AAD). In de uitvoer die TeamSync genereert, wijst ID naar de unieke identiteit van een medewerker of gebruiker in AAD. De ID kan een suffix bevatten, maar dat hoeft niet. Indien nodig wordt door School Data Sync aan dit veld de suffix toegevoegd om te refereren aan een unieke gebruiker in AAD.

Voor leerlingen kan makkelijker het Magister email gebruikt om de unieke ID te bepalen. Voor medewerkers is dit lastiger omdat in Magister geen e-mailadres is opgeslagen op een manier die TeamSync kan uitlezen.
Voor leerlingen kan het Magister email-veld worden gebruikt om de unieke ID te bepalen. Voor medewerkers is dit lastiger omdat in Magister geen e-mailadres is opgeslagen op een manier die TeamSync kan uitlezen. Hierin kan worden voorzien door een lijst met stamnummers en gebruikersnamen uit een externe bron aan te bieden, bijvoorbeeld door deze lijst op te halen uit Active Directory of Azure Active Directory. Zie verderop voor de details.

IMPORTANT: Hier wordt ervan uitgegaan dat alle gebruikersaccounts al in AAD aanwezig zijn en dus niet door School Data Sync actief worden aangemaakt.

Expand All @@ -77,13 +77,13 @@ IMPORTANT: TeamSync vanaf versie 20201127 ondersteunt niet meer het opzoeken van

De gewenste koppelmethode wordt aangeduid met één van de volgende variabelen.

** `medewerker_id=loginaccount` : Koppel Id aan Magister loginaccount. Id bevat geen domeinsuffix. SDS vult Id aan met een domeinsuffix.
** `medewerker_id=loginaccount` : Koppel Id aan Magister loginaccount. Id bevat geen domeinsuffix. School Data Sync vult Id aan met een domeinsuffix.

** `medewerker_id=code` : Koppel Id aan Magister code. Id bevat geen domeinsuffix. School Data Sync (SDS) vult Id aan met een domeinsuffix.
** `medewerker_id=code` : Koppel Id aan Magister code. Id bevat geen domeinsuffix. School Data Sync vult Id aan met een domeinsuffix.

** `medewerker_id=csv_upn` : Koppel Id aan UserPrincipalName van de gebruiker in een extern CSV-bestand waarvan employeeId overeenkomt met Magister stamnummer. Zie sectie Medewerker-UPN-CSV voor een beschrijving van dit bestand. Id bevat de domeinsuffix.

** `leerling_id=loginaccount` : koppel Id aan Magister loginaccount. Id bevat geen domeinsuffix. SDS vult Id aan met een domeinsuffix.
** `leerling_id=loginaccount` : koppel Id aan Magister loginaccount. Id bevat geen domeinsuffix. School Data Sync vult Id aan met een domeinsuffix.

** `leerling_id=email` : Koppel ID aan Magister email. Id bevat een domeinsuffix. De leerlingen worden uniek geidentificeerd met het "email" veld in de Magister leerlingkaart. Het is de verantwoordelijkheid van de school om ervoor te zorgen dat het email-veld van leerlingen is ingevuld met de overeenkomstige userPrincipalName van de leerling in Azure AD / Microsoft 365.

Expand Down
5 changes: 5 additions & 0 deletions changes.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,11 @@ Toevoeging configuratieparameter bon_match_docentlesgroep_aan_leerlingklas voor
## 20220719
* Export-SchoolDataSync.ps1: bugfix: uitvoer leeg, want vergat tabel teamactief aan te maken.

## 20220830
* Vanwege een bug kwam groepnaam niet in hteam-bestanden.
* leest configuratie en filterbestanden in als UTF8; maakt ondersteuning voor UTF8 tekens in schoolnaam mogelijk.
* verwijdert niet-ASCII tekens uit teamid. Hoeft niet perse, maar is wel makkelijk.

## TO DO
Dit zijn geplande wijzigingen zonder een vastgesteld tijdpad (krabbels van de auteur).

Expand Down

0 comments on commit a096dfb

Please sign in to comment.