DJIN#57592 Anonimiseerscript(s)
svn path=/Customer/trunk/; revision=44950
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
-- Pre-exportscript ter "maximale" anonimisering van de DJIN-database zoals
|
||||
-- aangevraagd met DJIN#37953.
|
||||
-- Pre-exportscript ter "maximale" anonimisering van de DJIN- en DVON-database.
|
||||
-- Oorspronkelijk aangevraagd met DJIN#37953 en met DJIN#57592 geschikt gemaakt
|
||||
-- voor DVON.
|
||||
|
||||
DEFINE thisfile = 'AnonimiseerFMS_max.SQL'
|
||||
DEFINE dbuser = '^FMS'
|
||||
DEFINE thisfile = 'Anonimiseer_min.SQL'
|
||||
DEFINE dbuser = '^FMS|^FMD'
|
||||
|
||||
SET ECHO ON
|
||||
SET DEFINE ON
|
||||
@@ -18,266 +19,14 @@ SET DEFINE OFF
|
||||
|
||||
------ payload begin ------
|
||||
|
||||
CREATE OR REPLACE PROCEDURE djin_select_nachtwerk (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2)
|
||||
AS
|
||||
CURSOR c_afspraak
|
||||
IS
|
||||
SELECT bez_afspraak_key
|
||||
FROM bez_afspraak
|
||||
--WHERE bez_afspraak_datum < TRUNC (SYSDATE - 180)
|
||||
ORDER BY bez_afspraak_key;
|
||||
|
||||
-- DJIN#39650: Anonimiseren=verwijderen kenmerk=141 van melding=82.
|
||||
CURSOR c_bezorgadres
|
||||
IS
|
||||
SELECT km.mld_kenmerkmelding_key
|
||||
FROM mld_melding m, mld_kenmerkmelding km
|
||||
WHERE m.mld_stdmelding_key = 82 -- Aanvraag bloemen/boeketten
|
||||
AND m.mld_melding_key = km.mld_melding_key
|
||||
AND km.mld_kenmerk_key = 141 -- Bezorgadres
|
||||
--AND EXISTS (SELECT 1
|
||||
-- FROM mld_v_aanwezigkenmerkmelding
|
||||
-- WHERE mld_melding_key = m.mld_melding_key
|
||||
-- AND mld_kenmerk_key = 21 -- Gewenste leverdatum
|
||||
-- AND ADD_MONTHS (fac.safe_to_date (km.mld_kenmerkmelding_waarde, 'dd-mm-yyyy'), 1) < SYSDATE)
|
||||
ORDER BY km.mld_kenmerkmelding_key;
|
||||
|
||||
c_oud_medewerker VARCHAR2 (100) := 'Oud medewerker';
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_count_del NUMBER (10);
|
||||
|
||||
-- SUBPROC
|
||||
PROCEDURE prs_anonimiseer (p_applname IN VARCHAR2)
|
||||
AS
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT '[' || TO_CHAR (p.prs_perslid_key) || '|' || p.prs_perslid_naam || '|' || p.prs_perslid_email || '] ' aanduiding,
|
||||
p.prs_perslid_key
|
||||
FROM prs_perslid p
|
||||
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
|
||||
AND p.prs_perslid_oslogin2 IS NULL
|
||||
AND p.prs_perslid_apikey IS NULL -- Voor de zekerheid!
|
||||
AND ADD_MONTHS (COALESCE (p.prs_perslid_login, p.prs_perslid_aanmaak), 12) < SYSDATE -- Een jaar niet ingelogd!
|
||||
--AND p.prs_perslid_upper != UPPER ('Oud medewerker')
|
||||
AND p.prs_perslid_upper != UPPER (c_oud_medewerker)
|
||||
AND NOT EXISTS (SELECT 1 -- Geen actuele verplichtingen!
|
||||
FROM prs_v_verplichting_keys
|
||||
WHERE prs_perslid_key = p.prs_perslid_key)
|
||||
ORDER BY 2;
|
||||
|
||||
CURSOR c2
|
||||
IS
|
||||
SELECT t.fac_tracking_key,
|
||||
t.fac_tracking_oms,
|
||||
LENGTH (REPLACE (t.fac_tracking_oms || 'x', ' ', '')) - LENGTH (REPLACE (TRANSLATE (t.fac_tracking_oms || 'x', '@', ' '), ' ', '')) aant_email
|
||||
FROM fac_tracking t, fac_srtnotificatie sn
|
||||
WHERE 1 = 1 --ADD_MONTHS (t.fac_tracking_datum, 12) < SYSDATE
|
||||
AND INSTR (t.fac_tracking_oms, '@') > 0
|
||||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||||
AND (sn.fac_srtnotificatie_code LIKE '%MAI' OR sn.fac_srtnotificatie_code LIKE '%MA')
|
||||
ORDER BY 1;
|
||||
|
||||
v_count_upd NUMBER (10);
|
||||
v_tracking_oms VARCHAR2 (1000);
|
||||
BEGIN
|
||||
v_count_upd := 0;
|
||||
FOR rec IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errormsg := 'Fout anonimiseren persoon';
|
||||
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_naam = c_oud_medewerker,
|
||||
prs_perslid_tussenvoegsel = NULL,
|
||||
prs_perslid_voorletters = NULL,
|
||||
prs_perslid_voornaam = NULL,
|
||||
prs_perslid_initialen = NULL,
|
||||
prs_perslid_geslacht = NULL,
|
||||
prs_perslid_nr = NULL,
|
||||
prs_perslid_telefoonnr = NULL,
|
||||
prs_perslid_mobiel = NULL,
|
||||
prs_perslid_email = NULL,
|
||||
prs_perslid_oslogin = NULL, -- prs_perslid_oslogin2 = NULL
|
||||
prs_perslid_verwijder = SYSDATE
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||||
COMMIT;
|
||||
|
||||
v_count_upd := v_count_upd + 1;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Personen/#geanonimiseerd: ' || TO_CHAR (v_count_upd), '');
|
||||
COMMIT;
|
||||
|
||||
v_errormsg := 'Fout anonimiseren tracking';
|
||||
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count_upd
|
||||
FROM fac_tracking
|
||||
WHERE fac_srtnotificatie_key IN (50, 67, 68, 98) -- MLDBEH/ORDSNT/ORDSNX/INSOUT
|
||||
AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = 'Behandelaar is toegewezen'
|
||||
WHERE fac_srtnotificatie_key = 50 -- MLDBEH
|
||||
--AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE
|
||||
AND 1 = 1;
|
||||
COMMIT;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = 'Opdracht is verstuurd'
|
||||
WHERE fac_srtnotificatie_key IN (67, 68) -- ORDSNT/ORDSNX
|
||||
--AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE
|
||||
AND 1 = 1;
|
||||
COMMIT;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = 'Object is uitgegeven'
|
||||
WHERE fac_srtnotificatie_key = 98 -- INSOUT
|
||||
--AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE
|
||||
AND 1 = 1;
|
||||
COMMIT;
|
||||
|
||||
FOR rec IN c2
|
||||
LOOP
|
||||
BEGIN
|
||||
v_tracking_oms := rec.fac_tracking_oms;
|
||||
WHILE v_count_upd < rec.aant_email
|
||||
LOOP
|
||||
v_tracking_oms := SUBSTR (v_tracking_oms, 1, INSTR (SUBSTR (v_tracking_oms, 1, INSTR (v_tracking_oms, '@')), ' ', -1))
|
||||
|| SUBSTR (v_tracking_oms, INSTR (v_tracking_oms, '@') + 1);
|
||||
|
||||
v_count_upd := v_count_upd + 1;
|
||||
END LOOP;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = v_tracking_oms
|
||||
WHERE fac_tracking_key = rec.fac_tracking_key;
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'W', v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Tracking/#geanonimiseerd: ' || TO_CHAR (v_count_upd), '');
|
||||
COMMIT;
|
||||
END;
|
||||
--djin_anonimiseer (p_incl_nodelays IN BOOLEAN, -- TRUE=Zonder delay + toekomstig wat normaal na afgesproken termijn gebeurt!
|
||||
-- p_incl_oslogins IN BOOLEAN, -- TRUE=Anonimiseren/wissen E-mailadres + Loginnaam van personen!
|
||||
-- p_incl_tracking IN BOOLEAN) -- TRUE=Anonimiseren tracking (MLDBEH/ORDSNT/ORDSNX/INSOUT + E-mailadressen)!
|
||||
BEGIN
|
||||
v_count_del := 0;
|
||||
|
||||
FOR rec IN c_afspraak
|
||||
LOOP
|
||||
-- Delete alle kenmerkwaarden van bezoekers bij te verwijderen afspraken.
|
||||
DELETE FROM bez_kenmerkwaarde kw
|
||||
WHERE EXISTS
|
||||
(SELECT 1
|
||||
FROM bez_bezoekers
|
||||
WHERE bez_bezoekers_key = kw.bez_bezoekers_key
|
||||
AND bez_afspraak_key = rec.bez_afspraak_key);
|
||||
|
||||
-- Delete alle bezoekers-tracking bij te verwijderen afspraken.
|
||||
DELETE FROM fac_tracking t
|
||||
WHERE t.fac_srtnotificatie_key IN (28, 29, 30, 31, 32) -- BEZBAD/BEZDON/BEZDO2/BEZOUT/BEZOU2
|
||||
AND EXISTS
|
||||
(SELECT 1
|
||||
FROM bez_bezoekers
|
||||
WHERE bez_bezoekers_key = t.fac_tracking_refkey
|
||||
AND bez_afspraak_key = rec.bez_afspraak_key);
|
||||
|
||||
-- Delete alle bezoekers bij te verwijderen afspraken.
|
||||
DELETE FROM bez_bezoekers
|
||||
WHERE bez_afspraak_key = rec.bez_afspraak_key;
|
||||
|
||||
-- Delete alle afspraak-tracking bij te verwijderen afspraken.
|
||||
DELETE FROM fac_tracking
|
||||
WHERE fac_srtnotificatie_key IN (26, 27, 128) -- BEZMUT/BEZUPD/BEZMAI
|
||||
AND fac_tracking_refkey = rec.bez_afspraak_key;
|
||||
|
||||
-- Delete alle te verwijderen afspraken.
|
||||
DELETE FROM bez_afspraak
|
||||
WHERE bez_afspraak_key = rec.bez_afspraak_key;
|
||||
|
||||
v_count_del := v_count_del + 1;
|
||||
--fac.trackaction ('#BEZUPD', rec.bez_afspraak_key, NULL, v_nu, v_txt_anoniem);
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Afspraken/#verwijderd: ' || TO_CHAR (v_count_del), '');
|
||||
COMMIT;
|
||||
|
||||
v_count_del := 0;
|
||||
|
||||
-- Delete bezorgadressen van 'Aanvraag bloemen/boeketten'-meldingen 1 maand
|
||||
-- na leverdatum.
|
||||
FOR rec IN c_bezorgadres
|
||||
LOOP
|
||||
DELETE FROM mld_kenmerkmelding
|
||||
WHERE mld_kenmerkmelding_key = rec.mld_kenmerkmelding_key;
|
||||
|
||||
v_count_del := v_count_del + 1;
|
||||
--fac.trackaction ('#MLDUPD', rec.mld_melding_key, NULL, v_nu, v_txt_anoniem);
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Bezorgadressen/#verwijderd: ' || TO_CHAR (v_count_del), '');
|
||||
COMMIT;
|
||||
|
||||
prs_anonimiseer (p_applname);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
|
||||
END djin_select_nachtwerk;
|
||||
/
|
||||
|
||||
-- Anonimisering zoals normaal via NACHTWERK gebeurt, maar dan direct muv. de
|
||||
-- medewerkers (dat gebeurt afhankelijk van de versie van dit script)!
|
||||
BEGIN
|
||||
djin_select_nachtwerk ('NACHTWERK_MAX', -1);
|
||||
djin_anonimiseer (TRUE, TRUE, TRUE);
|
||||
END;
|
||||
/
|
||||
|
||||
-- Naam=X/Voornaam=-/Tussenvoegsel=NULL/Telefoonnr=NULL/Mobiel=NULL
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_naam = '[Geanonimiseerd]',
|
||||
prs_perslid_tussenvoegsel = NULL,
|
||||
prs_perslid_voorletters = NULL,
|
||||
prs_perslid_voornaam = NULL,
|
||||
prs_perslid_telefoonnr = NULL,
|
||||
prs_perslid_mobiel = NULL;
|
||||
COMMIT;
|
||||
|
||||
-- Email=NULL/Oslogin=NULL behalve van de gebruikers in '_Admin'-groepen
|
||||
UPDATE prs_perslid p
|
||||
SET p.prs_perslid_email = NULL,
|
||||
p.prs_perslid_oslogin = NULL,
|
||||
p.prs_perslid_oslogin2 = NULL
|
||||
WHERE NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM fac_gebruikersgroep gg, fac_groep g
|
||||
WHERE gg.prs_perslid_key = p.prs_perslid_key
|
||||
AND gg.fac_groep_key = g.fac_groep_key
|
||||
AND g.fac_groep_omschrijving LIKE '_Admin%');
|
||||
COMMIT;
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
-- Pre-exportscript ter "medium" anonimisering van de DJIN-database zoals
|
||||
-- aangevraagd met DJIN#37953.
|
||||
-- Pre-exportscript ter "medium" anonimisering van de DJIN- en DVON-database.
|
||||
-- Oorspronkelijk aangevraagd met DJIN#37953 en met DJIN#57592 geschikt gemaakt
|
||||
-- voor DVON.
|
||||
|
||||
DEFINE thisfile = 'AnonimiseerFMS_med.SQL'
|
||||
DEFINE dbuser = '^FMS'
|
||||
DEFINE thisfile = 'Anonimiseer_min.SQL'
|
||||
DEFINE dbuser = '^FMS|^FMD'
|
||||
|
||||
SET ECHO ON
|
||||
SET DEFINE ON
|
||||
@@ -18,264 +19,14 @@ SET DEFINE OFF
|
||||
|
||||
------ payload begin ------
|
||||
|
||||
CREATE OR REPLACE PROCEDURE djin_select_nachtwerk (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2)
|
||||
AS
|
||||
CURSOR c_afspraak
|
||||
IS
|
||||
SELECT bez_afspraak_key
|
||||
FROM bez_afspraak
|
||||
--WHERE bez_afspraak_datum < TRUNC (SYSDATE - 180)
|
||||
ORDER BY bez_afspraak_key;
|
||||
|
||||
-- DJIN#39650: Anonimiseren=verwijderen kenmerk=141 van melding=82.
|
||||
CURSOR c_bezorgadres
|
||||
IS
|
||||
SELECT km.mld_kenmerkmelding_key
|
||||
FROM mld_melding m, mld_kenmerkmelding km
|
||||
WHERE m.mld_stdmelding_key = 82 -- Aanvraag bloemen/boeketten
|
||||
AND m.mld_melding_key = km.mld_melding_key
|
||||
AND km.mld_kenmerk_key = 141 -- Bezorgadres
|
||||
--AND EXISTS (SELECT 1
|
||||
-- FROM mld_v_aanwezigkenmerkmelding
|
||||
-- WHERE mld_melding_key = m.mld_melding_key
|
||||
-- AND mld_kenmerk_key = 21 -- Gewenste leverdatum
|
||||
-- AND ADD_MONTHS (fac.safe_to_date (km.mld_kenmerkmelding_waarde, 'dd-mm-yyyy'), 1) < SYSDATE)
|
||||
ORDER BY km.mld_kenmerkmelding_key;
|
||||
|
||||
c_oud_medewerker VARCHAR2 (100) := 'Oud medewerker';
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_count_del NUMBER (10);
|
||||
|
||||
-- SUBPROC
|
||||
PROCEDURE prs_anonimiseer (p_applname IN VARCHAR2)
|
||||
AS
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT '[' || TO_CHAR (p.prs_perslid_key) || '|' || p.prs_perslid_naam || '|' || p.prs_perslid_email || '] ' aanduiding,
|
||||
p.prs_perslid_key
|
||||
FROM prs_perslid p
|
||||
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
|
||||
AND p.prs_perslid_oslogin2 IS NULL
|
||||
AND p.prs_perslid_apikey IS NULL -- Voor de zekerheid!
|
||||
AND ADD_MONTHS (COALESCE (p.prs_perslid_login, p.prs_perslid_aanmaak), 12) < SYSDATE -- Een jaar niet ingelogd!
|
||||
--AND p.prs_perslid_upper != UPPER ('Oud medewerker')
|
||||
AND p.prs_perslid_upper != UPPER (c_oud_medewerker)
|
||||
AND NOT EXISTS (SELECT 1 -- Geen actuele verplichtingen!
|
||||
FROM prs_v_verplichting_keys
|
||||
WHERE prs_perslid_key = p.prs_perslid_key)
|
||||
ORDER BY 2;
|
||||
|
||||
CURSOR c2
|
||||
IS
|
||||
SELECT t.fac_tracking_key,
|
||||
t.fac_tracking_oms,
|
||||
LENGTH (REPLACE (t.fac_tracking_oms || 'x', ' ', '')) - LENGTH (REPLACE (TRANSLATE (t.fac_tracking_oms || 'x', '@', ' '), ' ', '')) aant_email
|
||||
FROM fac_tracking t, fac_srtnotificatie sn
|
||||
WHERE ADD_MONTHS (t.fac_tracking_datum, 12) < SYSDATE
|
||||
AND INSTR (t.fac_tracking_oms, '@') > 0
|
||||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||||
AND (sn.fac_srtnotificatie_code LIKE '%MAI' OR sn.fac_srtnotificatie_code LIKE '%MA')
|
||||
ORDER BY 1;
|
||||
|
||||
v_count_upd NUMBER (10);
|
||||
v_tracking_oms VARCHAR2 (1000);
|
||||
BEGIN
|
||||
v_count_upd := 0;
|
||||
FOR rec IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errormsg := 'Fout anonimiseren persoon';
|
||||
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_naam = c_oud_medewerker,
|
||||
prs_perslid_tussenvoegsel = NULL,
|
||||
prs_perslid_voorletters = NULL,
|
||||
prs_perslid_voornaam = NULL,
|
||||
prs_perslid_initialen = NULL,
|
||||
prs_perslid_geslacht = NULL,
|
||||
prs_perslid_nr = NULL,
|
||||
prs_perslid_telefoonnr = NULL,
|
||||
prs_perslid_mobiel = NULL,
|
||||
prs_perslid_email = NULL,
|
||||
prs_perslid_oslogin = NULL, -- prs_perslid_oslogin2 = NULL
|
||||
prs_perslid_verwijder = SYSDATE
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||||
COMMIT;
|
||||
|
||||
v_count_upd := v_count_upd + 1;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Personen/#geanonimiseerd: ' || TO_CHAR (v_count_upd), '');
|
||||
COMMIT;
|
||||
|
||||
v_errormsg := 'Fout anonimiseren tracking';
|
||||
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count_upd
|
||||
FROM fac_tracking
|
||||
WHERE fac_srtnotificatie_key IN (50, 67, 68, 98) -- MLDBEH/ORDSNT/ORDSNX/INSOUT
|
||||
AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = 'Behandelaar is toegewezen'
|
||||
WHERE fac_srtnotificatie_key = 50 -- MLDBEH
|
||||
AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE;
|
||||
COMMIT;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = 'Opdracht is verstuurd'
|
||||
WHERE fac_srtnotificatie_key IN (67, 68) -- ORDSNT/ORDSNX
|
||||
AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE;
|
||||
COMMIT;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = 'Object is uitgegeven'
|
||||
WHERE fac_srtnotificatie_key = 98 -- INSOUT
|
||||
AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE;
|
||||
COMMIT;
|
||||
|
||||
FOR rec IN c2
|
||||
LOOP
|
||||
BEGIN
|
||||
v_tracking_oms := rec.fac_tracking_oms;
|
||||
WHILE v_count_upd < rec.aant_email
|
||||
LOOP
|
||||
v_tracking_oms := SUBSTR (v_tracking_oms, 1, INSTR (SUBSTR (v_tracking_oms, 1, INSTR (v_tracking_oms, '@')), ' ', -1))
|
||||
|| SUBSTR (v_tracking_oms, INSTR (v_tracking_oms, '@') + 1);
|
||||
|
||||
v_count_upd := v_count_upd + 1;
|
||||
END LOOP;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = v_tracking_oms
|
||||
WHERE fac_tracking_key = rec.fac_tracking_key;
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'W', v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Tracking/#geanonimiseerd: ' || TO_CHAR (v_count_upd), '');
|
||||
COMMIT;
|
||||
END;
|
||||
--djin_anonimiseer (p_incl_nodelays IN BOOLEAN, -- TRUE=Zonder delay + toekomstig wat normaal na afgesproken termijn gebeurt!
|
||||
-- p_incl_oslogins IN BOOLEAN, -- TRUE=Anonimiseren/wissen E-mailadres + Loginnaam van personen!
|
||||
-- p_incl_tracking IN BOOLEAN) -- TRUE=Anonimiseren tracking (MLDBEH/ORDSNT/ORDSNX/INSOUT + E-mailadressen)!
|
||||
BEGIN
|
||||
v_count_del := 0;
|
||||
|
||||
FOR rec IN c_afspraak
|
||||
LOOP
|
||||
-- Delete alle kenmerkwaarden van bezoekers bij te verwijderen afspraken.
|
||||
DELETE FROM bez_kenmerkwaarde kw
|
||||
WHERE EXISTS
|
||||
(SELECT 1
|
||||
FROM bez_bezoekers
|
||||
WHERE bez_bezoekers_key = kw.bez_bezoekers_key
|
||||
AND bez_afspraak_key = rec.bez_afspraak_key);
|
||||
|
||||
-- Delete alle bezoekers-tracking bij te verwijderen afspraken.
|
||||
DELETE FROM fac_tracking t
|
||||
WHERE t.fac_srtnotificatie_key IN (28, 29, 30, 31, 32) -- BEZBAD/BEZDON/BEZDO2/BEZOUT/BEZOU2
|
||||
AND EXISTS
|
||||
(SELECT 1
|
||||
FROM bez_bezoekers
|
||||
WHERE bez_bezoekers_key = t.fac_tracking_refkey
|
||||
AND bez_afspraak_key = rec.bez_afspraak_key);
|
||||
|
||||
-- Delete alle bezoekers bij te verwijderen afspraken.
|
||||
DELETE FROM bez_bezoekers
|
||||
WHERE bez_afspraak_key = rec.bez_afspraak_key;
|
||||
|
||||
-- Delete alle afspraak-tracking bij te verwijderen afspraken.
|
||||
DELETE FROM fac_tracking
|
||||
WHERE fac_srtnotificatie_key IN (26, 27, 128) -- BEZMUT/BEZUPD/BEZMAI
|
||||
AND fac_tracking_refkey = rec.bez_afspraak_key;
|
||||
|
||||
-- Delete alle te verwijderen afspraken.
|
||||
DELETE FROM bez_afspraak
|
||||
WHERE bez_afspraak_key = rec.bez_afspraak_key;
|
||||
|
||||
v_count_del := v_count_del + 1;
|
||||
--fac.trackaction ('#BEZUPD', rec.bez_afspraak_key, NULL, v_nu, v_txt_anoniem);
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Afspraken/#verwijderd: ' || TO_CHAR (v_count_del), '');
|
||||
COMMIT;
|
||||
|
||||
v_count_del := 0;
|
||||
|
||||
-- Delete bezorgadressen van 'Aanvraag bloemen/boeketten'-meldingen 1 maand
|
||||
-- na leverdatum.
|
||||
FOR rec IN c_bezorgadres
|
||||
LOOP
|
||||
DELETE FROM mld_kenmerkmelding
|
||||
WHERE mld_kenmerkmelding_key = rec.mld_kenmerkmelding_key;
|
||||
|
||||
v_count_del := v_count_del + 1;
|
||||
--fac.trackaction ('#MLDUPD', rec.mld_melding_key, NULL, v_nu, v_txt_anoniem);
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Bezorgadressen/#verwijderd: ' || TO_CHAR (v_count_del), '');
|
||||
COMMIT;
|
||||
|
||||
prs_anonimiseer (p_applname);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
|
||||
END djin_select_nachtwerk;
|
||||
/
|
||||
|
||||
-- Anonimisering zoals normaal via NACHTWERK gebeurt, maar dan direct muv. de
|
||||
-- medewerkers (dat gebeurt afhankelijk van de versie van dit script) <20>n de
|
||||
-- tracking!
|
||||
BEGIN
|
||||
djin_select_nachtwerk ('NACHTWERK_MED', -1);
|
||||
djin_anonimiseer (TRUE, TRUE, FALSE);
|
||||
END;
|
||||
/
|
||||
|
||||
-- Naam=X/Voornaam=-/Tussenvoegsel=NULL/Telefoonnr=NULL/Mobiel=NULL
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_naam = '[Geanonimiseerd]',
|
||||
prs_perslid_tussenvoegsel = NULL,
|
||||
prs_perslid_voorletters = NULL,
|
||||
prs_perslid_voornaam = NULL,
|
||||
prs_perslid_telefoonnr = NULL,
|
||||
prs_perslid_mobiel = NULL;
|
||||
COMMIT;
|
||||
|
||||
-- Email=NULL/Oslogin=NULL behalve van de gebruikers in '_Admin'-groepen
|
||||
UPDATE prs_perslid p
|
||||
SET p.prs_perslid_email = NULL,
|
||||
p.prs_perslid_oslogin = NULL,
|
||||
p.prs_perslid_oslogin2 = NULL
|
||||
WHERE NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM fac_gebruikersgroep gg, fac_groep g
|
||||
WHERE gg.prs_perslid_key = p.prs_perslid_key
|
||||
AND gg.fac_groep_key = g.fac_groep_key
|
||||
AND g.fac_groep_omschrijving LIKE '_Admin%');
|
||||
COMMIT;
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
-- Pre-exportscript ter "minimale" anonimisering van de DJIN-database zoals
|
||||
-- aangevraagd met DJIN#37953.
|
||||
-- Pre-exportscript ter "minimale" anonimisering van de DJIN- en DVON-database.
|
||||
-- Oorspronkelijk aangevraagd met DJIN#37953 en met DJIN#57592 geschikt gemaakt
|
||||
-- voor DVON.
|
||||
|
||||
DEFINE thisfile = 'AnonimiseerFMS_min.SQL'
|
||||
DEFINE dbuser = '^FMS'
|
||||
DEFINE thisfile = 'Anonimiseer_min.SQL'
|
||||
DEFINE dbuser = '^FMS|^FMD'
|
||||
|
||||
SET ECHO ON
|
||||
SET DEFINE ON
|
||||
@@ -18,251 +19,14 @@ SET DEFINE OFF
|
||||
|
||||
------ payload begin ------
|
||||
|
||||
CREATE OR REPLACE PROCEDURE djin_select_nachtwerk (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2)
|
||||
AS
|
||||
CURSOR c_afspraak
|
||||
IS
|
||||
SELECT bez_afspraak_key
|
||||
FROM bez_afspraak
|
||||
--WHERE bez_afspraak_datum < TRUNC (SYSDATE - 180)
|
||||
ORDER BY bez_afspraak_key;
|
||||
|
||||
-- DJIN#39650: Anonimiseren=verwijderen kenmerk=141 van melding=82.
|
||||
CURSOR c_bezorgadres
|
||||
IS
|
||||
SELECT km.mld_kenmerkmelding_key
|
||||
FROM mld_melding m, mld_kenmerkmelding km
|
||||
WHERE m.mld_stdmelding_key = 82 -- Aanvraag bloemen/boeketten
|
||||
AND m.mld_melding_key = km.mld_melding_key
|
||||
AND km.mld_kenmerk_key = 141 -- Bezorgadres
|
||||
--AND EXISTS (SELECT 1
|
||||
-- FROM mld_v_aanwezigkenmerkmelding
|
||||
-- WHERE mld_melding_key = m.mld_melding_key
|
||||
-- AND mld_kenmerk_key = 21 -- Gewenste leverdatum
|
||||
-- AND ADD_MONTHS (fac.safe_to_date (km.mld_kenmerkmelding_waarde, 'dd-mm-yyyy'), 1) < SYSDATE)
|
||||
ORDER BY km.mld_kenmerkmelding_key;
|
||||
|
||||
c_oud_medewerker VARCHAR2 (100) := 'Oud medewerker';
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_count_del NUMBER (10);
|
||||
|
||||
-- SUBPROC
|
||||
PROCEDURE prs_anonimiseer (p_applname IN VARCHAR2)
|
||||
AS
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT '[' || TO_CHAR (p.prs_perslid_key) || '|' || p.prs_perslid_naam || '|' || p.prs_perslid_email || '] ' aanduiding,
|
||||
p.prs_perslid_key
|
||||
FROM prs_perslid p
|
||||
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
|
||||
AND p.prs_perslid_oslogin2 IS NULL
|
||||
AND p.prs_perslid_apikey IS NULL -- Voor de zekerheid!
|
||||
AND ADD_MONTHS (COALESCE (p.prs_perslid_login, p.prs_perslid_aanmaak), 12) < SYSDATE -- Een jaar niet ingelogd!
|
||||
--AND p.prs_perslid_upper != UPPER ('Oud medewerker')
|
||||
AND p.prs_perslid_upper != UPPER (c_oud_medewerker)
|
||||
AND NOT EXISTS (SELECT 1 -- Geen actuele verplichtingen!
|
||||
FROM prs_v_verplichting_keys
|
||||
WHERE prs_perslid_key = p.prs_perslid_key)
|
||||
ORDER BY 2;
|
||||
|
||||
CURSOR c2
|
||||
IS
|
||||
SELECT t.fac_tracking_key,
|
||||
t.fac_tracking_oms,
|
||||
LENGTH (REPLACE (t.fac_tracking_oms || 'x', ' ', '')) - LENGTH (REPLACE (TRANSLATE (t.fac_tracking_oms || 'x', '@', ' '), ' ', '')) aant_email
|
||||
FROM fac_tracking t, fac_srtnotificatie sn
|
||||
WHERE ADD_MONTHS (t.fac_tracking_datum, 12) < SYSDATE
|
||||
AND INSTR (t.fac_tracking_oms, '@') > 0
|
||||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||||
AND (sn.fac_srtnotificatie_code LIKE '%MAI' OR sn.fac_srtnotificatie_code LIKE '%MA')
|
||||
ORDER BY 1;
|
||||
|
||||
v_count_upd NUMBER (10);
|
||||
v_tracking_oms VARCHAR2 (1000);
|
||||
BEGIN
|
||||
v_count_upd := 0;
|
||||
FOR rec IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errormsg := 'Fout anonimiseren persoon';
|
||||
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_naam = c_oud_medewerker,
|
||||
prs_perslid_tussenvoegsel = NULL,
|
||||
prs_perslid_voorletters = NULL,
|
||||
prs_perslid_voornaam = NULL,
|
||||
prs_perslid_initialen = NULL,
|
||||
prs_perslid_geslacht = NULL,
|
||||
prs_perslid_nr = NULL,
|
||||
prs_perslid_telefoonnr = NULL,
|
||||
prs_perslid_mobiel = NULL,
|
||||
prs_perslid_email = NULL,
|
||||
prs_perslid_oslogin = NULL, -- prs_perslid_oslogin2 = NULL
|
||||
prs_perslid_verwijder = SYSDATE
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key;
|
||||
COMMIT;
|
||||
|
||||
v_count_upd := v_count_upd + 1;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Personen/#geanonimiseerd: ' || TO_CHAR (v_count_upd), '');
|
||||
COMMIT;
|
||||
|
||||
v_errormsg := 'Fout anonimiseren tracking';
|
||||
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count_upd
|
||||
FROM fac_tracking
|
||||
WHERE fac_srtnotificatie_key IN (50, 67, 68, 98) -- MLDBEH/ORDSNT/ORDSNX/INSOUT
|
||||
AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = 'Behandelaar is toegewezen'
|
||||
WHERE fac_srtnotificatie_key = 50 -- MLDBEH
|
||||
AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE;
|
||||
COMMIT;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = 'Opdracht is verstuurd'
|
||||
WHERE fac_srtnotificatie_key IN (67, 68) -- ORDSNT/ORDSNX
|
||||
AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE;
|
||||
COMMIT;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = 'Object is uitgegeven'
|
||||
WHERE fac_srtnotificatie_key = 98 -- INSOUT
|
||||
AND ADD_MONTHS (fac_tracking_datum, 12) < SYSDATE;
|
||||
COMMIT;
|
||||
|
||||
FOR rec IN c2
|
||||
LOOP
|
||||
BEGIN
|
||||
v_tracking_oms := rec.fac_tracking_oms;
|
||||
WHILE v_count_upd < rec.aant_email
|
||||
LOOP
|
||||
v_tracking_oms := SUBSTR (v_tracking_oms, 1, INSTR (SUBSTR (v_tracking_oms, 1, INSTR (v_tracking_oms, '@')), ' ', -1))
|
||||
|| SUBSTR (v_tracking_oms, INSTR (v_tracking_oms, '@') + 1);
|
||||
|
||||
v_count_upd := v_count_upd + 1;
|
||||
END LOOP;
|
||||
|
||||
UPDATE fac_tracking
|
||||
SET fac_tracking_oms = v_tracking_oms
|
||||
WHERE fac_tracking_key = rec.fac_tracking_key;
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'W', v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Tracking/#geanonimiseerd: ' || TO_CHAR (v_count_upd), '');
|
||||
COMMIT;
|
||||
END;
|
||||
--djin_anonimiseer (p_incl_nodelays IN BOOLEAN, -- TRUE=Zonder delay + toekomstig wat normaal na afgesproken termijn gebeurt!
|
||||
-- p_incl_oslogins IN BOOLEAN, -- TRUE=Anonimiseren/wissen E-mailadres + Loginnaam van personen!
|
||||
-- p_incl_tracking IN BOOLEAN) -- TRUE=Anonimiseren tracking (MLDBEH/ORDSNT/ORDSNX/INSOUT + E-mailadressen)!
|
||||
BEGIN
|
||||
v_count_del := 0;
|
||||
|
||||
FOR rec IN c_afspraak
|
||||
LOOP
|
||||
-- Delete alle kenmerkwaarden van bezoekers bij te verwijderen afspraken.
|
||||
DELETE FROM bez_kenmerkwaarde kw
|
||||
WHERE EXISTS
|
||||
(SELECT 1
|
||||
FROM bez_bezoekers
|
||||
WHERE bez_bezoekers_key = kw.bez_bezoekers_key
|
||||
AND bez_afspraak_key = rec.bez_afspraak_key);
|
||||
|
||||
-- Delete alle bezoekers-tracking bij te verwijderen afspraken.
|
||||
DELETE FROM fac_tracking t
|
||||
WHERE t.fac_srtnotificatie_key IN (28, 29, 30, 31, 32) -- BEZBAD/BEZDON/BEZDO2/BEZOUT/BEZOU2
|
||||
AND EXISTS
|
||||
(SELECT 1
|
||||
FROM bez_bezoekers
|
||||
WHERE bez_bezoekers_key = t.fac_tracking_refkey
|
||||
AND bez_afspraak_key = rec.bez_afspraak_key);
|
||||
|
||||
-- Delete alle bezoekers bij te verwijderen afspraken.
|
||||
DELETE FROM bez_bezoekers
|
||||
WHERE bez_afspraak_key = rec.bez_afspraak_key;
|
||||
|
||||
-- Delete alle afspraak-tracking bij te verwijderen afspraken.
|
||||
DELETE FROM fac_tracking
|
||||
WHERE fac_srtnotificatie_key IN (26, 27, 128) -- BEZMUT/BEZUPD/BEZMAI
|
||||
AND fac_tracking_refkey = rec.bez_afspraak_key;
|
||||
|
||||
-- Delete alle te verwijderen afspraken.
|
||||
DELETE FROM bez_afspraak
|
||||
WHERE bez_afspraak_key = rec.bez_afspraak_key;
|
||||
|
||||
v_count_del := v_count_del + 1;
|
||||
--fac.trackaction ('#BEZUPD', rec.bez_afspraak_key, NULL, v_nu, v_txt_anoniem);
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Afspraken/#verwijderd: ' || TO_CHAR (v_count_del), '');
|
||||
COMMIT;
|
||||
|
||||
v_count_del := 0;
|
||||
|
||||
-- Delete bezorgadressen van 'Aanvraag bloemen/boeketten'-meldingen 1 maand
|
||||
-- na leverdatum.
|
||||
FOR rec IN c_bezorgadres
|
||||
LOOP
|
||||
DELETE FROM mld_kenmerkmelding
|
||||
WHERE mld_kenmerkmelding_key = rec.mld_kenmerkmelding_key;
|
||||
|
||||
v_count_del := v_count_del + 1;
|
||||
--fac.trackaction ('#MLDUPD', rec.mld_melding_key, NULL, v_nu, v_txt_anoniem);
|
||||
END LOOP;
|
||||
|
||||
fac.writelog (p_applname, 'S', 'Bezorgadressen/#verwijderd: ' || TO_CHAR (v_count_del), '');
|
||||
COMMIT;
|
||||
|
||||
prs_anonimiseer (p_applname);
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
|
||||
END djin_select_nachtwerk;
|
||||
/
|
||||
|
||||
-- Anonimisering zoals normaal via NACHTWERK gebeurt, maar dan direct muv. de
|
||||
-- medewerkers (dat gebeurt afhankelijk van de versie van dit script) <20>n de
|
||||
-- tracking!
|
||||
BEGIN
|
||||
djin_select_nachtwerk ('NACHTWERK_MIN', -1);
|
||||
djin_anonimiseer (TRUE, FALSE, FALSE);
|
||||
END;
|
||||
/
|
||||
|
||||
-- Naam=X/Voornaam=-/Tussenvoegsel=NULL/Telefoonnr=NULL/Mobiel=NULL
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_naam = '[Geanonimiseerd]',
|
||||
prs_perslid_tussenvoegsel = NULL,
|
||||
prs_perslid_voorletters = NULL,
|
||||
prs_perslid_voornaam = NULL,
|
||||
prs_perslid_telefoonnr = NULL,
|
||||
prs_perslid_mobiel = NULL;
|
||||
COMMIT;
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
Reference in New Issue
Block a user