From 94b2e60f14dfc7968fca60f6442ee7db133239a7 Mon Sep 17 00:00:00 2001 From: Maarten van der Heide Date: Mon, 16 Jul 2018 15:51:12 +0000 Subject: [PATCH] FSN#53955 BSSC0 svn path=/Customer/trunk/; revision=38532 --- BSSC/bssc.sql | 486 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 486 insertions(+) create mode 100644 BSSC/bssc.sql diff --git a/BSSC/bssc.sql b/BSSC/bssc.sql new file mode 100644 index 000000000..a75c6c16a --- /dev/null +++ b/BSSC/bssc.sql @@ -0,0 +1,486 @@ +-- +-- $Id$ +-- +-- Script containing customer specific db-configuration for BSSC. +DEFINE thisfile = 'BSSC.SQL' +DEFINE dbuser = '^BLCC' + +SET ECHO ON +SET DEFINE ON +COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; +WHENEVER SQLERROR EXIT; +SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL; +WHENEVER SQLERROR CONTINUE; +SPOOL &fcltlogfile +SET DEFINE OFF + +------ payload begin ------ + +CREATE OR REPLACE VIEW bssc_v_rap_import_log +( + fclt_f_applicatie, + datum, + fclt_f_status, + omschrijving, + hint +) +AS + SELECT COALESCE (fac_import_app_code, imp_log_applicatie), + TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'), + imp_log_status, + imp_log_omschrijving, + imp_log_hint + FROM imp_log il1, fac_import fi1, fac_import_app fia1 + WHERE il1.fac_import_key = fi1.fac_import_key(+) + AND fi1.fac_import_app_key = fia1.fac_import_app_key(+) + AND NOT EXISTS + (SELECT 1 + FROM imp_log il2, fac_import fi2 + WHERE il2.fac_import_key = fi2.fac_import_key + AND fi2.fac_import_app_key = fi1.fac_import_app_key + AND il2.fac_import_key > il1.fac_import_key); + +CREATE OR REPLACE PROCEDURE bssc_import_perslid (p_import_key IN NUMBER) +AS + v_errormsg VARCHAR2 (1000) := '-'; + v_errorhint VARCHAR2 (1000) := '-'; + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); +BEGIN + v_errorhint := 'Generieke import ' || TO_CHAR (p_import_key); + + -- Afdelingscode-kolom hard op 'XxX' indien leeg (want verplicht)! + UPDATE fac_imp_file + SET fac_imp_file_line = + SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 2)) + || 'XxX' + || SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 3)) + WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1 + AND SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 2) + + 1, INSTR (fac_imp_file_line, ';', 1, 3) + - INSTR (fac_imp_file_line, ';', 1, 2) + - 1) IS NULL; + + COMMIT; + + -- Functie-kolom negeren en hard op 'Medewerker' (want verplicht)! + UPDATE fac_imp_file i + SET fac_imp_file_line = + SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 10)) + || 'Medewerker' + || SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 11)) + WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1; + + COMMIT; + + -- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE. + prs.import_perslid ( + p_import_key, + '0;0;0;0;0;0;3;4;5;6;' + || '0;0;0;0;10;7;8;9;0;0;' + || '11;1;2;0;0;0;12;13;14;15;' + || '16;17;18;0;0;0;0;0;0;0;' + || '0;0;0;0;0;0', + 'Loginnaam;Wachtwoord;Afdelingscode;Achternaam;Tussenvoegsel;Voornaam;Telefoon;Mobiel;Email;Geslacht;Functie;Taal;SSC FOBO;SSC Digireceptiemedewerker;SSC Huurderadministrator%'); + + -- Klantspecifieke aanpassingen. +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.imp_writelog (p_import_key, 'E', v_errormsg || v_errorhint, + 'Inleesproces personen afgebroken!'); +END bssc_import_perslid; +/ + +CREATE OR REPLACE PROCEDURE bssc_update_perslid (p_import_key IN NUMBER) +AS + -- Verwijderen personen niet in import voor afdelingen wel in import! + CURSOR c_del + IS + SELECT p.prs_perslid_key + FROM prs_v_aanwezigperslid p, prs_afdeling a + 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_afdeling_key = a.prs_afdeling_key + AND EXISTS + (SELECT 1 + FROM fac_imp_perslid i + WHERE UPPER (i.prs_afdeling_naam) = a.prs_afdeling_upper) + AND NOT EXISTS + (SELECT 1 + FROM fac_imp_perslid i + WHERE UPPER (i.prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin)) + ORDER BY 1; + + -- Bijwerken werkplek van personen naar '_' (als nog geen werkplek)! + CURSOR c_wp + IS + SELECT p.prs_perslid_key + FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i + WHERE p.prs_afdeling_key = a.prs_afdeling_key + AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam) + AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin) + AND NOT EXISTS + (SELECT 1 + FROM prs_perslidwerkplek pw + WHERE pw.prs_perslid_key = p.prs_perslid_key) + ORDER BY 1; + + -- Bijwerken language van personen naar 'EN' (volgens importbestand)! + CURSOR c_lang + IS + SELECT p.prs_perslid_key, DECODE (i.prs_kenmerk1, 'EN', 'EN', 'NL') lang + FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i + WHERE p.prs_afdeling_key = a.prs_afdeling_key + AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam) + AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin) + ORDER BY 1; + + -- Bijwerken autorisatiegroepen van personen (volgens importbestand)! + CURSOR c_rol ( + p_ssc_fobo_key IN NUMBER, + p_ssc_dmedew_key IN NUMBER, + p_ssc_hadmin_key IN NUMBER) + IS + SELECT p.prs_perslid_key, DECODE (UPPER (i.prs_kenmerk2), 'J', 1, 'Y', 1, 0) aanuit, p_ssc_fobo_key fac_groep_key + FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i + WHERE p.prs_afdeling_key = a.prs_afdeling_key + AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam) + AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin) + UNION ALL + SELECT p.prs_perslid_key, DECODE (UPPER (i.prs_kenmerk3), 'J', 1, 'Y', 1, 0) aanuit, p_ssc_dmedew_key fac_groep_key + FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i + WHERE p.prs_afdeling_key = a.prs_afdeling_key + AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam) + AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin) + UNION ALL + SELECT p.prs_perslid_key, DECODE (UPPER (i.prs_kenmerk4), 'J', 1, 'Y', 1, 0) aanuit, p_ssc_hadmin_key fac_groep_key + FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i + WHERE p.prs_afdeling_key = a.prs_afdeling_key + AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam) + AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin) + UNION ALL -- Afnemen _Default + SELECT p.prs_perslid_key, 0 aanuit, 1 fac_groep_key -- _Default + FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i + WHERE p.prs_afdeling_key = a.prs_afdeling_key + AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam) + AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin) + UNION ALL -- Toewijzen SSC FE (LABS-key=241 en PROD-key=321) + SELECT p.prs_perslid_key, 1 aanuit, 321 fac_groep_key -- SSC FE + FROM prs_v_aanwezigperslid p, prs_afdeling a, fac_imp_perslid i + WHERE p.prs_afdeling_key = a.prs_afdeling_key + AND a.prs_afdeling_upper = UPPER (i.prs_afdeling_naam) + AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin) + ORDER BY 1, 3; + + c_ruimte_key NUMBER := 2204; -- Fictieve ruimte op SSCH-locatie (LABS-key=2243 en PROD-key=2204) + c_ssc_fobo_key NUMBER := 341; -- SSC FOBO (LABS-key=241 en PROD-key=341) + c_ssc_dmedew_key NUMBER := 361; -- SSC Digireceptiemedewerker + c_ssc_hadmin_key NUMBER := 362; -- SSC Huurderadministrator + v_bedrijf_key NUMBER (10) := -1; + v_afdeling_naam VARCHAR2 (15) := ''; +BEGIN + -- Als import door Huurderadministrator, dan Afdelingscode-kolom negeren en hard op Afdeling-1 van Huurderadministrator! + SELECT ab.prs_bedrijf_key, a.prs_afdeling_naam + INTO v_bedrijf_key, v_afdeling_naam + FROM fac_import i, prs_v_aanwezigperslid p, prs_afdeling a, prs_v_afdeling_boom ab + WHERE i.fac_import_key = p_import_key + AND i.prs_perslid_key = p.prs_perslid_key + AND p.prs_afdeling_key = a.prs_afdeling_key + AND a.prs_afdeling_key = ab.prs_afdeling_key; + + IF v_bedrijf_key IN (1981, 2442) -- LABS-key+PROD-key van Huurders SSC-bedrijf; TODO: LABS-key nog een keer verwijderen! + THEN -- Import door Huurderadministrator! + UPDATE fac_imp_perslid + SET prs_afdeling_naam = v_afdeling_naam; + ELSE -- Import door andere administrator! + UPDATE fac_imp_perslid + SET prs_afdeling_naam = NULL + WHERE prs_afdeling_naam = 'XxX'; + END IF; + + COMMIT; + + -- Generieke update. + prs.update_perslid (p_import_key, 'LOGIN', NULL); + + -- Verwijderen personen niet in import voor afdelingen wel in import! + FOR rec IN c_del + LOOP + prs.delete_perslid (p_import_key, rec.prs_perslid_key); + END LOOP; + + COMMIT; + + -- Toekennen fictieve werkplek op SSCH-locatie (voor wie daar nog niet een + -- werkplek heeft)! + -- Bijwerken werkplek van personen naar '_' (als nog geen werkplek)! + FOR rec IN c_wp + LOOP + prs.movetoruimte (rec.prs_perslid_key, c_ruimte_key, NULL); + END LOOP; + + COMMIT; + + -- Bijwerken language van personen naar 'EN' (volgens importbestand)! + FOR rec IN c_lang + LOOP + UPDATE prs_perslid + SET prs_perslid_lang = rec.lang + WHERE prs_perslid_key = rec.prs_perslid_key; + END LOOP; + + COMMIT; + + -- Bijwerken autorisatiegroepen van personen (volgens importbestand)! + FOR rec IN c_rol (c_ssc_fobo_key, c_ssc_dmedew_key, c_ssc_hadmin_key) + LOOP + IF rec.aanuit = 1 + THEN + INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key) + SELECT rec.fac_groep_key, rec.prs_perslid_key + FROM DUAL + WHERE NOT EXISTS + (SELECT 1 + FROM fac_gebruikersgroep + WHERE fac_groep_key = rec.fac_groep_key + AND prs_perslid_key = rec.prs_perslid_key); + ELSE + DELETE FROM fac_gebruikersgroep + WHERE fac_groep_key = rec.fac_groep_key + AND prs_perslid_key = rec.prs_perslid_key; + END IF; + END LOOP; +END bssc_update_perslid; +/ + +/* Formatted on 7-6-2016 13:24:42 (QP5 v5.136.908.31019) */ +CREATE OR REPLACE VIEW bssc_v_autorisatiegroepen +( + fac_groep_key, + fac_groep_oms +) +AS + SELECT fac_groep_key, fac_groep_omschrijving + FROM fac_groep + WHERE fac_groep_omschrijving LIKE 'SSC%'; + +CREATE OR REPLACE VIEW bssc_v_rap_ssc_cat_looplijst +( + resnr, + activiteit, + --locatie, + ruimte, + datum, + van, + tot, + reslev, + organisatie, + gastheer, + kostenplaats, + --costcenter, + omschrijving, + aantal, + artikelnr, + artikeloms, + horeca_details, + deelnemers +) +AS + SELECT x.res_reservering_key || '/' || x.res_rsv_ruimte_volgnr || DECODE (res_rsv_ruimte_dirtlevel, 0, '', ' [ongeldig]') resnr, + x.res_activiteit_omschrijving activiteit, + --NULL locatie, + COALESCE (rr.res_ruimte_nr, rg.alg_ruimte_omschrijving) ruimte, + x.res_rsv_ruimte_van, + x.res_rsv_ruimte_van, + x.res_rsv_ruimte_tot, + x.reslev, + (SELECT prs_afdeling_omschrijving + FROM prs_afdeling + WHERE prs_afdeling_key = x.prs_afdeling_key) + organisatie, + x.prs_perslid_naam_full gastheer, + x.prs_kostenplaats_omschrijving kostenplaats, + --(SELECT MAX (kw.res_kenmerkreservering_waarde) + -- FROM res_kenmerkwaarde kw, res_kenmerk rk + -- WHERE kw.res_rsv_ruimte_key = x.res_rsv_ruimte_key + -- AND kw.res_kenmerkwaarde_verwijder IS NULL + -- AND kw.res_kenmerk_key = rk.res_kenmerk_key + -- AND rk.res_srtkenmerk_key = 1) + -- costcenter, + x.res_rsv_ruimte_omschrijving omschrijving, + x.res_rsv_artikel_aantal, + x.res_artikel_nr, + x.res_artikel_omschrijving, + (select res_kenmerkreservering_waarde + from res_kenmerkwaarde rkw, res_kenmerk k + where rkw.res_kenmerk_key = k.res_kenmerk_key + and k.res_srtkenmerk_key = 142 + and x.res_rsv_ruimte_key = rkw.res_rsv_ruimte_key) horeca_details, + x.res_rsv_ruimte_bezoekers + FROM (SELECT rrr.res_rsv_ruimte_key, + rrr.res_reservering_key, + rrr.res_rsv_ruimte_volgnr, + act.res_activiteit_omschrijving, + COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) res_ruimte_key, + COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) alg_ruimte_key, + rrr.res_rsv_ruimte_van, + rrr.res_rsv_ruimte_tot, + rra.res_rsv_artikel_levering reslev, + COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) prs_afdeling_key, + pf.prs_perslid_naam_full, + kp.prs_kostenplaats_nr, + kp.prs_kostenplaats_omschrijving, + kl.prs_kenmerklink_waarde, + rrr.res_rsv_ruimte_omschrijving, + rra.res_rsv_artikel_aantal, + ra.res_artikel_nr, + ra.res_artikel_omschrijving, + rrr.res_rsv_ruimte_bezoekers, + rrr.res_rsv_ruimte_dirtlevel + FROM res_rsv_ruimte rrr, + res_activiteit act, + res_ruimte_opstelling rro, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NULL + GROUP BY res_ruimte_key) rar1, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NOT NULL + GROUP BY res_ruimte_key) rar2, + alg_v_allonroerendgoed aog, + prs_v_perslid_fullnames_all pf, + prs_kostenplaats kp, + prs_perslid p, + prs_v_afdeling_boom ab, + prs_kenmerklink kl, + res_v_aanwezigrsv_artikel rra, + res_artikel ra + WHERE rrr.res_activiteit_key = act.res_activiteit_key + AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) + AND rro.res_ruimte_key = rar1.res_ruimte_key(+) + AND rro.res_ruimte_key = rar2.res_ruimte_key(+) + AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key + AND aog.alg_locatie_key = 21 -- SSC + AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key + AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) + AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key + AND p.prs_afdeling_key = ab.prs_afdeling_key + AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) = kl.prs_link_key(+) + AND kl.prs_kenmerklink_niveau(+) = 'A' + AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer + AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key + AND rra.res_artikel_key = ra.res_artikel_key + AND rra.res_rsv_artikel_dirtlevel = 0 + AND rrr.res_status_fo_key != 4 -- vervallen + AND rra.res_rsv_artikel_levering > TO_DATE ('20171101', 'yyyymmdd') + AND rra.res_rsv_artikel_levering < TRUNC (SYSDATE, 'IW') + 21) x + LEFT JOIN res_ruimte rr + ON x.res_ruimte_key = rr.res_ruimte_key + LEFT JOIN alg_v_ruimte_gegevens_all rg + ON x.alg_ruimte_key = rg.alg_ruimte_key; + +CREATE OR REPLACE VIEW bssc_v_rap_ssc_cat_factlijst +( + resnr, + datum, + organisatie, + gastheer, + kostenplaats, + --costcenter, + omschrijving, + totaal +) +AS -- Catering gegroepeerd per reservering + SELECT res_id, + TRUNC (reslev), + prs_afdeling_omschrijving organisatie, + prs_perslid_naam_full gastheer, + prs_kostenplaats_omschrijving kostenplaats, + --(SELECT MAX (kw.res_kenmerkreservering_waarde) + -- FROM res_kenmerkwaarde kw, res_kenmerk rk + -- WHERE kw.res_rsv_ruimte_key = res_rsv_ruimte_key + -- AND kw.res_kenmerkwaarde_verwijder IS NULL + -- AND kw.res_kenmerk_key = rk.res_kenmerk_key + -- AND rk.res_srtkenmerk_key = 1) + -- costcenter, + res_rsv_ruimte_omschrijving omschrijving, + SUM (COALESCE (verw_prijs, prijs)) + FROM (SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr res_id, + rra.res_rsv_artikel_levering reslev, + prs_afdeling_omschrijving, + pf.prs_perslid_naam_full, + kp.prs_kostenplaats_nr, + kp.prs_kostenplaats_omschrijving, + rrr.res_rsv_ruimte_omschrijving, + rra.res_rsv_artikel_prijs verw_prijs, + rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs + FROM res_rsv_ruimte rrr, + res_ruimte_opstelling rro, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NULL + GROUP BY res_ruimte_key) rar1, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NOT NULL + GROUP BY res_ruimte_key) rar2, + alg_v_allonroerendgoed aog, + prs_v_perslid_fullnames_all pf, + prs_kostenplaats kp, + prs_perslid p, + prs_afdeling a, + prs_v_afdeling_boom ab, + prs_kenmerklink kl, + res_v_aanwezigrsv_artikel rra, + res_artikel ra, + res_discipline rd, + res_disc_params dp, + prs_bedrijf b, + prs_kostensoort ks + WHERE rrr.res_rsv_ruimte_dirtlevel = 0 + AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) + AND rro.res_ruimte_key = rar1.res_ruimte_key(+) + AND rro.res_ruimte_key = rar2.res_ruimte_key(+) + AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key + AND aog.alg_locatie_key = 21 -- SSC + AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key + AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+) + AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key + AND p.prs_afdeling_key = a.prs_afdeling_key + AND p.prs_afdeling_key = ab.prs_afdeling_key + AND COALESCE (ab.prs_afdeling_key2, ab.prs_afdeling_key) = kl.prs_link_key(+) + AND kl.prs_kenmerklink_niveau(+) = 'A' + AND kl.prs_kenmerk_key(+) = 1001 -- Debiteurnummer + AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key + --AND rra.res_rsv_artikel_verwerkt IS NULL + AND rra.res_artikel_key = ra.res_artikel_key + AND ra.res_discipline_key = rd.ins_discipline_key + AND rd.ins_discipline_key = dp.res_ins_discipline_key + AND dp.prs_bedrijf_key = b.prs_bedrijf_key + AND rd.prs_kostensoort_key = ks.prs_kostensoort_key(+) + AND rra.res_rsv_artikel_dirtlevel = 0 + AND rra.res_rsv_artikel_levering > TO_DATE ('20171101', 'yyyymmdd') + AND rra.res_rsv_artikel_levering < SYSDATE) + GROUP BY res_id, + TRUNC (reslev), + prs_afdeling_omschrijving, + prs_perslid_naam_full, + prs_kostenplaats_omschrijving, + res_rsv_ruimte_omschrijving; + +------ payload end ------ + +SET DEFINE OFF +BEGIN adm.systrackscriptId ('$Id$', 0); END; +/ + +COMMIT; +SET ECHO OFF +SPOOL OFF +SET DEFINE ON +PROMPT Logfile of this upgrade is: &fcltlogfile