WEND#86093 -- Entra ID PRS-koppeling i.p.v. ADFS bij Wender - Aangepaste PRS-import

svn path=/Customer/trunk/; revision=68816
This commit is contained in:
Jos Migo
2025-04-18 14:45:06 +00:00
parent b6eca2b760
commit 6d725af914

View File

@@ -337,8 +337,7 @@ EXCEPTION
END;
/
/*
CREATE OR REPLACE PROCEDURE wend_import_perslid (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
@@ -346,33 +345,103 @@ AS
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_aantal_in_fclt NUMBER;
v_seq_of_columns VARCHAR (255);
-- overige variabelen
v_naam_verantw VARCHAR2(255);
v_prs_perslid_email_verantw VARCHAR2(255);
CURSOR c_verantw
IS
SELECT i.fac_imp_file_index, i.prs_perslid_email, i.prs_kenmerk12
FROM fac_imp_perslid i
WHERE fac_import_key = p_import_key
ORDER BY i.fac_imp_file_index;
BEGIN
-- Ticket WEND#86093
-- BESTAND WORDT: GivenName,Surname,UserPrincipalName,Title,EmailAddress,Mobile,telephoneNumber,employeeID,Department,Office,sAMAccountName,manager
--- VOORBEELD:
--- Popke,van der Meer,p.vandermeer@wender.nl,,p.vandermeer@wender.nl,0682300088,0880663081,204240,test,test location,CN=Jens Waterreus,OU=Accounts,OU=Wender,DC=internal,DC=wender,DC=nl
-- Import csv formaat - kolommen:
-- 1. GivenName
-- 2. Surname
-- 3. UserPrincipalName
-- 4. Title
-- 5. EmailAddress
-- 6. Mobile
-- 7. TelephoneNumber
-- 8. EmployeeID
-- 9. Department
-- 10. Office
-- 11. sAMAccountName (max 15 karakters) - Om verplichte kolommen mee te vullen en daarna te updaten (afdeling, functie, ..)
-- 12. Manager (CN=Jens Waterreus)
-- 13. t/m 18 - Manager - komt in details mee maar gebruiken we niet: OU=Accounts,OU=Wender,DC=internal,DC=wender,DC=nl
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid procedure
v_seq_of_columns := '0;0;0;0;0;0;11;2;0;1;'
-- v_alg_locatie_code 1
-- v_alg_gebouw_code 2
-- v_alg_verdieping_volgnr 3
-- v_alg_ruimte_nr 4
-- v_prs_werkplek_volgnr 5
-- v_prs_werkplek_omschrijving 6
-- v_prs_afdeling_naam 7 -- VERPLICHT BIJ IMPORT - Geen toepassing bij WENDER. Daarom Initieel vullen met sAMAccountName (max 15 karakters)
-- v_prs_perslid_naam 8 -- VERPLICHT BIJ IMPORT
-- v_prs_perslid_tussenvoegsel 9
-- v_prs_perslid_voornaam 10
|| '0;0;0;0;0;7;6;5;0;8;'
-- v_prs_perslid_voorletters 11
-- v_prs_perslid_partner_naam 12
-- v_prs_perslid_partner_tussenv 13
-- v_prs_naamgebruik_code 14 0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt
-- 1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken
-- 2 personen die de geboortenaam van de partner willen gebruiken
-- 3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken
-- v_prs_perslid_geslacht 15 Gebruik 'man', 'm' of 1 voor man en 'vrouw', 'v' of 0 voor vrouw case insensitive geen default
-- v_prs_perslid_telefoonnr 16
-- v_prs_perslid_mobiel 17
-- v_prs_perslid_email 18
-- v_prs_perslid_dienstverband 19
-- v_prs_perslid_nr 20
|| '11;5;0;0;0;0;1;2;3;4;'
-- v_prs_srtperslid_omschrijving 21 -- VERPLICHT BIJ IMPORT - Niet altijd gevuld bij WENDER. Daarom intieel vullen met sAMAccountName en daarna omzetten
-- v_prs_perslid_oslogin 22
-- v_prs_perslid_wachtwoord 23
-- v_prs_perslid_titel 24
-- v_prs_perslid_apikey 25
-- v_dummy 26
-- v_prs_kenmerk1 27
-- v_prs_kenmerk2 28
-- v_prs_kenmerk3 29
-- v_prs_kenmerk4 30
|| '5;6;7;8;9;10;11;12;0;0;'
|| '0;0;0;0;0;0';
-- Het aangeleverde bestand heeft de gegevens komma gescheiden ipv ;
v_errorhint := 'Delimiter goed zetten';
UPDATE fac_imp_file
SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';')
WHERE fac_import_key = p_import_key;
-- Het aangeleverde bestand heeft aanhalingstekens om de invoervelden..
-- Als het aangeleverde bestand aanhalingstekens om de invoervelden heeft, dan halen we dit bij deze weg..
UPDATE fac_imp_file
SET fac_imp_file_line = REPLACE (fac_imp_file_line, '"', '')
WHERE fac_import_key = p_import_key;
v_errorhint := 'Generieke update';
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid procedure
-- Afdeling (nr7) tijdelijk ook gevuld met achternaam (wordt later altijd Wendergroep) - WANT bij import verplicht veld en anders komt dit record dus niet door de IMPORT!
-- Login (nr 22) wordt bij de import nog wel uit het bestand gehaald 3e kolom, maar later omgezet naar emailadres.
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;2;2;0;1;'
|| '0;0;0;0;0;0;6;5;0;0;'
|| '2;3;0;0;0;0;0;0;0;4;'
|| '0;0;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'GivenName;Surname;UserPrincipalName;Title;EmailAddress;Mobile%');
-- WAS bij MARE: '"Firstname;LastName;Login;JobTitle;EmailAdress;"');
-- DEF. BESTAND bij WEND : "GivenName","Surname","UserPrincipalName","Title","EmailAddress","Mobile"
-- csv verwerken naar de fac_imp_perslid-tabel
prs.import_perslid(p_import_key, v_seq_of_columns, 'GivenName;Surname;UserPrincipalName;Title;EmailAddress;Mobile;telephoneNumber;employeeID;Department;Office;sAMAccountName;manager%');
-- POST-UPDATES op data in fac_imp_perslid-tabel doen om verwerking goed/volledig/cust-specifiek te laten verlopen
v_errorhint := 'Post update(s)';
-- Afdeling bepalen
UPDATE fac_imp_perslid
@@ -395,6 +464,40 @@ BEGIN
SET prs_srtperslid_omschrijving =
DECODE (prs_kenmerk4, NULL, 'Onbekend', prs_kenmerk4);
FOR rec IN c_verantw
LOOP
BEGIN
v_errorhint := 'Leidinggevende erbij zoeken';
-- Bijv: CN=Jens Waterreus (in prs_kenmerk12 opgenomen)
IF rec.prs_kenmerk12 IS NOT NULL
THEN
v_prs_perslid_email_verantw := NULL ;
v_naam_verantw := SUBSTR(rec.prs_kenmerk12, 4) ;
SELECT MAX(p.prs_perslid_email)
INTO v_prs_perslid_email_verantw
FROM prs_v_aanwezigperslid p, prs_v_perslid_fullnames pf
WHERE p.prs_perslid_key = pf.prs_perslid_key
AND UPPER(pf.prs_perslid_naam_friendly) = UPPER(v_naam_verantw) ;
IF v_prs_perslid_email_verantw IS NOT NULL
THEN
UPDATE fac_imp_perslid
SET prs_kenmerk13 = v_prs_perslid_email_verantw
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
END IF;
END IF;
END;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
@@ -408,7 +511,10 @@ EXCEPTION
v_errorhint);
END wend_import_perslid;
/
*/
/*
CREATE OR REPLACE PROCEDURE wend_update_perslid (p_import_key IN NUMBER)
IS
-- Alle personen verwijderen die niet meer in het import import bestand voorkomen
@@ -427,14 +533,39 @@ IS
AND v.prs_bedrijf_key = b.prs_bedrijf_key
AND v.prs_bedrijf_key = 21 ; -- Alleen onder/voor bedrijf Wender Opvang (key 21)
/*
CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden
IS
SELECT p.prs_perslid_key, p.prs_perslid_email, i.prs_perslid_partner_naam, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3
SELECT p.prs_perslid_key, p.prs_perslid_email, i.prs_perslid_partner_naam, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3, i.prs_kenmerk4, i.prs_kenmerk5, i.prs_kenmerk6, i.prs_kenmerk7, i.prs_kenmerk8, i.prs_kenmerk9, i.prs_kenmerk10, i.prs_kenmerk11, i.prs_kenmerk12, i.prs_kenmerk13
FROM prs_v_aanwezigperslid p, fac_imp_perslid i
WHERE p.prs_perslid_email = i.prs_perslid_email
WHERE p.prs_perslid_key = i.prs_perslid_key
ORDER BY 2;
*/
CURSOR c_verantw
IS
SELECT p.prs_perslid_key,
p.prs_perslid_email,
p.prs_perslid_nr,
p.prs_perslid_oslogin,
p.leidinggevende_emailadres,
CASE WHEN p.prs_perslid_key_verantw IS NOT NULL
THEN (SELECT prs_perslid_email FROM prs_perslid WHERE prs_perslid_key = p.prs_perslid_key_verantw)
ELSE NULL
END
prs_perslid_verantw_email
FROM fac_imp_perslid i,
(SELECT p.prs_perslid_key,
p.prs_perslid_email,
p.prs_perslid_nr,
p.prs_perslid_oslogin,
p.prs_perslid_key_verantw,
(SELECT kw.prs_kenmerklink_waarde
FROM prs_kenmerklink kw
WHERE kw.prs_kenmerk_key = 1060
AND kw.prs_kenmerklink_niveau = 'P'
AND kw.prs_link_key = p.prs_perslid_key)
leidinggevende_emailadres
FROM prs_perslid p) p
WHERE p.prs_perslid_key = i.prs_perslid_key ;
v_count NUMBER;
oracle_err_num NUMBER;
@@ -442,6 +573,9 @@ IS
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
-- overige variabelen
v_prs_perslid_key_verantw NUMBER(10);
BEGIN
v_errorhint := 'Niet genoeg personen in bestand, import afgebroken';
@@ -467,18 +601,74 @@ BEGIN
LOOP
BEGIN
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
-- NULL;
END;
END LOOP;
/*
FOR rec IN c_flex
LOOP
BEGIN
v_errorhint:='Fout bijwerken kenmerkveld1';
PRS.upsertkenmerk (1000, rec.prs_perslid_key, rec.prs_kenmerk1); -- Pre-Windows 2000 Logon Name
v_errorhint:='Fout bijwerken kenmerkvelden';
PRS.upsertkenmerk (1021, rec.prs_perslid_key, rec.prs_kenmerk1); -- GivenName
PRS.upsertkenmerk (1022, rec.prs_perslid_key, rec.prs_kenmerk2); -- SurName
PRS.upsertkenmerk (1023, rec.prs_perslid_key, rec.prs_kenmerk3); -- UserPrincipalName
PRS.upsertkenmerk (1024, rec.prs_perslid_key, rec.prs_kenmerk4); -- Title
PRS.upsertkenmerk (1025, rec.prs_perslid_key, rec.prs_kenmerk5); -- EmailAddress
PRS.upsertkenmerk (1026, rec.prs_perslid_key, rec.prs_kenmerk6); -- Mobile
PRS.upsertkenmerk (1027, rec.prs_perslid_key, rec.prs_kenmerk7); -- TelephoneNumber
PRS.upsertkenmerk (1028, rec.prs_perslid_key, rec.prs_kenmerk8); -- EmployeeID
PRS.upsertkenmerk (1029, rec.prs_perslid_key, rec.prs_kenmerk9); -- Department
PRS.upsertkenmerk (1030, rec.prs_perslid_key, rec.prs_kenmerk10); -- Office
PRS.upsertkenmerk (1040, rec.prs_perslid_key, rec.prs_kenmerk11); -- sAMAccountName
PRS.upsertkenmerk (1031, rec.prs_perslid_key, rec.prs_kenmerk12); -- Manager
PRS.upsertkenmerk (1060, rec.prs_perslid_key, rec.prs_kenmerk13); -- Emailadres leidinggevende
END;
END LOOP;
*/
-- En de verantwoordelijk manager updaten in de personenkaart indien nodig
FOR rec IN c_verantw
LOOP
BEGIN
v_errorhint:='Fout bijwerken verantwoordelijke';
-- als de aangeboden waarde uit azure anders is dan de huidige verantwoordelijke in de personenkaart dan gaan we personenkaart updaten
IF COALESCE(rec.leidinggevende_emailadres, '<leeg>') <> COALESCE(rec.prs_perslid_verantw_email, '<leeg>')
THEN
-- geen gevonden facilitor-manager dan gevulde verantwoordelijke verwijderen
IF rec.leidinggevende_emailadres IS NULL
THEN
UPDATE prs_perslid
SET prs_perslid_key_verantw = ''
WHERE prs_perslid_key = rec.prs_perslid_key ;
END IF;
-- wel gevonden facilitor-manager dan bijbehorende verantwoordelijke_key in personenkaart vullen
IF rec.leidinggevende_emailadres IS NOT NULL
THEN
SELECT prs_perslid_key
INTO v_prs_perslid_key_verantw
FROM prs_perslid
WHERE prs_perslid_email = rec.leidinggevende_emailadres ;
UPDATE prs_perslid
SET prs_perslid_key_verantw = v_prs_perslid_key_verantw
WHERE prs_perslid_key = rec.prs_perslid_key ;
END IF;
END IF;
END;
END LOOP;
ELSE
fac.imp_writelog (p_import_key,
@@ -501,6 +691,7 @@ EXCEPTION
v_errorhint);
END wend_update_perslid;
/
*/
-----------------------------------------
-- Rapportage-views --