From 6dcf96e40a86e94dfc6bc822fbffc404ab1ba905 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Mon, 4 May 2026 08:09:16 -0400 Subject: [PATCH] Phase 3+4 rename reorg: repo dir renames + startnet.cmd menu Pairs with Phase 1+2 from earlier (alias maps in Install-FromManifest, GE-Enforce, Get-PCProfile, verify-state). See project-shopfloor-rename-reorg memory for the plan. Phase 3 (repo + paths): - git mv per-PC-type dirs to gea-shopfloor-* names: Standard -> gea-shopfloor-collections CMM -> gea-shopfloor-cmm Keyence -> gea-shopfloor-keyence Genspect -> gea-shopfloor-genspect WaxAndTrace -> gea-shopfloor-waxtrace Display -> gea-shopfloor-display Lab -> gea-shopfloor-common (folded; Timeclock+Lab merge) - New gea-shopfloor-nocollections/ (clone of collections sans UDC scripts). - New gea-shopfloor-heattreat/ (placeholder, README only). - Move Standard/ntlars-backups/ -> _ntlars-backups/ (per-MN, not per-type). - Run-ShopfloorSetup.ps1: Resolve-PCTypeDir helper walks alias group when the on-disk dir for the current pcType is missing. Set-MachineNumber helper-copy gated on collections|nocollections|legacy Standard-Machine. - Update-MachineNumber.ps1: pcProfiles lookups try gea-shopfloor-collections first, fall back to legacy Standard-Machine. PowerShell 5.1 compatible (no null-coalesce). Phase 4 (startnet.cmd menu): - Choice 3 "GEA Shopfloor" now drills into a 9-item sub-menu instead of going straight to enrollment. Sub-cats: 1. Machine with Collections -> gea-shopfloor-collections 2. Machine without Collections -> gea-shopfloor-nocollections 3. Common (Timeclock, Lab) -> gea-shopfloor-common 4. Keyence -> gea-shopfloor-keyence 5. CMM -> gea-shopfloor-cmm 6. Genspect -> gea-shopfloor-genspect 7. Heattreat -> gea-shopfloor-heattreat 8. Wax and Trace -> gea-shopfloor-waxtrace 9. Display -> gea-shopfloor-display - Office menu (existing 6-option) follows for every sub-cat. - Machine number prompt only for collections + nocollections. - pc-subtype.txt + display-type.txt no longer written. PCTYPE is a single full string (gea-shopfloor-*); subtype-aware code paths fall back to empty and resolve via the alias map. - CMM bootstrap stage gate switched from "%PCTYPE%"=="CMM" to "%PCTYPE%"=="gea-shopfloor-cmm". Test harness: - B-enforce/run.sh PCSUBTYPE default changed from "Machine" to "" so single-arg invocation matches the new single-string scheme. Two-arg legacy form ("Standard Machine") still works via aliasing. - B-enforce/tamper.ps1 alias-aware Test-MatrixEntryMatches mirroring verify-state.ps1. Smoke-tested on win11 VM as SYSTEM via qga: B-enforce harness 5-phase cycle (stage / baseline / tamper / heal / idempotent) passes 10/10 with PCType=gea-shopfloor-collections AND with legacy "Standard Machine" two-arg form. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../shopfloor-setup/Run-ShopfloorSetup.ps1 | 61 +++- .../Shopfloor/lib/Update-MachineNumber.ps1 | 15 +- .../Standard/Install-eMxInfo.cmd.template | 19 - .../Standard/Restore-UDCData.ps1 | 345 ------------------ .../0000.reg | Bin .../0600.reg | Bin .../0614.reg | Bin .../2001.reg | Bin .../2003.reg | Bin .../2005.reg | Bin .../2007.reg | Bin .../2008.reg | Bin .../2009.reg | Bin .../2010.reg | Bin .../2011.reg | Bin .../2012.reg | Bin .../2013.reg | Bin .../2014.reg | Bin .../2016.reg | Bin .../2017.reg | Bin .../2018.reg | Bin .../2019.reg | Bin .../2020.reg | Bin .../2021.reg | Bin .../2024.reg | Bin .../2025.reg | Bin .../2026.reg | Bin .../2027.reg | Bin .../2029.reg | Bin .../2031.reg | Bin .../2032.reg | Bin .../3002.reg | Bin .../3003.reg | Bin .../3006.reg | Bin .../3007.reg | Bin .../3008.reg | Bin .../3009.reg | Bin .../3010.reg | Bin .../3011.reg | Bin .../3012.reg | Bin .../3013.reg | Bin .../3014.reg | Bin .../3015.reg | Bin .../3016.reg | Bin .../3017.reg | Bin .../3018.reg | Bin .../3019.reg | Bin .../3020.reg | Bin .../3021.reg | Bin .../3022.reg | Bin .../3023.reg | Bin .../3024.reg | Bin .../3025.reg | Bin .../3027.reg | Bin .../3029.reg | Bin .../3030.reg | Bin .../3031.reg | Bin .../3033.reg | Bin .../3034.reg | Bin .../3035.reg | Bin .../3036.reg | Bin .../3037.reg | Bin .../3038.reg | Bin .../3039.reg | Bin .../3041.reg | Bin .../3042.reg | Bin .../3043.reg | Bin .../3044.reg | Bin .../3101.reg | Bin .../3102.reg | Bin .../3103.reg | Bin .../3104.reg | Bin .../3105.reg | Bin .../3106.reg | Bin .../3107.reg | Bin .../3108.reg | Bin .../3109.reg | Bin .../3110.reg | Bin .../3111.reg | Bin .../3112.reg | Bin .../3113.reg | Bin .../3114.reg | Bin .../3115.reg | Bin .../3116.reg | Bin .../3117.reg | Bin .../3118.reg | Bin .../3119.reg | Bin .../3120.reg | Bin .../3122.reg | Bin .../3123.reg | Bin .../3124.reg | Bin .../3125.reg | Bin .../3126.reg | Bin .../3127.reg | Bin .../3128.reg | Bin .../3129.reg | Bin .../3201.reg | Bin .../3202.reg | Bin .../3203.reg | Bin .../3204.reg | Bin .../3205.reg | Bin .../3206.reg | Bin .../3207.reg | Bin .../3208.reg | Bin .../3209.reg | Bin .../3210.reg | Bin .../3212.reg | Bin .../3213.reg | Bin .../4002.reg | Bin .../4003.reg | Bin .../4004.reg | Bin .../4005.reg | Bin .../4007.reg | Bin .../4008.reg | Bin .../4101.reg | Bin .../4102.reg | Bin .../4103.reg | Bin .../4701.reg | Bin .../4702.reg | Bin .../4703.reg | Bin .../4704.reg | Bin .../5002.reg | Bin .../5004.reg | Bin .../5006.reg | Bin .../5302.reg | Bin .../7401.reg | Bin .../7402.reg | Bin .../7403.reg | Bin .../7404.reg | Bin .../7405.reg | Bin .../7501.reg | Bin .../7502.reg | Bin .../7503.reg | Bin .../7504.reg | Bin .../7505.reg | Bin .../7506.reg | Bin .../7507.reg | Bin .../7601.reg | Bin .../7602.reg | Bin .../7603.reg | Bin .../7604.reg | Bin .../7605.reg | Bin .../7606.reg | Bin .../7607.reg | Bin .../7608.reg | Bin .../7801.reg | Bin .../7802.reg | Bin .../7803.reg | Bin .../7804.reg | Bin .../8001.reg | Bin .../8002.reg | Bin .../common/test/B-enforce/run.sh | 7 +- .../common/test/B-enforce/tamper.ps1 | 29 +- .../09-Setup-CMM.ps1 | 0 .../cmm-manifest.json | 0 .../01-eDNC.ps1 | 0 .../02-MachineNumberACLs.ps1 | 0 .../03-RestoreEDncConfig.ps1 | 0 .../Backup-UDCData.bat | 0 .../Backup-UDCData.ps1 | 0 .../Set-MachineNumber.bat | 0 .../Set-MachineNumber.ps1 | 0 .../udc-backups/udc_settings_3037.json | 0 .../udc-backups/udc_settings_3101.json | 0 .../udc-backups/udc_settings_3102.json | 0 .../udc-backups/udc_settings_3103.json | 0 .../udc-backups/udc_settings_3104.json | 0 .../udc-backups/udc_settings_3105.json | 0 .../udc-backups/udc_settings_3106.json | 0 .../udc-backups/udc_settings_3107.json | 0 .../udc-backups/udc_settings_3108.json | 0 .../udc-backups/udc_settings_3109.json | 0 .../udc-backups/udc_settings_3110.json | 0 .../udc-backups/udc_settings_3111.json | 0 .../udc-backups/udc_settings_3112.json | 0 .../udc-backups/udc_settings_3113.json | 0 .../udc-backups/udc_settings_3114.json | 0 .../udc-backups/udc_settings_3115.json | 0 .../udc-backups/udc_settings_3116.json | 0 .../udc-backups/udc_settings_3117.json | 0 .../udc-backups/udc_settings_3118.json | 0 .../udc-backups/udc_settings_3119.json | 0 .../udc-backups/udc_settings_3120.json | 0 .../udc-backups/udc_settings_3121.json | 0 .../udc-backups/udc_settings_3122.json | 0 .../udc-backups/udc_settings_3123.json | 0 .../udc-backups/udc_settings_3124.json | 0 .../udc-backups/udc_settings_3125.json | 0 .../udc-backups/udc_settings_3126.json | 0 .../udc-backups/udc_settings_3127.json | 0 .../udc-backups/udc_settings_3128.json | 0 .../udc-backups/udc_settings_3129.json | 0 .../udc-backups/udc_settings_3201.json | 0 .../udc-backups/udc_settings_3202.json | 0 .../udc-backups/udc_settings_3203.json | 0 .../udc-backups/udc_settings_3204.json | 0 .../udc-backups/udc_settings_3205.json | 0 .../udc-backups/udc_settings_3206.json | 0 .../udc-backups/udc_settings_3207.json | 0 .../udc-backups/udc_settings_3208.json | 0 .../udc-backups/udc_settings_3209.json | 0 .../udc-backups/udc_settings_3210.json | 0 .../udc-backups/udc_settings_3211.json | 0 .../udc-backups/udc_settings_3212.json | 0 .../udc-backups/udc_settings_4001.json | 0 .../udc-backups/udc_settings_4002.json | 0 .../udc-backups/udc_settings_4003.json | 0 .../udc-backups/udc_settings_4004.json | 0 .../udc-backups/udc_settings_4005.json | 0 .../udc-backups/udc_settings_4006.json | 0 .../udc-backups/udc_settings_4007.json | 0 .../udc-backups/udc_settings_4008.json | 0 .../udc-backups/udc_settings_4101.json | 0 .../udc-backups/udc_settings_4102.json | 0 .../udc-backups/udc_settings_4103.json | 0 .../udc-backups/udc_settings_7401.json | 0 .../udc-backups/udc_settings_7402.json | 0 .../udc-backups/udc_settings_7403.json | 0 .../udc-backups/udc_settings_7404.json | 0 .../udc-backups/udc_settings_7405.json | 0 .../udc-backups/udc_settings_7501.json | 0 .../udc-backups/udc_settings_7502.json | 0 .../udc-backups/udc_settings_7503.json | 0 .../udc-backups/udc_settings_7504.json | 0 .../udc-backups/udc_settings_7505.json | 0 .../udc-backups/udc_settings_7506.json | 0 .../udc-backups/udc_settings_7507.json | 0 .../udc-backups/udc_settings_7601.json | 0 .../udc-backups/udc_settings_7602.json | 0 .../udc-backups/udc_settings_7603.json | 0 .../udc-backups/udc_settings_7604.json | 0 .../udc-backups/udc_settings_7605.json | 0 .../udc-backups/udc_settings_7606.json | 0 .../udc-backups/udc_settings_7607.json | 0 .../udc-backups/udc_settings_7608.json | 0 .../udc-backups/udc_settings_7801.json | 0 .../udc-backups/udc_settings_7802.json | 0 .../udc-backups/udc_settings_7803.json | 0 .../udc-backups/udc_settings_7804.json | 0 .../udc-backups/udc_settings_8001.json | 0 .../udc-backups/udc_settings_8002.json | 0 .../udc-backups/udc_settings_8003.json | 0 .../udc_webserver_settings.json | 0 .../09-Setup-Lab.ps1 | 0 .../09-Setup-Display.ps1 | 0 .../09-Setup-Genspect.ps1 | 0 .../gea-shopfloor-heattreat/README.md | 8 + .../09-Setup-Keyence.ps1 | 0 .../drivers/KEYENCE_VR_SERIES.cat | Bin .../drivers/amd64/WdfCoInstaller01009.dll | Bin .../drivers/amd64/WinUsbCoinstaller2.dll | Bin .../drivers/keyence_vr_series.inf | 0 .../installers/VR-6000 Series Software.msi | Bin .../keyence-manifest.json | 0 .../gea-shopfloor-nocollections/01-eDNC.ps1 | 111 ++++++ .../02-MachineNumberACLs.ps1 | 81 ++++ .../03-RestoreEDncConfig.ps1 | 86 +++++ .../Install-eMxInfo.cmd.template | 32 ++ .../Set-MachineNumber.bat | 38 ++ .../Set-MachineNumber.ps1 | 87 +++++ .../09-Setup-WaxAndTrace.ps1 | 0 playbook/startnet.cmd | 128 +++---- 262 files changed, 592 insertions(+), 455 deletions(-) delete mode 100644 playbook/shopfloor-setup/Standard/Install-eMxInfo.cmd.template delete mode 100644 playbook/shopfloor-setup/Standard/Restore-UDCData.ps1 rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/0000.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/0600.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/0614.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2001.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2003.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2005.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2007.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2008.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2009.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2010.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2011.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2012.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2013.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2014.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2016.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2017.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2018.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2019.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2020.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2021.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2024.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2025.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2026.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2027.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2029.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2031.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/2032.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3002.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3003.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3006.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3007.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3008.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3009.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3010.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3011.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3012.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3013.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3014.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3015.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3016.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3017.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3018.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3019.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3020.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3021.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3022.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3023.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3024.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3025.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3027.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3029.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3030.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3031.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3033.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3034.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3035.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3036.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3037.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3038.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3039.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3041.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3042.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3043.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3044.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3101.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3102.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3103.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3104.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3105.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3106.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3107.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3108.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3109.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3110.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3111.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3112.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3113.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3114.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3115.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3116.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3117.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3118.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3119.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3120.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3122.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3123.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3124.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3125.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3126.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3127.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3128.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3129.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3201.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3202.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3203.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3204.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3205.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3206.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3207.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3208.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3209.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3210.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3212.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/3213.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4002.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4003.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4004.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4005.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4007.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4008.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4101.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4102.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4103.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4701.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4702.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4703.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/4704.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/5002.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/5004.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/5006.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/5302.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7401.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7402.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7403.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7404.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7405.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7501.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7502.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7503.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7504.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7505.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7506.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7507.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7601.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7602.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7603.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7604.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7605.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7606.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7607.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7608.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7801.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7802.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7803.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/7804.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/8001.reg (100%) rename playbook/shopfloor-setup/{Standard/ntlars-backups => _ntlars-backups}/8002.reg (100%) rename playbook/shopfloor-setup/{CMM => gea-shopfloor-cmm}/09-Setup-CMM.ps1 (100%) rename playbook/shopfloor-setup/{CMM => gea-shopfloor-cmm}/cmm-manifest.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/01-eDNC.ps1 (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/02-MachineNumberACLs.ps1 (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/03-RestoreEDncConfig.ps1 (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/Backup-UDCData.bat (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/Backup-UDCData.ps1 (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/Set-MachineNumber.bat (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/Set-MachineNumber.ps1 (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3037.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3101.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3102.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3103.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3104.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3105.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3106.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3107.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3108.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3109.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3110.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3111.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3112.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3113.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3114.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3115.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3116.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3117.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3118.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3119.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3120.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3121.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3122.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3123.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3124.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3125.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3126.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3127.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3128.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3129.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3201.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3202.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3203.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3204.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3205.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3206.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3207.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3208.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3209.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3210.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3211.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_3212.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_4001.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_4002.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_4003.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_4004.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_4005.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_4006.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_4007.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_4008.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_4101.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_4102.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_4103.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7401.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7402.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7403.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7404.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7405.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7501.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7502.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7503.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7504.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7505.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7506.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7507.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7601.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7602.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7603.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7604.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7605.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7606.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7607.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7608.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7801.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7802.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7803.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_7804.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_8001.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_8002.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc-backups/udc_settings_8003.json (100%) rename playbook/shopfloor-setup/{Standard => gea-shopfloor-collections}/udc_webserver_settings.json (100%) rename playbook/shopfloor-setup/{Lab => gea-shopfloor-common}/09-Setup-Lab.ps1 (100%) rename playbook/shopfloor-setup/{Display => gea-shopfloor-display}/09-Setup-Display.ps1 (100%) rename playbook/shopfloor-setup/{Genspect => gea-shopfloor-genspect}/09-Setup-Genspect.ps1 (100%) create mode 100644 playbook/shopfloor-setup/gea-shopfloor-heattreat/README.md rename playbook/shopfloor-setup/{Keyence => gea-shopfloor-keyence}/09-Setup-Keyence.ps1 (100%) rename playbook/shopfloor-setup/{Keyence => gea-shopfloor-keyence}/drivers/KEYENCE_VR_SERIES.cat (100%) rename playbook/shopfloor-setup/{Keyence => gea-shopfloor-keyence}/drivers/amd64/WdfCoInstaller01009.dll (100%) rename playbook/shopfloor-setup/{Keyence => gea-shopfloor-keyence}/drivers/amd64/WinUsbCoinstaller2.dll (100%) rename playbook/shopfloor-setup/{Keyence => gea-shopfloor-keyence}/drivers/keyence_vr_series.inf (100%) rename playbook/shopfloor-setup/{Keyence => gea-shopfloor-keyence}/installers/VR-6000 Series Software.msi (100%) rename playbook/shopfloor-setup/{Keyence => gea-shopfloor-keyence}/keyence-manifest.json (100%) create mode 100644 playbook/shopfloor-setup/gea-shopfloor-nocollections/01-eDNC.ps1 create mode 100644 playbook/shopfloor-setup/gea-shopfloor-nocollections/02-MachineNumberACLs.ps1 create mode 100644 playbook/shopfloor-setup/gea-shopfloor-nocollections/03-RestoreEDncConfig.ps1 create mode 100644 playbook/shopfloor-setup/gea-shopfloor-nocollections/Install-eMxInfo.cmd.template create mode 100644 playbook/shopfloor-setup/gea-shopfloor-nocollections/Set-MachineNumber.bat create mode 100644 playbook/shopfloor-setup/gea-shopfloor-nocollections/Set-MachineNumber.ps1 rename playbook/shopfloor-setup/{WaxAndTrace => gea-shopfloor-waxtrace}/09-Setup-WaxAndTrace.ps1 (100%) diff --git a/playbook/shopfloor-setup/Run-ShopfloorSetup.ps1 b/playbook/shopfloor-setup/Run-ShopfloorSetup.ps1 index 4c2bf0e..ac1821e 100644 --- a/playbook/shopfloor-setup/Run-ShopfloorSetup.ps1 +++ b/playbook/shopfloor-setup/Run-ShopfloorSetup.ps1 @@ -117,10 +117,42 @@ if (Test-Path $baselineDir) { } } +# --- PCType dir alias resolution (2026-05-04 rename reorg) ------------- +# Fleet PCs may have pc-type.txt = legacy "Standard"/"CMM"/etc OR new +# gea-shopfloor-* names. Repo dirs have been renamed to new names; this +# helper resolves either form to the actual on-disk dir under $setupDir. +$pcTypeDirAliases = @( + @('Standard', 'gea-shopfloor-collections', 'gea-shopfloor-nocollections'), + @('Standard-Machine', 'gea-shopfloor-collections', 'gea-shopfloor-nocollections'), + @('Standard-Timeclock', 'gea-shopfloor-common'), + @('CMM', 'gea-shopfloor-cmm'), + @('Keyence', 'gea-shopfloor-keyence'), + @('Lab', 'gea-shopfloor-common'), + @('WaxAndTrace', 'gea-shopfloor-waxtrace'), + @('Genspect', 'gea-shopfloor-genspect'), + @('Display', 'gea-shopfloor-display'), + @('Heattreat', 'gea-shopfloor-heattreat') +) +function Resolve-PCTypeDir { + param([string]$BaseDir, [string]$Name) + $primary = Join-Path $BaseDir $Name + if (Test-Path $primary) { return $primary } + foreach ($g in $pcTypeDirAliases) { + if ($g -icontains $Name) { + foreach ($alias in $g) { + if ($alias -ieq $Name) { continue } + $candidate = Join-Path $BaseDir $alias + if (Test-Path $candidate) { return $candidate } + } + } + } + return $null +} + # --- Run type-specific scripts (if not just baseline Shopfloor) --- if ($pcType -ne "Shopfloor") { - $typeDir = Join-Path $setupDir $pcType - if (Test-Path $typeDir) { + $typeDir = Resolve-PCTypeDir -BaseDir $setupDir -Name $pcType + if ($typeDir -and (Test-Path $typeDir)) { # Only run numbered scripts (01-eDNC.ps1, 02-MachineNumberACLs.ps1). # Unnumbered .ps1 files (Set-MachineNumber.ps1) are desktop tools, # not installer scripts, and must not auto-run during setup. @@ -173,14 +205,23 @@ foreach ($tool in @('sync_intune.bat', 'Configure-PC.bat', 'Force-Lockdown.bat', } } -# Standard-Machine PCs get the UDC/eDNC machine number helper. Timeclock -# PCs do not use a machine number, so the helper has nothing to do there. -if ($pcType -eq "Standard" -and $pcSubType -ne "Timeclock") { - foreach ($helper in @("Set-MachineNumber.bat", "Set-MachineNumber.ps1")) { - $src = Join-Path $setupDir "Standard\$helper" - if (Test-Path $src) { - Copy-Item -Path $src -Destination "C:\Users\SupportUser\Desktop\$helper" -Force - Write-Host "$helper copied to SupportUser desktop." +# Machine-number-using PC types (collections + nocollections, plus their +# legacy Standard-Machine alias) get the Set-MachineNumber helper on the +# SupportUser desktop. Timeclock / Lab / common variants don't use a +# machine number, so the helper has nothing to do there. +$needsMachineNumberHelper = $false +if ($pcType -ieq 'Standard' -and $pcSubType -ne 'Timeclock') { $needsMachineNumberHelper = $true } +if ($pcType -ieq 'gea-shopfloor-collections' -or $pcType -ieq 'gea-shopfloor-nocollections') { $needsMachineNumberHelper = $true } +if ($needsMachineNumberHelper) { + $helperSrc = Resolve-PCTypeDir -BaseDir $setupDir -Name 'gea-shopfloor-collections' + if (-not $helperSrc) { $helperSrc = Resolve-PCTypeDir -BaseDir $setupDir -Name 'Standard' } + foreach ($helper in @('Set-MachineNumber.bat', 'Set-MachineNumber.ps1')) { + if ($helperSrc) { + $src = Join-Path $helperSrc $helper + if (Test-Path $src) { + Copy-Item -Path $src -Destination "C:\Users\SupportUser\Desktop\$helper" -Force + Write-Host "$helper copied to SupportUser desktop." + } } } } diff --git a/playbook/shopfloor-setup/Shopfloor/lib/Update-MachineNumber.ps1 b/playbook/shopfloor-setup/Shopfloor/lib/Update-MachineNumber.ps1 index 52ae8a1..0a457ba 100644 --- a/playbook/shopfloor-setup/Shopfloor/lib/Update-MachineNumber.ps1 +++ b/playbook/shopfloor-setup/Shopfloor/lib/Update-MachineNumber.ps1 @@ -75,7 +75,10 @@ function Update-MachineNumber { if (Test-Path $siteCfgPath) { try { $cfg = Get-Content $siteCfgPath -Raw | ConvertFrom-Json - $sharePath = $cfg.pcProfiles.'Standard-Machine'.ntlarsBackupSharePath + # Alias-aware lookup: prefer new key, fall back to legacy. + # PowerShell 5.1 has no null-coalesce operator. + $sharePath = $cfg.pcProfiles.'gea-shopfloor-collections'.ntlarsBackupSharePath + if (-not $sharePath) { $sharePath = $cfg.pcProfiles.'Standard-Machine'.ntlarsBackupSharePath } } catch {} } @@ -105,7 +108,10 @@ function Update-MachineNumber { # creds, so go direct to the canonical share. --- $udcSettingsSharePath = $null if ($cfg) { - try { $udcSettingsSharePath = $cfg.pcProfiles.'Standard-Machine'.udcSettingsSharePath } catch {} + try { + $udcSettingsSharePath = $cfg.pcProfiles.'gea-shopfloor-collections'.udcSettingsSharePath + if (-not $udcSettingsSharePath) { $udcSettingsSharePath = $cfg.pcProfiles.'Standard-Machine'.udcSettingsSharePath } + } catch {} } if ($udcSettingsSharePath) { try { @@ -147,7 +153,10 @@ function Update-MachineNumber { # transition). --- $udcSharePath = $null if ($cfg) { - try { $udcSharePath = $cfg.pcProfiles.'Standard-Machine'.udcBackupSharePath } catch {} + try { + $udcSharePath = $cfg.pcProfiles.'gea-shopfloor-collections'.udcBackupSharePath + if (-not $udcSharePath) { $udcSharePath = $cfg.pcProfiles.'Standard-Machine'.udcBackupSharePath } + } catch {} } if ($udcSharePath) { try { diff --git a/playbook/shopfloor-setup/Standard/Install-eMxInfo.cmd.template b/playbook/shopfloor-setup/Standard/Install-eMxInfo.cmd.template deleted file mode 100644 index bb44220..0000000 --- a/playbook/shopfloor-setup/Standard/Install-eMxInfo.cmd.template +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -REM Install-eMxInfo.cmd - copy the site-specific eMxInfo.txt into both -REM Program Files eDNC paths. Run by Install-FromManifest.ps1 (Type=CMD) -REM when Hash detection on C:\Program Files\eDNC\eMxInfo.txt fails. - -set "SRC=%~dp0eMxInfo.txt" -if not exist "%SRC%" ( - echo Install-eMxInfo: source file not found at %SRC% - exit /b 1 -) - -if not exist "C:\Program Files\eDNC\" mkdir "C:\Program Files\eDNC\" 2>/dev/null -if not exist "C:\Program Files (x86)\eDNC\" mkdir "C:\Program Files (x86)\eDNC\" 2>/dev/null - -copy /Y "%SRC%" "C:\Program Files\eDNC\eMxInfo.txt" >/dev/null || exit /b 2 -copy /Y "%SRC%" "C:\Program Files (x86)\eDNC\eMxInfo.txt" >/dev/null || exit /b 3 - -echo Install-eMxInfo: deployed eMxInfo.txt to both eDNC paths -exit /b 0 diff --git a/playbook/shopfloor-setup/Standard/Restore-UDCData.ps1 b/playbook/shopfloor-setup/Standard/Restore-UDCData.ps1 deleted file mode 100644 index 12aff62..0000000 --- a/playbook/shopfloor-setup/Standard/Restore-UDCData.ps1 +++ /dev/null @@ -1,345 +0,0 @@ -# Restore-UDCData.ps1 - Idempotent UDC data restore for the manifest engine. -# -# Triggered by the GE Shopfloor Enforce scheduled task (runs as SYSTEM, every -# user logon + every 5 min). Standard-machine manifest entry uses -# DetectionMethod=Always so this fires every cycle; the script self-decides -# whether there's actually any work to do. -# -# CONTRACT: -# - 99% of cycles: no backup waiting -> exit 0 in ~1 second, ~5 lines of log -# - 1 cycle (the one after Backup-UDCData lands a backup for this PC's bay): -# stop UDC, copy CurrentData.json + ArchivedData/ to C:\ProgramData\UDC, -# move consumed backup to \migrated\\, write -# restore.manifest.json, restart UDC. After this, root is empty so the -# check returns "no backup waiting" again on subsequent cycles. -# -# DESIGNED FOR THE SWAP WORKFLOW: -# New PC gets pre-imaged with real machine number + locked down, sits in -# storage. Days/weeks later, tech runs Backup-UDCData on old PC -> backup -# lands on share. Tech swaps PCs. New PC powers on at the bay -> ShopFloor -# autologon -> manifest engine fires this script -> backup detected -> -# restored -> UDC opens with prior history intact. -# -# Replaces the placeholder->real trigger in Update-MachineNumber.ps1 for the -# pre-imaged-then-swapped case (where the trigger fired at imaging time, before -# the backup existed). Update-MachineNumber.ps1's branch still handles the -# secondary case (tech used 9999 placeholder + sets number at bay) - both -# triggers safely no-op if the other already consumed the backup. -# -# LOGGING: -# Single rotating log at C:\Logs\UDC\Restore-UDCData.log (1 MB cap, rotated -# to .old.log on overflow). Every cycle writes a header line so even the -# silent no-op path leaves a trace. Errors include full exception type, -# position, and stack trace. - -[CmdletBinding()] -param( - [string]$BackupShareRoot = '\\tsgwp00525.wjs.geaerospace.net\shared\dt\shopfloor\backup\udc', - [string]$UdcDataDir = 'C:\ProgramData\UDC', - [string]$UdcExePath = 'C:\Program Files\UDC\UDC.exe', - [string]$UdcSettingsPath = 'C:\ProgramData\UDC\udc_settings.json', - [string]$Site = 'West Jefferson', - # Share can take 20-60s to become reachable from SYSTEM context after a - # cold boot or fresh logon. Retry until then before deciding "no backup". - [int]$ShareTimeoutSec = 60, - [int]$SharePollSec = 3 -) - -$ErrorActionPreference = 'Continue' - -# -- Logging setup -------------------------------------------------------- -$logDir = 'C:\Logs\UDC' -try { - if (-not (Test-Path $logDir)) { New-Item -Path $logDir -ItemType Directory -Force | Out-Null } -} catch { $logDir = $env:TEMP } -$logFile = Join-Path $logDir 'Restore-UDCData.log' -$logFileMaxBytes = 1MB - -# Rotate log file if oversized (keeps one prior generation) -try { - if ((Test-Path $logFile) -and ((Get-Item $logFile).Length -gt $logFileMaxBytes)) { - $rotated = Join-Path $logDir 'Restore-UDCData.old.log' - if (Test-Path $rotated) { Remove-Item $rotated -Force -ErrorAction SilentlyContinue } - Rename-Item -Path $logFile -NewName 'Restore-UDCData.old.log' -Force -ErrorAction SilentlyContinue - } -} catch {} - -function Log { - param([string]$Msg, [string]$Level = 'INFO') - $ts = Get-Date -Format 'yyyy-MM-dd HH:mm:ss.fff' - $line = "[$ts][$Level] $Msg" - try { Add-Content -LiteralPath $logFile -Value $line -ErrorAction SilentlyContinue } catch {} - Write-Host $line -} - -function LogErr { - param($Err) - if (-not $Err) { return } - $exType = if ($Err.Exception) { $Err.Exception.GetType().FullName } else { '' } - $exMsg = if ($Err.Exception) { $Err.Exception.Message } else { "$Err" } - Log " exception: $exType - $exMsg" 'ERROR' - if ($Err.InvocationInfo -and $Err.InvocationInfo.PositionMessage) { - $pos = ($Err.InvocationInfo.PositionMessage -replace "`r?`n", ' | ') - Log " at: $pos" 'ERROR' - } - if ($Err.ScriptStackTrace) { - $st = ($Err.ScriptStackTrace -replace "`r?`n", ' | ') - Log " stack: $st" 'ERROR' - } - if ($Err.Exception -and $Err.Exception.InnerException) { - Log " inner: $($Err.Exception.InnerException.Message)" 'ERROR' - } -} - -Log '===============================================' -Log "Restore-UDCData starting (PID $PID)" -Log "Hostname: $env:COMPUTERNAME" -try { - $whoami = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name -} catch { $whoami = '' } -Log "User identity: $whoami" -Log "PowerShell version: $($PSVersionTable.PSVersion)" -Log "BackupShareRoot: $BackupShareRoot" -Log "UdcDataDir: $UdcDataDir" -Log "UdcSettingsPath: $UdcSettingsPath" -Log "ShareTimeoutSec: $ShareTimeoutSec SharePollSec: $SharePollSec" - -# -- Resolve local machine number ---------------------------------------- -if (-not (Test-Path -LiteralPath $UdcSettingsPath)) { - Log "udc_settings.json not present - UDC not installed yet, no work to do." - Log 'Exit 0.' - exit 0 -} -try { - $json = Get-Content -LiteralPath $UdcSettingsPath -Raw -ErrorAction Stop | ConvertFrom-Json -ErrorAction Stop - $mn = $json.GeneralSettings.MachineNumber - Log "Resolved MachineNumber from udc_settings: $mn" -} catch { - Log "Failed to parse $UdcSettingsPath" 'ERROR' - LogErr $_ - Log 'Exit 0.' - exit 0 -} -if (-not $mn -or $mn -eq '9999' -or $mn -notmatch '^\d+$') { - Log "Machine number is placeholder/empty/non-numeric ('$mn'). Update-MachineNumber.ps1's branch will catch the placeholder->real transition. No work to do." - Log 'Exit 0.' - exit 0 -} - -# -- Mount share with SFLD user creds ----------------------------------- -# This script runs as NT AUTHORITY\SYSTEM (manifest engine on logon, or -# scheduled task). SYSTEM authenticates to remote SMB as the COMPUTER -# ACCOUNT (DOMAIN\HOSTNAME$), not as a user. The SFLD share's ACLs grant -# top-level enumeration to authenticated computers but file-level read -# only to a specific SFLD user. Without explicit user creds, Test-Path -# on bay-level files returns False (access denied = same return as not- -# found), making the script silently log "absent" when the files in fact -# exist. Symptom: Restore-UDCData.log shows endless "no work this cycle" -# while another PC (or a user-context invocation) successfully consumes -# the backup. Fix: mount the share with explicit SFLD creds from -# HKLM:\SOFTWARE\GE\SFLD\Credentials and probe via the drive letter. -. (Join-Path $PSScriptRoot '..\Shopfloor\lib\Restore-EDncReg.ps1') - -Log "Mounting share with SFLD creds: $BackupShareRoot -> W:" -$shareMounted = $false -$sw = [Diagnostics.Stopwatch]::StartNew() -while ($sw.Elapsed.TotalSeconds -lt $ShareTimeoutSec) { - if (Mount-SFLDShare -SharePath $BackupShareRoot -DriveLetter 'W:') { - $shareMounted = $true - break - } - Start-Sleep -Seconds $SharePollSec -} -$sw.Stop() -if ($shareMounted) { - Log ("Share mounted as W: after {0:N1} s" -f $sw.Elapsed.TotalSeconds) -} else { - Log "Mount-SFLDShare failed after $ShareTimeoutSec s. SFLD creds may be missing in HKLM:\SOFTWARE\GE\SFLD\Credentials, or the share is unreachable. Exiting non-zero so the dispatcher logs a failure." 'ERROR' - Log 'Exit 1.' - exit 1 -} - -# All bay-level paths now go through W: (authenticated as SFLD user) so -# Test-Path returns the truth, not access-denied-False. -$bayDir = Join-Path 'W:\' $mn -$srcCur = Join-Path $bayDir 'CurrentData.json' -$srcArc = Join-Path $bayDir 'ArchivedData' -Log "Probing backup paths for bay $mn" -Log " bayDir: $bayDir" -$bayDirExists = Test-Path -LiteralPath $bayDir -Log " bayDir exists: $bayDirExists" -$srcCurExists = Test-Path -LiteralPath $srcCur -Log " CurrentData.json src: $(if ($srcCurExists) { 'present' } else { 'absent' }) - $srcCur" -$srcArcExists = Test-Path -LiteralPath $srcArc -Log " ArchivedData/ src: $(if ($srcArcExists) { 'present' } else { 'absent' }) - $srcArc" - -if (-not $srcCurExists -and -not $srcArcExists) { - Log "No backup waiting for bay $mn (neither CurrentData.json nor ArchivedData\ at bay root) - no work to do this cycle." - & net use W: /delete /y 2>$null | Out-Null - Log 'Exit 0.' - exit 0 -} -if (-not $srcCurExists) { - Log "Partial backup waiting (ArchivedData\ present, CurrentData.json absent). Will restore ArchivedData\ only. Source PC may have had no live UDC session at backup time, or backup partially failed." 'WARN' -} -if (-not $srcArcExists) { - Log "Partial backup waiting (CurrentData.json present, ArchivedData\ absent). Will restore CurrentData.json only." 'WARN' -} - -# -- We have a backup. Restore. ------------------------------------------ -Log "Backup waiting at $bayDir - proceeding with restore" - -# Stop UDC.exe so CurrentData.json isn't locked -$udcProcs = @(Get-Process UDC -ErrorAction SilentlyContinue) -Log "UDC processes currently running: $($udcProcs.Count)" -foreach ($p in $udcProcs) { - try { - Log " stopping UDC.exe PID $($p.Id)" - $p.Kill() - $p.WaitForExit(5000) | Out-Null - Log " stopped" - } catch { - Log " could not stop UDC.exe PID $($p.Id)" 'WARN' - LogErr $_ - } -} -Start-Sleep -Milliseconds 500 - -# Ensure local UDC data dir exists -if (-not (Test-Path -LiteralPath $UdcDataDir)) { - Log "Creating local UDC data dir: $UdcDataDir" - try { - New-Item -Path $UdcDataDir -ItemType Directory -Force | Out-Null - } catch { - Log "Failed to create $UdcDataDir - cannot continue" 'ERROR' - LogErr $_ - & net use W: /delete /y 2>$null | Out-Null - Log 'Exit 1.' - exit 1 - } -} -$localCur = Join-Path $UdcDataDir 'CurrentData.json' -$localArc = Join-Path $UdcDataDir 'ArchivedData' - -# Copy CurrentData.json (only if present at source) -$copiedCur = $false -if ($srcCurExists) { - Log "Copying CurrentData.json" - Log " src: $srcCur" - Log " dst: $localCur" - try { - Copy-Item -LiteralPath $srcCur -Destination $localCur -Force -ErrorAction Stop - $copiedCur = $true - $sz = (Get-Item -LiteralPath $localCur).Length - Log " OK ($sz bytes)" - } catch { - Log " FAILED" 'ERROR' - LogErr $_ - } -} else { - Log "CurrentData.json not present in backup - skipping that copy step" -} - -# Copy ArchivedData/ -$copiedArc = $false -$arcFiles = 0 -$arcBytes = 0 -if ($srcArcExists) { - Log "Copying ArchivedData/" - Log " src: $srcArc" - Log " dst: $localArc" - try { - if (Test-Path -LiteralPath $localArc) { - Log " removing existing $localArc" - Remove-Item -LiteralPath $localArc -Recurse -Force -ErrorAction SilentlyContinue - } - Copy-Item -LiteralPath $srcArc -Destination $localArc -Recurse -Force -ErrorAction Stop - $arcItems = Get-ChildItem -LiteralPath $localArc -Recurse -File -ErrorAction SilentlyContinue - $arcFiles = @($arcItems).Count - $arcBytes = ($arcItems | Measure-Object Length -Sum).Sum - $copiedArc = $true - Log " OK ($arcFiles files, $arcBytes bytes)" - } catch { - Log " FAILED" 'ERROR' - LogErr $_ - } -} else { - Log "ArchivedData/ not present in backup - skipping that copy step" -} - -# One-shot consumption: only consume when every present source has been -# successfully copied. If a source was absent we don't fault on it; if a -# source was present but copy failed, we leave the live backup for retry. -# Must have copied at least one thing to consume. -$consumeOk = (($copiedCur -or -not $srcCurExists) -and ` - ($copiedArc -or -not $srcArcExists) -and ` - ($copiedCur -or $copiedArc)) -Log "consumeOk=$consumeOk (copiedCur=$copiedCur, copiedArc=$copiedArc, srcCurExists=$srcCurExists, srcArcExists=$srcArcExists)" - -if ($consumeOk) { - try { - $stamp = Get-Date -Format 'yyyy-MM-ddTHH-mm-ssZ' - $migDir = Join-Path $bayDir 'migrated' - $migStamp = Join-Path $migDir $stamp - Log "Moving consumed backup to $migStamp" - if (-not (Test-Path -LiteralPath $migDir)) { New-Item -ItemType Directory -Path $migDir -Force | Out-Null } - if (-not (Test-Path -LiteralPath $migStamp)) { New-Item -ItemType Directory -Path $migStamp -Force | Out-Null } - - if (Test-Path -LiteralPath $srcCur) { - Move-Item -LiteralPath $srcCur -Destination (Join-Path $migStamp 'CurrentData.json') -Force -ErrorAction Stop - Log " moved CurrentData.json" - } - if (Test-Path -LiteralPath $srcArc) { - Move-Item -LiteralPath $srcArc -Destination (Join-Path $migStamp 'ArchivedData') -Force -ErrorAction Stop - Log " moved ArchivedData/" - } - $bakManifest = Join-Path $bayDir 'backup.manifest.json' - if (Test-Path -LiteralPath $bakManifest) { - Move-Item -LiteralPath $bakManifest -Destination (Join-Path $migStamp 'backup.manifest.json') -Force -ErrorAction SilentlyContinue - Log " moved backup.manifest.json" - } - - $restoreManifest = [ordered]@{ - RestoredAt = (Get-Date -Format 'o') - DestinationHostname = $env:COMPUTERNAME - DestinationUser = $whoami - MachineNumber = $mn - CurrentDataPresent = $copiedCur - CurrentDataBytes = if ($copiedCur) { (Get-Item -LiteralPath $localCur).Length } else { 0 } - ArchivedDataPresent = $copiedArc - ArchivedDataFiles = $arcFiles - ArchivedDataBytes = $arcBytes - RestoredVia = 'Restore-UDCData.ps1 (manifest engine, on logon)' - } - $restoreManifest | ConvertTo-Json | Set-Content -Path (Join-Path $migStamp 'restore.manifest.json') -Encoding UTF8 - Log " wrote restore.manifest.json" - - Log "Backup consumed -> migrated\$stamp\" - } catch { - Log "Move-to-migrated FAILED (data IS restored locally; live backup remains, next cycle will retry consumption)" 'ERROR' - LogErr $_ - } -} else { - Log "Restore incomplete - leaving live backup at $bayDir for retry next cycle." 'WARN' -} - -# Relaunch UDC with the current machine number args. UDC's vendor autostart in -# HKLM\Run will also fire on the next user logon, so this is belt-and-suspenders -# for the same-session case (e.g. tech is at the keyboard during the restore). -if ((Test-Path -LiteralPath $UdcExePath) -and ($copiedCur -or $copiedArc)) { - Log "Relaunching UDC.exe: `"$Site`" -$mn" - try { - Start-Process -FilePath $UdcExePath -ArgumentList @("`"$Site`"", "-$mn") - Log " relaunched" - } catch { - Log " UDC relaunch FAILED" 'WARN' - LogErr $_ - } -} - -# Unmount the SFLD-creds-mounted drive so we don't leave a stale net-use entry -& net use W: /delete /y 2>$null | Out-Null - -Log 'Exit 0.' -Log '===============================================' -exit 0 diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/0000.reg b/playbook/shopfloor-setup/_ntlars-backups/0000.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/0000.reg rename to playbook/shopfloor-setup/_ntlars-backups/0000.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/0600.reg b/playbook/shopfloor-setup/_ntlars-backups/0600.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/0600.reg rename to playbook/shopfloor-setup/_ntlars-backups/0600.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/0614.reg b/playbook/shopfloor-setup/_ntlars-backups/0614.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/0614.reg rename to playbook/shopfloor-setup/_ntlars-backups/0614.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2001.reg b/playbook/shopfloor-setup/_ntlars-backups/2001.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2001.reg rename to playbook/shopfloor-setup/_ntlars-backups/2001.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2003.reg b/playbook/shopfloor-setup/_ntlars-backups/2003.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2003.reg rename to playbook/shopfloor-setup/_ntlars-backups/2003.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2005.reg b/playbook/shopfloor-setup/_ntlars-backups/2005.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2005.reg rename to playbook/shopfloor-setup/_ntlars-backups/2005.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2007.reg b/playbook/shopfloor-setup/_ntlars-backups/2007.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2007.reg rename to playbook/shopfloor-setup/_ntlars-backups/2007.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2008.reg b/playbook/shopfloor-setup/_ntlars-backups/2008.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2008.reg rename to playbook/shopfloor-setup/_ntlars-backups/2008.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2009.reg b/playbook/shopfloor-setup/_ntlars-backups/2009.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2009.reg rename to playbook/shopfloor-setup/_ntlars-backups/2009.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2010.reg b/playbook/shopfloor-setup/_ntlars-backups/2010.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2010.reg rename to playbook/shopfloor-setup/_ntlars-backups/2010.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2011.reg b/playbook/shopfloor-setup/_ntlars-backups/2011.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2011.reg rename to playbook/shopfloor-setup/_ntlars-backups/2011.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2012.reg b/playbook/shopfloor-setup/_ntlars-backups/2012.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2012.reg rename to playbook/shopfloor-setup/_ntlars-backups/2012.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2013.reg b/playbook/shopfloor-setup/_ntlars-backups/2013.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2013.reg rename to playbook/shopfloor-setup/_ntlars-backups/2013.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2014.reg b/playbook/shopfloor-setup/_ntlars-backups/2014.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2014.reg rename to playbook/shopfloor-setup/_ntlars-backups/2014.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2016.reg b/playbook/shopfloor-setup/_ntlars-backups/2016.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2016.reg rename to playbook/shopfloor-setup/_ntlars-backups/2016.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2017.reg b/playbook/shopfloor-setup/_ntlars-backups/2017.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2017.reg rename to playbook/shopfloor-setup/_ntlars-backups/2017.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2018.reg b/playbook/shopfloor-setup/_ntlars-backups/2018.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2018.reg rename to playbook/shopfloor-setup/_ntlars-backups/2018.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2019.reg b/playbook/shopfloor-setup/_ntlars-backups/2019.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2019.reg rename to playbook/shopfloor-setup/_ntlars-backups/2019.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2020.reg b/playbook/shopfloor-setup/_ntlars-backups/2020.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2020.reg rename to playbook/shopfloor-setup/_ntlars-backups/2020.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2021.reg b/playbook/shopfloor-setup/_ntlars-backups/2021.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2021.reg rename to playbook/shopfloor-setup/_ntlars-backups/2021.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2024.reg b/playbook/shopfloor-setup/_ntlars-backups/2024.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2024.reg rename to playbook/shopfloor-setup/_ntlars-backups/2024.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2025.reg b/playbook/shopfloor-setup/_ntlars-backups/2025.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2025.reg rename to playbook/shopfloor-setup/_ntlars-backups/2025.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2026.reg b/playbook/shopfloor-setup/_ntlars-backups/2026.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2026.reg rename to playbook/shopfloor-setup/_ntlars-backups/2026.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2027.reg b/playbook/shopfloor-setup/_ntlars-backups/2027.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2027.reg rename to playbook/shopfloor-setup/_ntlars-backups/2027.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2029.reg b/playbook/shopfloor-setup/_ntlars-backups/2029.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2029.reg rename to playbook/shopfloor-setup/_ntlars-backups/2029.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2031.reg b/playbook/shopfloor-setup/_ntlars-backups/2031.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2031.reg rename to playbook/shopfloor-setup/_ntlars-backups/2031.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/2032.reg b/playbook/shopfloor-setup/_ntlars-backups/2032.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/2032.reg rename to playbook/shopfloor-setup/_ntlars-backups/2032.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3002.reg b/playbook/shopfloor-setup/_ntlars-backups/3002.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3002.reg rename to playbook/shopfloor-setup/_ntlars-backups/3002.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3003.reg b/playbook/shopfloor-setup/_ntlars-backups/3003.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3003.reg rename to playbook/shopfloor-setup/_ntlars-backups/3003.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3006.reg b/playbook/shopfloor-setup/_ntlars-backups/3006.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3006.reg rename to playbook/shopfloor-setup/_ntlars-backups/3006.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3007.reg b/playbook/shopfloor-setup/_ntlars-backups/3007.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3007.reg rename to playbook/shopfloor-setup/_ntlars-backups/3007.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3008.reg b/playbook/shopfloor-setup/_ntlars-backups/3008.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3008.reg rename to playbook/shopfloor-setup/_ntlars-backups/3008.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3009.reg b/playbook/shopfloor-setup/_ntlars-backups/3009.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3009.reg rename to playbook/shopfloor-setup/_ntlars-backups/3009.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3010.reg b/playbook/shopfloor-setup/_ntlars-backups/3010.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3010.reg rename to playbook/shopfloor-setup/_ntlars-backups/3010.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3011.reg b/playbook/shopfloor-setup/_ntlars-backups/3011.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3011.reg rename to playbook/shopfloor-setup/_ntlars-backups/3011.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3012.reg b/playbook/shopfloor-setup/_ntlars-backups/3012.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3012.reg rename to playbook/shopfloor-setup/_ntlars-backups/3012.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3013.reg b/playbook/shopfloor-setup/_ntlars-backups/3013.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3013.reg rename to playbook/shopfloor-setup/_ntlars-backups/3013.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3014.reg b/playbook/shopfloor-setup/_ntlars-backups/3014.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3014.reg rename to playbook/shopfloor-setup/_ntlars-backups/3014.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3015.reg b/playbook/shopfloor-setup/_ntlars-backups/3015.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3015.reg rename to playbook/shopfloor-setup/_ntlars-backups/3015.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3016.reg b/playbook/shopfloor-setup/_ntlars-backups/3016.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3016.reg rename to playbook/shopfloor-setup/_ntlars-backups/3016.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3017.reg b/playbook/shopfloor-setup/_ntlars-backups/3017.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3017.reg rename to playbook/shopfloor-setup/_ntlars-backups/3017.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3018.reg b/playbook/shopfloor-setup/_ntlars-backups/3018.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3018.reg rename to playbook/shopfloor-setup/_ntlars-backups/3018.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3019.reg b/playbook/shopfloor-setup/_ntlars-backups/3019.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3019.reg rename to playbook/shopfloor-setup/_ntlars-backups/3019.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3020.reg b/playbook/shopfloor-setup/_ntlars-backups/3020.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3020.reg rename to playbook/shopfloor-setup/_ntlars-backups/3020.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3021.reg b/playbook/shopfloor-setup/_ntlars-backups/3021.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3021.reg rename to playbook/shopfloor-setup/_ntlars-backups/3021.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3022.reg b/playbook/shopfloor-setup/_ntlars-backups/3022.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3022.reg rename to playbook/shopfloor-setup/_ntlars-backups/3022.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3023.reg b/playbook/shopfloor-setup/_ntlars-backups/3023.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3023.reg rename to playbook/shopfloor-setup/_ntlars-backups/3023.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3024.reg b/playbook/shopfloor-setup/_ntlars-backups/3024.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3024.reg rename to playbook/shopfloor-setup/_ntlars-backups/3024.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3025.reg b/playbook/shopfloor-setup/_ntlars-backups/3025.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3025.reg rename to playbook/shopfloor-setup/_ntlars-backups/3025.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3027.reg b/playbook/shopfloor-setup/_ntlars-backups/3027.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3027.reg rename to playbook/shopfloor-setup/_ntlars-backups/3027.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3029.reg b/playbook/shopfloor-setup/_ntlars-backups/3029.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3029.reg rename to playbook/shopfloor-setup/_ntlars-backups/3029.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3030.reg b/playbook/shopfloor-setup/_ntlars-backups/3030.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3030.reg rename to playbook/shopfloor-setup/_ntlars-backups/3030.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3031.reg b/playbook/shopfloor-setup/_ntlars-backups/3031.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3031.reg rename to playbook/shopfloor-setup/_ntlars-backups/3031.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3033.reg b/playbook/shopfloor-setup/_ntlars-backups/3033.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3033.reg rename to playbook/shopfloor-setup/_ntlars-backups/3033.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3034.reg b/playbook/shopfloor-setup/_ntlars-backups/3034.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3034.reg rename to playbook/shopfloor-setup/_ntlars-backups/3034.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3035.reg b/playbook/shopfloor-setup/_ntlars-backups/3035.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3035.reg rename to playbook/shopfloor-setup/_ntlars-backups/3035.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3036.reg b/playbook/shopfloor-setup/_ntlars-backups/3036.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3036.reg rename to playbook/shopfloor-setup/_ntlars-backups/3036.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3037.reg b/playbook/shopfloor-setup/_ntlars-backups/3037.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3037.reg rename to playbook/shopfloor-setup/_ntlars-backups/3037.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3038.reg b/playbook/shopfloor-setup/_ntlars-backups/3038.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3038.reg rename to playbook/shopfloor-setup/_ntlars-backups/3038.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3039.reg b/playbook/shopfloor-setup/_ntlars-backups/3039.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3039.reg rename to playbook/shopfloor-setup/_ntlars-backups/3039.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3041.reg b/playbook/shopfloor-setup/_ntlars-backups/3041.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3041.reg rename to playbook/shopfloor-setup/_ntlars-backups/3041.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3042.reg b/playbook/shopfloor-setup/_ntlars-backups/3042.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3042.reg rename to playbook/shopfloor-setup/_ntlars-backups/3042.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3043.reg b/playbook/shopfloor-setup/_ntlars-backups/3043.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3043.reg rename to playbook/shopfloor-setup/_ntlars-backups/3043.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3044.reg b/playbook/shopfloor-setup/_ntlars-backups/3044.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3044.reg rename to playbook/shopfloor-setup/_ntlars-backups/3044.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3101.reg b/playbook/shopfloor-setup/_ntlars-backups/3101.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3101.reg rename to playbook/shopfloor-setup/_ntlars-backups/3101.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3102.reg b/playbook/shopfloor-setup/_ntlars-backups/3102.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3102.reg rename to playbook/shopfloor-setup/_ntlars-backups/3102.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3103.reg b/playbook/shopfloor-setup/_ntlars-backups/3103.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3103.reg rename to playbook/shopfloor-setup/_ntlars-backups/3103.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3104.reg b/playbook/shopfloor-setup/_ntlars-backups/3104.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3104.reg rename to playbook/shopfloor-setup/_ntlars-backups/3104.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3105.reg b/playbook/shopfloor-setup/_ntlars-backups/3105.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3105.reg rename to playbook/shopfloor-setup/_ntlars-backups/3105.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3106.reg b/playbook/shopfloor-setup/_ntlars-backups/3106.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3106.reg rename to playbook/shopfloor-setup/_ntlars-backups/3106.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3107.reg b/playbook/shopfloor-setup/_ntlars-backups/3107.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3107.reg rename to playbook/shopfloor-setup/_ntlars-backups/3107.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3108.reg b/playbook/shopfloor-setup/_ntlars-backups/3108.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3108.reg rename to playbook/shopfloor-setup/_ntlars-backups/3108.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3109.reg b/playbook/shopfloor-setup/_ntlars-backups/3109.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3109.reg rename to playbook/shopfloor-setup/_ntlars-backups/3109.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3110.reg b/playbook/shopfloor-setup/_ntlars-backups/3110.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3110.reg rename to playbook/shopfloor-setup/_ntlars-backups/3110.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3111.reg b/playbook/shopfloor-setup/_ntlars-backups/3111.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3111.reg rename to playbook/shopfloor-setup/_ntlars-backups/3111.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3112.reg b/playbook/shopfloor-setup/_ntlars-backups/3112.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3112.reg rename to playbook/shopfloor-setup/_ntlars-backups/3112.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3113.reg b/playbook/shopfloor-setup/_ntlars-backups/3113.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3113.reg rename to playbook/shopfloor-setup/_ntlars-backups/3113.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3114.reg b/playbook/shopfloor-setup/_ntlars-backups/3114.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3114.reg rename to playbook/shopfloor-setup/_ntlars-backups/3114.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3115.reg b/playbook/shopfloor-setup/_ntlars-backups/3115.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3115.reg rename to playbook/shopfloor-setup/_ntlars-backups/3115.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3116.reg b/playbook/shopfloor-setup/_ntlars-backups/3116.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3116.reg rename to playbook/shopfloor-setup/_ntlars-backups/3116.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3117.reg b/playbook/shopfloor-setup/_ntlars-backups/3117.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3117.reg rename to playbook/shopfloor-setup/_ntlars-backups/3117.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3118.reg b/playbook/shopfloor-setup/_ntlars-backups/3118.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3118.reg rename to playbook/shopfloor-setup/_ntlars-backups/3118.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3119.reg b/playbook/shopfloor-setup/_ntlars-backups/3119.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3119.reg rename to playbook/shopfloor-setup/_ntlars-backups/3119.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3120.reg b/playbook/shopfloor-setup/_ntlars-backups/3120.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3120.reg rename to playbook/shopfloor-setup/_ntlars-backups/3120.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3122.reg b/playbook/shopfloor-setup/_ntlars-backups/3122.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3122.reg rename to playbook/shopfloor-setup/_ntlars-backups/3122.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3123.reg b/playbook/shopfloor-setup/_ntlars-backups/3123.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3123.reg rename to playbook/shopfloor-setup/_ntlars-backups/3123.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3124.reg b/playbook/shopfloor-setup/_ntlars-backups/3124.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3124.reg rename to playbook/shopfloor-setup/_ntlars-backups/3124.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3125.reg b/playbook/shopfloor-setup/_ntlars-backups/3125.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3125.reg rename to playbook/shopfloor-setup/_ntlars-backups/3125.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3126.reg b/playbook/shopfloor-setup/_ntlars-backups/3126.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3126.reg rename to playbook/shopfloor-setup/_ntlars-backups/3126.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3127.reg b/playbook/shopfloor-setup/_ntlars-backups/3127.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3127.reg rename to playbook/shopfloor-setup/_ntlars-backups/3127.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3128.reg b/playbook/shopfloor-setup/_ntlars-backups/3128.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3128.reg rename to playbook/shopfloor-setup/_ntlars-backups/3128.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3129.reg b/playbook/shopfloor-setup/_ntlars-backups/3129.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3129.reg rename to playbook/shopfloor-setup/_ntlars-backups/3129.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3201.reg b/playbook/shopfloor-setup/_ntlars-backups/3201.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3201.reg rename to playbook/shopfloor-setup/_ntlars-backups/3201.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3202.reg b/playbook/shopfloor-setup/_ntlars-backups/3202.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3202.reg rename to playbook/shopfloor-setup/_ntlars-backups/3202.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3203.reg b/playbook/shopfloor-setup/_ntlars-backups/3203.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3203.reg rename to playbook/shopfloor-setup/_ntlars-backups/3203.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3204.reg b/playbook/shopfloor-setup/_ntlars-backups/3204.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3204.reg rename to playbook/shopfloor-setup/_ntlars-backups/3204.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3205.reg b/playbook/shopfloor-setup/_ntlars-backups/3205.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3205.reg rename to playbook/shopfloor-setup/_ntlars-backups/3205.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3206.reg b/playbook/shopfloor-setup/_ntlars-backups/3206.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3206.reg rename to playbook/shopfloor-setup/_ntlars-backups/3206.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3207.reg b/playbook/shopfloor-setup/_ntlars-backups/3207.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3207.reg rename to playbook/shopfloor-setup/_ntlars-backups/3207.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3208.reg b/playbook/shopfloor-setup/_ntlars-backups/3208.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3208.reg rename to playbook/shopfloor-setup/_ntlars-backups/3208.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3209.reg b/playbook/shopfloor-setup/_ntlars-backups/3209.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3209.reg rename to playbook/shopfloor-setup/_ntlars-backups/3209.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3210.reg b/playbook/shopfloor-setup/_ntlars-backups/3210.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3210.reg rename to playbook/shopfloor-setup/_ntlars-backups/3210.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3212.reg b/playbook/shopfloor-setup/_ntlars-backups/3212.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3212.reg rename to playbook/shopfloor-setup/_ntlars-backups/3212.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/3213.reg b/playbook/shopfloor-setup/_ntlars-backups/3213.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/3213.reg rename to playbook/shopfloor-setup/_ntlars-backups/3213.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4002.reg b/playbook/shopfloor-setup/_ntlars-backups/4002.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4002.reg rename to playbook/shopfloor-setup/_ntlars-backups/4002.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4003.reg b/playbook/shopfloor-setup/_ntlars-backups/4003.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4003.reg rename to playbook/shopfloor-setup/_ntlars-backups/4003.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4004.reg b/playbook/shopfloor-setup/_ntlars-backups/4004.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4004.reg rename to playbook/shopfloor-setup/_ntlars-backups/4004.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4005.reg b/playbook/shopfloor-setup/_ntlars-backups/4005.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4005.reg rename to playbook/shopfloor-setup/_ntlars-backups/4005.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4007.reg b/playbook/shopfloor-setup/_ntlars-backups/4007.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4007.reg rename to playbook/shopfloor-setup/_ntlars-backups/4007.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4008.reg b/playbook/shopfloor-setup/_ntlars-backups/4008.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4008.reg rename to playbook/shopfloor-setup/_ntlars-backups/4008.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4101.reg b/playbook/shopfloor-setup/_ntlars-backups/4101.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4101.reg rename to playbook/shopfloor-setup/_ntlars-backups/4101.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4102.reg b/playbook/shopfloor-setup/_ntlars-backups/4102.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4102.reg rename to playbook/shopfloor-setup/_ntlars-backups/4102.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4103.reg b/playbook/shopfloor-setup/_ntlars-backups/4103.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4103.reg rename to playbook/shopfloor-setup/_ntlars-backups/4103.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4701.reg b/playbook/shopfloor-setup/_ntlars-backups/4701.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4701.reg rename to playbook/shopfloor-setup/_ntlars-backups/4701.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4702.reg b/playbook/shopfloor-setup/_ntlars-backups/4702.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4702.reg rename to playbook/shopfloor-setup/_ntlars-backups/4702.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4703.reg b/playbook/shopfloor-setup/_ntlars-backups/4703.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4703.reg rename to playbook/shopfloor-setup/_ntlars-backups/4703.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/4704.reg b/playbook/shopfloor-setup/_ntlars-backups/4704.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/4704.reg rename to playbook/shopfloor-setup/_ntlars-backups/4704.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/5002.reg b/playbook/shopfloor-setup/_ntlars-backups/5002.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/5002.reg rename to playbook/shopfloor-setup/_ntlars-backups/5002.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/5004.reg b/playbook/shopfloor-setup/_ntlars-backups/5004.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/5004.reg rename to playbook/shopfloor-setup/_ntlars-backups/5004.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/5006.reg b/playbook/shopfloor-setup/_ntlars-backups/5006.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/5006.reg rename to playbook/shopfloor-setup/_ntlars-backups/5006.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/5302.reg b/playbook/shopfloor-setup/_ntlars-backups/5302.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/5302.reg rename to playbook/shopfloor-setup/_ntlars-backups/5302.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7401.reg b/playbook/shopfloor-setup/_ntlars-backups/7401.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7401.reg rename to playbook/shopfloor-setup/_ntlars-backups/7401.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7402.reg b/playbook/shopfloor-setup/_ntlars-backups/7402.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7402.reg rename to playbook/shopfloor-setup/_ntlars-backups/7402.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7403.reg b/playbook/shopfloor-setup/_ntlars-backups/7403.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7403.reg rename to playbook/shopfloor-setup/_ntlars-backups/7403.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7404.reg b/playbook/shopfloor-setup/_ntlars-backups/7404.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7404.reg rename to playbook/shopfloor-setup/_ntlars-backups/7404.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7405.reg b/playbook/shopfloor-setup/_ntlars-backups/7405.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7405.reg rename to playbook/shopfloor-setup/_ntlars-backups/7405.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7501.reg b/playbook/shopfloor-setup/_ntlars-backups/7501.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7501.reg rename to playbook/shopfloor-setup/_ntlars-backups/7501.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7502.reg b/playbook/shopfloor-setup/_ntlars-backups/7502.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7502.reg rename to playbook/shopfloor-setup/_ntlars-backups/7502.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7503.reg b/playbook/shopfloor-setup/_ntlars-backups/7503.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7503.reg rename to playbook/shopfloor-setup/_ntlars-backups/7503.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7504.reg b/playbook/shopfloor-setup/_ntlars-backups/7504.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7504.reg rename to playbook/shopfloor-setup/_ntlars-backups/7504.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7505.reg b/playbook/shopfloor-setup/_ntlars-backups/7505.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7505.reg rename to playbook/shopfloor-setup/_ntlars-backups/7505.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7506.reg b/playbook/shopfloor-setup/_ntlars-backups/7506.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7506.reg rename to playbook/shopfloor-setup/_ntlars-backups/7506.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7507.reg b/playbook/shopfloor-setup/_ntlars-backups/7507.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7507.reg rename to playbook/shopfloor-setup/_ntlars-backups/7507.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7601.reg b/playbook/shopfloor-setup/_ntlars-backups/7601.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7601.reg rename to playbook/shopfloor-setup/_ntlars-backups/7601.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7602.reg b/playbook/shopfloor-setup/_ntlars-backups/7602.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7602.reg rename to playbook/shopfloor-setup/_ntlars-backups/7602.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7603.reg b/playbook/shopfloor-setup/_ntlars-backups/7603.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7603.reg rename to playbook/shopfloor-setup/_ntlars-backups/7603.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7604.reg b/playbook/shopfloor-setup/_ntlars-backups/7604.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7604.reg rename to playbook/shopfloor-setup/_ntlars-backups/7604.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7605.reg b/playbook/shopfloor-setup/_ntlars-backups/7605.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7605.reg rename to playbook/shopfloor-setup/_ntlars-backups/7605.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7606.reg b/playbook/shopfloor-setup/_ntlars-backups/7606.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7606.reg rename to playbook/shopfloor-setup/_ntlars-backups/7606.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7607.reg b/playbook/shopfloor-setup/_ntlars-backups/7607.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7607.reg rename to playbook/shopfloor-setup/_ntlars-backups/7607.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7608.reg b/playbook/shopfloor-setup/_ntlars-backups/7608.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7608.reg rename to playbook/shopfloor-setup/_ntlars-backups/7608.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7801.reg b/playbook/shopfloor-setup/_ntlars-backups/7801.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7801.reg rename to playbook/shopfloor-setup/_ntlars-backups/7801.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7802.reg b/playbook/shopfloor-setup/_ntlars-backups/7802.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7802.reg rename to playbook/shopfloor-setup/_ntlars-backups/7802.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7803.reg b/playbook/shopfloor-setup/_ntlars-backups/7803.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7803.reg rename to playbook/shopfloor-setup/_ntlars-backups/7803.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/7804.reg b/playbook/shopfloor-setup/_ntlars-backups/7804.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/7804.reg rename to playbook/shopfloor-setup/_ntlars-backups/7804.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/8001.reg b/playbook/shopfloor-setup/_ntlars-backups/8001.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/8001.reg rename to playbook/shopfloor-setup/_ntlars-backups/8001.reg diff --git a/playbook/shopfloor-setup/Standard/ntlars-backups/8002.reg b/playbook/shopfloor-setup/_ntlars-backups/8002.reg similarity index 100% rename from playbook/shopfloor-setup/Standard/ntlars-backups/8002.reg rename to playbook/shopfloor-setup/_ntlars-backups/8002.reg diff --git a/playbook/shopfloor-setup/common/test/B-enforce/run.sh b/playbook/shopfloor-setup/common/test/B-enforce/run.sh index bd81623..7196a1b 100755 --- a/playbook/shopfloor-setup/common/test/B-enforce/run.sh +++ b/playbook/shopfloor-setup/common/test/B-enforce/run.sh @@ -20,8 +20,11 @@ set -euo pipefail -PCTYPE="${1:-Standard}" -PCSUBTYPE="${2:-Machine}" +PCTYPE="${1:-gea-shopfloor-collections}" +# Empty string (no subtype) is the new default. The legacy two-arg form +# ("Standard Machine") still works thanks to alias maps. To explicitly +# pass an empty subtype use a single arg: ./run.sh gea-shopfloor-cmm +PCSUBTYPE="${2-}" HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" TEST_ROOT="$(cd "$HERE/.." && pwd)" diff --git a/playbook/shopfloor-setup/common/test/B-enforce/tamper.ps1 b/playbook/shopfloor-setup/common/test/B-enforce/tamper.ps1 index 9f8a6b8..b73a705 100644 --- a/playbook/shopfloor-setup/common/test/B-enforce/tamper.ps1 +++ b/playbook/shopfloor-setup/common/test/B-enforce/tamper.ps1 @@ -18,7 +18,34 @@ param( $ErrorActionPreference = 'Continue' $matrix = Get-Content -LiteralPath $MatrixPath -Raw | ConvertFrom-Json -$entry = $matrix.pcTypes | Where-Object { $_.PCType -eq $PCType -and ($_.PCSubType -eq $PCSubType -or [string]::IsNullOrEmpty($_.PCSubType)) } | Select-Object -First 1 + +# Same alias map as verify-state.ps1 so harness invocations with the new +# gea-shopfloor-* names find the correct matrix row even when that row's +# PCType field is still the legacy "Standard"+"Machine" form. +$pcTypeAliasGroups = @( + @('Standard-Machine','gea-shopfloor-collections'), + @('Standard-Machine-NoCollections','gea-shopfloor-nocollections'), + @('Standard-Timeclock','Lab','gea-shopfloor-common'), + @('CMM','gea-shopfloor-cmm'), + @('Keyence','gea-shopfloor-keyence'), + @('WaxAndTrace','gea-shopfloor-waxtrace'), + @('Genspect','gea-shopfloor-genspect'), + @('Display','gea-shopfloor-display'), + @('Heattreat','gea-shopfloor-heattreat'), + @('Shopfloor') +) +function Test-MatrixEntryMatches { + param($Entry, [string]$Type, [string]$SubType) + $entryKey = if ($Entry.PCSubType) { "$($Entry.PCType)-$($Entry.PCSubType)" } else { $Entry.PCType } + $requestKey = if ($SubType) { "$Type-$SubType" } else { $Type } + if ($entryKey -ieq $requestKey) { return $true } + foreach ($g in $pcTypeAliasGroups) { + if ($g -icontains $entryKey -and $g -icontains $requestKey) { return $true } + } + return $false +} + +$entry = $matrix.pcTypes | Where-Object { Test-MatrixEntryMatches -Entry $_ -Type $PCType -SubType $PCSubType } | Select-Object -First 1 if (-not $entry) { Write-Host "[FAIL] no matrix entry for $PCType/$PCSubType"; exit 1 } foreach ($d in $entry.driftScenarios) { diff --git a/playbook/shopfloor-setup/CMM/09-Setup-CMM.ps1 b/playbook/shopfloor-setup/gea-shopfloor-cmm/09-Setup-CMM.ps1 similarity index 100% rename from playbook/shopfloor-setup/CMM/09-Setup-CMM.ps1 rename to playbook/shopfloor-setup/gea-shopfloor-cmm/09-Setup-CMM.ps1 diff --git a/playbook/shopfloor-setup/CMM/cmm-manifest.json b/playbook/shopfloor-setup/gea-shopfloor-cmm/cmm-manifest.json similarity index 100% rename from playbook/shopfloor-setup/CMM/cmm-manifest.json rename to playbook/shopfloor-setup/gea-shopfloor-cmm/cmm-manifest.json diff --git a/playbook/shopfloor-setup/Standard/01-eDNC.ps1 b/playbook/shopfloor-setup/gea-shopfloor-collections/01-eDNC.ps1 similarity index 100% rename from playbook/shopfloor-setup/Standard/01-eDNC.ps1 rename to playbook/shopfloor-setup/gea-shopfloor-collections/01-eDNC.ps1 diff --git a/playbook/shopfloor-setup/Standard/02-MachineNumberACLs.ps1 b/playbook/shopfloor-setup/gea-shopfloor-collections/02-MachineNumberACLs.ps1 similarity index 100% rename from playbook/shopfloor-setup/Standard/02-MachineNumberACLs.ps1 rename to playbook/shopfloor-setup/gea-shopfloor-collections/02-MachineNumberACLs.ps1 diff --git a/playbook/shopfloor-setup/Standard/03-RestoreEDncConfig.ps1 b/playbook/shopfloor-setup/gea-shopfloor-collections/03-RestoreEDncConfig.ps1 similarity index 100% rename from playbook/shopfloor-setup/Standard/03-RestoreEDncConfig.ps1 rename to playbook/shopfloor-setup/gea-shopfloor-collections/03-RestoreEDncConfig.ps1 diff --git a/playbook/shopfloor-setup/Standard/Backup-UDCData.bat b/playbook/shopfloor-setup/gea-shopfloor-collections/Backup-UDCData.bat similarity index 100% rename from playbook/shopfloor-setup/Standard/Backup-UDCData.bat rename to playbook/shopfloor-setup/gea-shopfloor-collections/Backup-UDCData.bat diff --git a/playbook/shopfloor-setup/Standard/Backup-UDCData.ps1 b/playbook/shopfloor-setup/gea-shopfloor-collections/Backup-UDCData.ps1 similarity index 100% rename from playbook/shopfloor-setup/Standard/Backup-UDCData.ps1 rename to playbook/shopfloor-setup/gea-shopfloor-collections/Backup-UDCData.ps1 diff --git a/playbook/shopfloor-setup/Standard/Set-MachineNumber.bat b/playbook/shopfloor-setup/gea-shopfloor-collections/Set-MachineNumber.bat similarity index 100% rename from playbook/shopfloor-setup/Standard/Set-MachineNumber.bat rename to playbook/shopfloor-setup/gea-shopfloor-collections/Set-MachineNumber.bat diff --git a/playbook/shopfloor-setup/Standard/Set-MachineNumber.ps1 b/playbook/shopfloor-setup/gea-shopfloor-collections/Set-MachineNumber.ps1 similarity index 100% rename from playbook/shopfloor-setup/Standard/Set-MachineNumber.ps1 rename to playbook/shopfloor-setup/gea-shopfloor-collections/Set-MachineNumber.ps1 diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3037.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3037.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3037.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3037.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3101.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3101.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3101.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3101.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3102.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3102.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3102.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3102.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3103.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3103.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3103.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3103.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3104.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3104.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3104.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3104.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3105.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3105.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3105.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3105.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3106.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3106.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3106.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3106.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3107.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3107.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3107.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3107.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3108.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3108.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3108.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3108.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3109.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3109.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3109.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3109.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3110.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3110.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3110.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3110.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3111.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3111.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3111.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3111.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3112.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3112.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3112.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3112.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3113.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3113.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3113.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3113.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3114.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3114.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3114.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3114.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3115.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3115.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3115.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3115.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3116.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3116.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3116.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3116.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3117.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3117.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3117.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3117.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3118.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3118.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3118.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3118.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3119.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3119.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3119.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3119.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3120.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3120.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3120.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3120.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3121.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3121.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3121.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3121.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3122.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3122.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3122.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3122.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3123.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3123.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3123.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3123.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3124.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3124.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3124.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3124.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3125.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3125.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3125.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3125.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3126.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3126.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3126.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3126.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3127.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3127.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3127.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3127.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3128.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3128.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3128.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3128.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3129.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3129.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3129.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3129.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3201.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3201.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3201.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3201.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3202.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3202.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3202.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3202.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3203.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3203.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3203.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3203.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3204.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3204.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3204.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3204.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3205.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3205.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3205.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3205.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3206.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3206.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3206.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3206.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3207.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3207.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3207.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3207.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3208.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3208.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3208.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3208.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3209.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3209.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3209.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3209.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3210.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3210.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3210.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3210.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3211.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3211.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3211.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3211.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3212.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3212.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_3212.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_3212.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4001.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4001.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4001.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4001.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4002.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4002.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4002.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4002.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4003.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4003.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4003.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4003.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4004.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4004.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4004.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4004.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4005.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4005.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4005.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4005.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4006.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4006.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4006.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4006.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4007.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4007.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4007.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4007.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4008.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4008.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4008.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4008.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4101.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4101.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4101.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4101.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4102.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4102.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4102.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4102.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4103.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4103.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_4103.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_4103.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7401.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7401.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7401.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7401.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7402.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7402.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7402.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7402.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7403.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7403.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7403.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7403.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7404.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7404.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7404.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7404.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7405.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7405.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7405.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7405.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7501.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7501.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7501.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7501.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7502.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7502.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7502.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7502.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7503.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7503.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7503.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7503.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7504.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7504.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7504.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7504.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7505.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7505.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7505.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7505.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7506.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7506.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7506.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7506.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7507.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7507.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7507.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7507.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7601.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7601.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7601.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7601.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7602.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7602.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7602.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7602.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7603.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7603.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7603.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7603.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7604.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7604.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7604.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7604.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7605.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7605.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7605.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7605.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7606.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7606.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7606.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7606.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7607.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7607.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7607.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7607.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7608.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7608.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7608.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7608.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7801.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7801.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7801.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7801.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7802.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7802.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7802.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7802.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7803.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7803.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7803.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7803.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7804.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7804.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_7804.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_7804.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_8001.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_8001.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_8001.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_8001.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_8002.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_8002.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_8002.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_8002.json diff --git a/playbook/shopfloor-setup/Standard/udc-backups/udc_settings_8003.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_8003.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc-backups/udc_settings_8003.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc-backups/udc_settings_8003.json diff --git a/playbook/shopfloor-setup/Standard/udc_webserver_settings.json b/playbook/shopfloor-setup/gea-shopfloor-collections/udc_webserver_settings.json similarity index 100% rename from playbook/shopfloor-setup/Standard/udc_webserver_settings.json rename to playbook/shopfloor-setup/gea-shopfloor-collections/udc_webserver_settings.json diff --git a/playbook/shopfloor-setup/Lab/09-Setup-Lab.ps1 b/playbook/shopfloor-setup/gea-shopfloor-common/09-Setup-Lab.ps1 similarity index 100% rename from playbook/shopfloor-setup/Lab/09-Setup-Lab.ps1 rename to playbook/shopfloor-setup/gea-shopfloor-common/09-Setup-Lab.ps1 diff --git a/playbook/shopfloor-setup/Display/09-Setup-Display.ps1 b/playbook/shopfloor-setup/gea-shopfloor-display/09-Setup-Display.ps1 similarity index 100% rename from playbook/shopfloor-setup/Display/09-Setup-Display.ps1 rename to playbook/shopfloor-setup/gea-shopfloor-display/09-Setup-Display.ps1 diff --git a/playbook/shopfloor-setup/Genspect/09-Setup-Genspect.ps1 b/playbook/shopfloor-setup/gea-shopfloor-genspect/09-Setup-Genspect.ps1 similarity index 100% rename from playbook/shopfloor-setup/Genspect/09-Setup-Genspect.ps1 rename to playbook/shopfloor-setup/gea-shopfloor-genspect/09-Setup-Genspect.ps1 diff --git a/playbook/shopfloor-setup/gea-shopfloor-heattreat/README.md b/playbook/shopfloor-setup/gea-shopfloor-heattreat/README.md new file mode 100644 index 0000000..dabd633 --- /dev/null +++ b/playbook/shopfloor-setup/gea-shopfloor-heattreat/README.md @@ -0,0 +1,8 @@ +# gea-shopfloor-heattreat + +Placeholder PC type. No type-specific stage scripts yet. The shopfloor baseline +(`Shopfloor/00-PreInstall-MachineApps.ps1` etc.) still runs for this type. + +When heattreat-specific apps are identified, drop numbered stage scripts (`01-*.ps1` etc.) +in this dir and add Applications entries to the matching v2 manifest at +`tsgwp00525-v2/.../gea-shopfloor-heattreat/manifest.json`. diff --git a/playbook/shopfloor-setup/Keyence/09-Setup-Keyence.ps1 b/playbook/shopfloor-setup/gea-shopfloor-keyence/09-Setup-Keyence.ps1 similarity index 100% rename from playbook/shopfloor-setup/Keyence/09-Setup-Keyence.ps1 rename to playbook/shopfloor-setup/gea-shopfloor-keyence/09-Setup-Keyence.ps1 diff --git a/playbook/shopfloor-setup/Keyence/drivers/KEYENCE_VR_SERIES.cat b/playbook/shopfloor-setup/gea-shopfloor-keyence/drivers/KEYENCE_VR_SERIES.cat similarity index 100% rename from playbook/shopfloor-setup/Keyence/drivers/KEYENCE_VR_SERIES.cat rename to playbook/shopfloor-setup/gea-shopfloor-keyence/drivers/KEYENCE_VR_SERIES.cat diff --git a/playbook/shopfloor-setup/Keyence/drivers/amd64/WdfCoInstaller01009.dll b/playbook/shopfloor-setup/gea-shopfloor-keyence/drivers/amd64/WdfCoInstaller01009.dll similarity index 100% rename from playbook/shopfloor-setup/Keyence/drivers/amd64/WdfCoInstaller01009.dll rename to playbook/shopfloor-setup/gea-shopfloor-keyence/drivers/amd64/WdfCoInstaller01009.dll diff --git a/playbook/shopfloor-setup/Keyence/drivers/amd64/WinUsbCoinstaller2.dll b/playbook/shopfloor-setup/gea-shopfloor-keyence/drivers/amd64/WinUsbCoinstaller2.dll similarity index 100% rename from playbook/shopfloor-setup/Keyence/drivers/amd64/WinUsbCoinstaller2.dll rename to playbook/shopfloor-setup/gea-shopfloor-keyence/drivers/amd64/WinUsbCoinstaller2.dll diff --git a/playbook/shopfloor-setup/Keyence/drivers/keyence_vr_series.inf b/playbook/shopfloor-setup/gea-shopfloor-keyence/drivers/keyence_vr_series.inf similarity index 100% rename from playbook/shopfloor-setup/Keyence/drivers/keyence_vr_series.inf rename to playbook/shopfloor-setup/gea-shopfloor-keyence/drivers/keyence_vr_series.inf diff --git a/playbook/shopfloor-setup/Keyence/installers/VR-6000 Series Software.msi b/playbook/shopfloor-setup/gea-shopfloor-keyence/installers/VR-6000 Series Software.msi similarity index 100% rename from playbook/shopfloor-setup/Keyence/installers/VR-6000 Series Software.msi rename to playbook/shopfloor-setup/gea-shopfloor-keyence/installers/VR-6000 Series Software.msi diff --git a/playbook/shopfloor-setup/Keyence/keyence-manifest.json b/playbook/shopfloor-setup/gea-shopfloor-keyence/keyence-manifest.json similarity index 100% rename from playbook/shopfloor-setup/Keyence/keyence-manifest.json rename to playbook/shopfloor-setup/gea-shopfloor-keyence/keyence-manifest.json diff --git a/playbook/shopfloor-setup/gea-shopfloor-nocollections/01-eDNC.ps1 b/playbook/shopfloor-setup/gea-shopfloor-nocollections/01-eDNC.ps1 new file mode 100644 index 0000000..c8f0cf5 --- /dev/null +++ b/playbook/shopfloor-setup/gea-shopfloor-nocollections/01-eDNC.ps1 @@ -0,0 +1,111 @@ +# 01-eDNC.ps1 - Install eDNC and deploy custom eMxInfo.txt (Standard-Machine only) + +# --- Transcript --- +$logDir = 'C:\Logs\SFLD' +if (-not (Test-Path $logDir)) { try { New-Item -ItemType Directory -Path $logDir -Force | Out-Null } catch {} } +try { Start-Transcript -Path (Join-Path $logDir '01-eDNC.log') -Append -Force | Out-Null } catch {} + +# --- Skip on Timeclock sub-type --- +$subtypeFile = 'C:\Enrollment\pc-subtype.txt' +if (Test-Path $subtypeFile) { + $subtype = (Get-Content $subtypeFile -First 1 -ErrorAction SilentlyContinue).Trim() + if ($subtype -eq 'Timeclock') { + Write-Host "=== eDNC Setup: skipped (Standard-Timeclock) ===" + try { Stop-Transcript | Out-Null } catch {} + return + } +} + +Write-Host "=== eDNC Setup ===" + +function Get-SiteConfig { + $configPath = 'C:\Enrollment\site-config.json' + if (-not (Test-Path -LiteralPath $configPath)) { + Write-Host "site-config.json not found - using defaults" -ForegroundColor DarkGray + return $null + } + try { + return (Get-Content -LiteralPath $configPath -Raw -ErrorAction Stop | ConvertFrom-Json) + } catch { + Write-Warning "Failed to parse site-config.json: $_" + return $null + } +} +$siteConfig = Get-SiteConfig + +$siteName = if ($siteConfig) { $siteConfig.siteName } else { 'West Jefferson' } +$siteNameCompact = if ($siteConfig) { $siteConfig.siteNameCompact } else { 'WestJefferson' } + +$edncDir = "C:\Enrollment\shopfloor-setup\Standard\eDNC" + +if (-not (Test-Path $edncDir)) { + Write-Warning "eDNC folder not found at $edncDir - skipping." + try { Stop-Transcript | Out-Null } catch {} + exit 0 +} + +# --- Find installer --- +# Filter is eDNC*.msi (no dash) so we match both vendor naming styles: +# eDNC-6.4.3.msi (dash) and eDNC_6-4-5.msi (underscore). Imaging dir should +# only contain ONE version at a time; rollback to a prior version is handled +# post-imaging via the SFLD share's standard-machine/apps/ alternates. +$edncMsi = Get-ChildItem -Path $edncDir -Filter "eDNC*.msi" | Select-Object -First 1 +$emxInfo = Join-Path $edncDir "eMxInfo.txt" + +# --- 1. Install eDNC --- +if ($edncMsi) { + Write-Host "Installing eDNC: $($edncMsi.Name)..." + $p = Start-Process -FilePath "msiexec.exe" -ArgumentList "/i `"$($edncMsi.FullName)`" /qn /norestart LAUNCHNTLARS=false SITESELECTED=`"$siteName`"" -Wait -PassThru + Write-Host " eDNC exit code: $($p.ExitCode)" +} else { + Write-Warning "eDNC installer not found in $edncDir (expected eDNC*.msi)" +} + +# --- 2. Mirror x86 install to 64-bit Program Files (app uses hardcoded paths) --- +# mxTransactionDll.dll references \Dnc\Server Files\ +$copies = @( + @{ Src = "C:\Program Files (x86)\Dnc"; Dst = "C:\Program Files\Dnc" } +) +foreach ($c in $copies) { + if (Test-Path $c.Src) { + if (-not (Test-Path $c.Dst)) { + New-Item -Path $c.Dst -ItemType Directory -Force | Out-Null + } + Copy-Item -Path "$($c.Src)\*" -Destination $c.Dst -Recurse -Force + Write-Host " Copied $($c.Src) -> $($c.Dst)" + } +} + +# --- 3. Set DNC site + machine number --- +$regBase = "HKLM\SOFTWARE\WOW6432Node\GE Aircraft Engines\DNC" +reg add "$regBase\General" /v Site /t REG_SZ /d $siteNameCompact /f | Out-Null +Write-Host " DNC site set to $siteNameCompact." + +# Set machine number if tech entered one during PXE menu (defaults to 9999) +$machineNumFile = 'C:\Enrollment\machine-number.txt' +$machineNum = '9999' +if (Test-Path -LiteralPath $machineNumFile) { + $num = (Get-Content -LiteralPath $machineNumFile -First 1 -ErrorAction SilentlyContinue).Trim() + if ($num -and $num -match '^\d+$') { $machineNum = $num } +} +reg add "$regBase\General" /v MachineNo /t REG_SZ /d $machineNum /f | Out-Null +Write-Host " DNC MachineNo set to $machineNum." + +# --- 4. Deploy custom eMxInfo.txt to both Program Files paths --- +if (Test-Path $emxInfo) { + $dest86 = "C:\Program Files (x86)\DNC\Server Files" + $dest64 = "C:\Program Files\DNC\Server Files" + + foreach ($dest in @($dest86, $dest64)) { + if (-not (Test-Path $dest)) { + New-Item -Path $dest -ItemType Directory -Force | Out-Null + } + Copy-Item -Path $emxInfo -Destination (Join-Path $dest "eMxInfo.txt") -Force + Write-Host " eMxInfo.txt -> $dest" + } +} else { + Write-Warning "eMxInfo.txt not found at $emxInfo" +} + +Write-Host "=== eDNC Setup Complete ===" +try { Stop-Transcript | Out-Null } catch {} diff --git a/playbook/shopfloor-setup/gea-shopfloor-nocollections/02-MachineNumberACLs.ps1 b/playbook/shopfloor-setup/gea-shopfloor-nocollections/02-MachineNumberACLs.ps1 new file mode 100644 index 0000000..96f1a5d --- /dev/null +++ b/playbook/shopfloor-setup/gea-shopfloor-nocollections/02-MachineNumberACLs.ps1 @@ -0,0 +1,81 @@ +# 02-MachineNumberACLs.ps1 - Pre-grant write access on the UDC settings +# file and eDNC registry key so that STANDARD (non-admin) users can update +# the machine number via the Check-MachineNumber logon task without +# elevation or a UAC prompt. +# +# Runs during imaging as admin (type-specific Standard phase, after +# 01-eDNC.ps1 has installed DnC). Only touches Standard PCs. +# +# What gets opened up (narrow scope, not blanket admin): +# - C:\ProgramData\UDC\udc_settings.json -> BUILTIN\Users : Modify +# - HKLM:\SOFTWARE\WOW6432Node\GE Aircraft Engines\DNC\General +# -> BUILTIN\Users : SetValue + +# --- Transcript --- +$logDir = 'C:\Logs\SFLD' +if (-not (Test-Path $logDir)) { try { New-Item -ItemType Directory -Path $logDir -Force | Out-Null } catch {} } +try { Start-Transcript -Path (Join-Path $logDir '02-MachineNumberACLs.log') -Append -Force | Out-Null } catch {} + +# --- Skip on Timeclock sub-type (no UDC/eDNC to grant ACLs for) --- +$subtypeFile = 'C:\Enrollment\pc-subtype.txt' +if (Test-Path $subtypeFile) { + $subtype = (Get-Content $subtypeFile -First 1 -ErrorAction SilentlyContinue).Trim() + if ($subtype -eq 'Timeclock') { + Write-Host "02-MachineNumberACLs: skipped (Standard-Timeclock)" + try { Stop-Transcript | Out-Null } catch {} + return + } +} + +Write-Host "02-MachineNumberACLs.ps1 starting $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" +Write-Host "Running as: $([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)" +Write-Host "" +Write-Host "Setting ACLs for standard-user machine number access..." + +# --- UDC settings directory --- +# Set ACL on the DIRECTORY (not the file) with inheritance so that +# udc_settings.json inherits the permission whenever UDC.exe creates it. +# UDC_Setup.exe is killed by KillAfterDetection before UDC.exe writes the +# JSON, so the file doesn't exist at this point. Directory-level ACL with +# ContainerInherit + ObjectInherit covers any file created inside later. +$udcDir = 'C:\ProgramData\UDC' +if (Test-Path -LiteralPath $udcDir) { + try { + $acl = Get-Acl -LiteralPath $udcDir + $rule = New-Object System.Security.AccessControl.FileSystemAccessRule( + 'BUILTIN\Users', 'Modify', + ([System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor + [System.Security.AccessControl.InheritanceFlags]::ObjectInherit), + [System.Security.AccessControl.PropagationFlags]::None, + 'Allow') + $acl.AddAccessRule($rule) + Set-Acl -LiteralPath $udcDir -AclObject $acl -ErrorAction Stop + Write-Host " UDC dir: BUILTIN\Users granted Modify (inherited) on $udcDir" + } catch { + Write-Warning " Failed to set ACL on $udcDir : $_" + } +} else { + Write-Host " UDC dir not found at $udcDir - skipping (UDC not installed?)" -ForegroundColor DarkGray +} + +# --- eDNC registry key --- +$ednRegPathWin = 'SOFTWARE\WOW6432Node\GE Aircraft Engines\DNC\General' +try { + $regKey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey($ednRegPathWin, $true) + if ($regKey) { + $regSec = $regKey.GetAccessControl() + $rule = New-Object System.Security.AccessControl.RegistryAccessRule( + 'BUILTIN\Users', 'SetValue', 'Allow') + $regSec.AddAccessRule($rule) + $regKey.SetAccessControl($regSec) + $regKey.Close() + Write-Host " eDNC reg: BUILTIN\Users granted SetValue on HKLM:\$ednRegPathWin" + } else { + Write-Host " eDNC registry key not found - skipping (eDNC not installed?)" -ForegroundColor DarkGray + } +} catch { + Write-Warning " Failed to set ACL on HKLM:\$ednRegPathWin : $_" +} + +Write-Host "ACL setup complete." +try { Stop-Transcript | Out-Null } catch {} diff --git a/playbook/shopfloor-setup/gea-shopfloor-nocollections/03-RestoreEDncConfig.ps1 b/playbook/shopfloor-setup/gea-shopfloor-nocollections/03-RestoreEDncConfig.ps1 new file mode 100644 index 0000000..6ea5e68 --- /dev/null +++ b/playbook/shopfloor-setup/gea-shopfloor-nocollections/03-RestoreEDncConfig.ps1 @@ -0,0 +1,86 @@ +# 03-RestoreEDncConfig.ps1 - Restore per-machine eDNC config from .reg backup. +# +# Runs at shopfloor-setup time AFTER 01-eDNC.ps1 has installed eDNC. If the +# tech typed a real machine number at the PXE menu (not left blank -> 9999), +# look for a .reg backup matching that number on the PXE-local copy of the +# setup tree and import it. That restores everything eDNC-side the backup +# captured: eFocas IP/port, PPDCS serial (baud/parity/bits), Hssb KRelay1, +# etc. - instead of the reimaged PC coming up on factory defaults. +# +# After reg import, the tech-typed machine number is written to HKLM and to +# UDC's settings JSON to guarantee the current number wins over whatever the +# backup happened to contain (off-by-one backups exist in the historical +# dump; see ntlars-fixed/ work on the PXE host). +# +# Skipped when: +# - pc-subtype != Machine (Timeclock PCs do not use a machine number) +# - machine-number.txt missing / empty / 9999 (tech declined to set one) +# - ntlars-backups/ folder missing from the staged setup tree +# - no matching .reg file on disk for this machine number + +$ErrorActionPreference = 'Continue' + +$logDir = 'C:\Logs\SFLD' +if (-not (Test-Path $logDir)) { try { New-Item -ItemType Directory -Path $logDir -Force | Out-Null } catch {} } +try { Start-Transcript -Path (Join-Path $logDir '03-RestoreEDncConfig.log') -Append -Force | Out-Null } catch {} + +Write-Host "=== Restore eDNC config from backup ===" + +# ---- Sub-type gate ---- +$subtypeFile = 'C:\Enrollment\pc-subtype.txt' +if (Test-Path $subtypeFile) { + $subtype = (Get-Content $subtypeFile -First 1 -ErrorAction SilentlyContinue).Trim() + if ($subtype -eq 'Timeclock') { + Write-Host "Standard-Timeclock - skipping." + try { Stop-Transcript | Out-Null } catch {} + return + } +} + +# ---- Read machine number captured at PXE time ---- +$mnFile = 'C:\Enrollment\machine-number.txt' +if (-not (Test-Path $mnFile)) { + Write-Host "machine-number.txt not present - skipping (tech did not set one)." + try { Stop-Transcript | Out-Null } catch {} + return +} +$machineNum = (Get-Content $mnFile -First 1 -ErrorAction SilentlyContinue).Trim() +if (-not $machineNum -or $machineNum -eq '9999') { + Write-Host "Machine number is '$machineNum' (placeholder or empty) - skipping." + try { Stop-Transcript | Out-Null } catch {} + return +} + +Write-Host "Machine number: $machineNum" + +# ---- Locate local backup root (staged from PXE during imaging) ---- +$backupRoot = 'C:\Enrollment\shopfloor-setup\Standard\ntlars-backups' +if (-not (Test-Path $backupRoot)) { + Write-Host "ntlars-backups folder not staged at $backupRoot - skipping." + try { Stop-Transcript | Out-Null } catch {} + return +} + +. "$PSScriptRoot\..\Shopfloor\lib\Restore-EDncReg.ps1" +$imported = Import-EDncRegBackup -SourceRoot $backupRoot -MachineNumber $machineNum + +if (-not $imported) { + Write-Host "No backup imported - leaving eDNC at installer defaults." + try { Stop-Transcript | Out-Null } catch {} + return +} + +# ---- Tech-typed number wins: overwrite MachineNo in both eDNC and UDC. ---- +# The imported .reg probably already has the right number (we rewrote the +# historical dump) but off-by-one backups exist, and this is cheap insurance. +. "$PSScriptRoot\..\Shopfloor\lib\Update-MachineNumber.ps1" + +$current = Get-CurrentMachineNumber +Write-Host "Post-import state: UDC='$($current.Udc)' eDNC='$($current.Ednc)'" + +$result = Update-MachineNumber -NewNumber $machineNum +if ($result.UdcUpdated) { Write-Host " UDC MachineNumber set to $machineNum" } +if ($result.EdncUpdated) { Write-Host " eDNC MachineNo set to $machineNum" } +foreach ($err in $result.Errors) { Write-Warning " $err" } + +try { Stop-Transcript | Out-Null } catch {} diff --git a/playbook/shopfloor-setup/gea-shopfloor-nocollections/Install-eMxInfo.cmd.template b/playbook/shopfloor-setup/gea-shopfloor-nocollections/Install-eMxInfo.cmd.template new file mode 100644 index 0000000..7e5521d --- /dev/null +++ b/playbook/shopfloor-setup/gea-shopfloor-nocollections/Install-eMxInfo.cmd.template @@ -0,0 +1,32 @@ +@echo off +REM Install-eMxInfo.cmd - copy the site-specific eMxInfo.txt into both +REM DNC Program Files install paths. Run by Install-FromManifest.ps1 +REM (Type=CMD) when Hash detection on the x86 path fails. +REM +REM Real install paths confirmed via 01-eDNC.ps1 (PXE preinstall) + a +REM real shopfloor install log capture: +REM C:\Program Files (x86)\DNC\Server Files\eMxInfo.txt +REM C:\Program Files\DNC\Server Files\eMxInfo.txt +REM Both required because mxTransactionDll.dll references both. +REM +REM Earlier versions wrote to C:\Program Files\eDNC\eMxInfo.txt - that +REM path doesn't exist on disk; the eDNC product creates \DNC\ (no 'e') +REM with a "Server Files" subdir. Corrected 2026-04-28. + +set "SRC=%~dp0eMxInfo.txt" +if not exist "%SRC%" ( + echo Install-eMxInfo: source file not found at %SRC% + exit /b 1 +) + +set "DST64=C:\Program Files\DNC\Server Files" +set "DST86=C:\Program Files (x86)\DNC\Server Files" + +if not exist "%DST64%\" mkdir "%DST64%" 2>nul +if not exist "%DST86%\" mkdir "%DST86%" 2>nul + +copy /Y "%SRC%" "%DST64%\eMxInfo.txt" >nul || exit /b 2 +copy /Y "%SRC%" "%DST86%\eMxInfo.txt" >nul || exit /b 3 + +echo Install-eMxInfo: deployed eMxInfo.txt to both DNC\Server Files paths +exit /b 0 diff --git a/playbook/shopfloor-setup/gea-shopfloor-nocollections/Set-MachineNumber.bat b/playbook/shopfloor-setup/gea-shopfloor-nocollections/Set-MachineNumber.bat new file mode 100644 index 0000000..c6531a4 --- /dev/null +++ b/playbook/shopfloor-setup/gea-shopfloor-nocollections/Set-MachineNumber.bat @@ -0,0 +1,38 @@ +@echo off +REM Set-MachineNumber.bat - Wrapper for Set-MachineNumber.ps1 +REM +REM Looks for the .ps1 in three places, in order: +REM 1. %~dp0Set-MachineNumber.ps1 +REM - .bat and .ps1 side-by-side (normal desktop-copied case, repo layout) +REM 2. C:\Users\SupportUser\Desktop\Set-MachineNumber.ps1 +REM - dispatcher-copied location, if this .bat lives somewhere else +REM 3. C:\Enrollment\shopfloor-setup\Standard\Set-MachineNumber.ps1 +REM - canonical enrollment staging copy +REM +REM Goto-based dispatch - no nested if blocks, no literal parens in echo lines. +REM CMD parses "if (...)" blocks by counting parens and will silently eat any +REM "(" or ")" inside an echo, so keeping the flow flat avoids that class of +REM syntax bomb entirely. + +setlocal +set "PS1=%~dp0Set-MachineNumber.ps1" +if exist "%PS1%" goto :run + +set "PS1=C:\Users\SupportUser\Desktop\Set-MachineNumber.ps1" +if exist "%PS1%" goto :run + +set "PS1=C:\Enrollment\shopfloor-setup\Standard\Set-MachineNumber.ps1" +if exist "%PS1%" goto :run + +echo ERROR: Set-MachineNumber.ps1 not found in any of: +echo %~dp0Set-MachineNumber.ps1 +echo C:\Users\SupportUser\Desktop\Set-MachineNumber.ps1 +echo C:\Enrollment\shopfloor-setup\Standard\Set-MachineNumber.ps1 +echo. +pause +exit /b 1 + +:run +echo Launching: %PS1% +powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%PS1%" +exit /b %errorlevel% diff --git a/playbook/shopfloor-setup/gea-shopfloor-nocollections/Set-MachineNumber.ps1 b/playbook/shopfloor-setup/gea-shopfloor-nocollections/Set-MachineNumber.ps1 new file mode 100644 index 0000000..9625ba0 --- /dev/null +++ b/playbook/shopfloor-setup/gea-shopfloor-nocollections/Set-MachineNumber.ps1 @@ -0,0 +1,87 @@ +# Set-MachineNumber.ps1 - Update UDC + eDNC machine number on a Standard shopfloor PC +# +# Purpose: +# Both UDC and eDNC use the same per-machine identifier ("Workstation Number" / +# "Machine Number"). On Standard PCs imaged via PXE preinstall, both are installed +# with a placeholder. When the PC is brought to its physical machine and assigned +# a real number, this helper updates both apps in one step. +# +# Persistence locations updated: +# 1. UDC: C:\ProgramData\UDC\udc_settings.json (GeneralSettings.MachineNumber) +# 2. eDNC: HKLM:\SOFTWARE\WOW6432Node\GE Aircraft Engines\DNC\General\MachineNo +# +# After updating, kills any running UDC.exe and relaunches it with the new args +# so the in-memory state matches the persisted value. +# +# Run as SupportUser (admin). Requires write access to ProgramData and HKLM. + +Add-Type -AssemblyName Microsoft.VisualBasic +Add-Type -AssemblyName System.Windows.Forms + +. "$PSScriptRoot\..\Shopfloor\lib\Get-PCProfile.ps1" +. "$PSScriptRoot\..\Shopfloor\lib\Update-MachineNumber.ps1" + +$site = if ($siteConfig) { $siteConfig.siteName } else { 'West Jefferson' } + +# --- Read current values for display --- +$currentMN = Get-CurrentMachineNumber +$currentUdc = $currentMN.Udc +$currentEdnc = $currentMN.Ednc + +# --- Show prompt with current state --- +$promptLines = @() +$promptLines += "Current UDC machine number: $(if ($currentUdc) { $currentUdc } else { '(not set)' })" +$promptLines += "Current eDNC machine number: $(if ($currentEdnc) { $currentEdnc } else { '(not set)' })" +$promptLines += "" +$promptLines += "Enter the new Machine Number for this PC:" +$prompt = $promptLines -join "`n" + +$new = [Microsoft.VisualBasic.Interaction]::InputBox($prompt, "Set Machine Number", "") + +if ([string]::IsNullOrWhiteSpace($new)) { + Write-Host "Cancelled." + exit 0 +} + +$new = $new.Trim() + +# --- Validate: digits only (loosen if you need alphanumerics) --- +if ($new -notmatch '^\d+$') { + [System.Windows.Forms.MessageBox]::Show( + "Machine number must be digits only.`n`nYou entered: '$new'", + "Invalid Machine Number", + [System.Windows.Forms.MessageBoxButtons]::OK, + [System.Windows.Forms.MessageBoxIcon]::Error + ) | Out-Null + exit 1 +} + +$mnResult = Update-MachineNumber -NewNumber $new -Site $site + +$results = @() +if ($mnResult.UdcUpdated) { + Write-Host "UDC: $currentUdc -> $new" + $results += "UDC updated to $new" +} elseif (-not (Test-Path 'C:\ProgramData\UDC\udc_settings.json')) { + $results += "UDC: settings file missing (run UDC.exe once first)" +} +if ($mnResult.EdncUpdated) { + Write-Host "eDNC: $currentEdnc -> $new" + $results += "eDNC updated to $new" +} elseif (-not (Test-Path 'HKLM:\SOFTWARE\WOW6432Node\GE Aircraft Engines\DNC\General')) { + $results += "eDNC: registry key missing (eDNC not installed?)" +} +foreach ($err in $mnResult.Errors) { + Write-Warning $err + $results += $err +} +if ($mnResult.UdcUpdated) { Write-Host "UDC.exe relaunched." } + +# --- Show summary --- +$summary = ($results -join "`n") + "`n`nTo apply eDNC changes, restart any running DncMain.exe." +[System.Windows.Forms.MessageBox]::Show( + $summary, + "Set Machine Number - Done", + [System.Windows.Forms.MessageBoxButtons]::OK, + [System.Windows.Forms.MessageBoxIcon]::Information +) | Out-Null diff --git a/playbook/shopfloor-setup/WaxAndTrace/09-Setup-WaxAndTrace.ps1 b/playbook/shopfloor-setup/gea-shopfloor-waxtrace/09-Setup-WaxAndTrace.ps1 similarity index 100% rename from playbook/shopfloor-setup/WaxAndTrace/09-Setup-WaxAndTrace.ps1 rename to playbook/shopfloor-setup/gea-shopfloor-waxtrace/09-Setup-WaxAndTrace.ps1 diff --git a/playbook/startnet.cmd b/playbook/startnet.cmd index e4d3445..e0c6be4 100644 --- a/playbook/startnet.cmd +++ b/playbook/startnet.cmd @@ -37,7 +37,7 @@ echo Please select an option: echo. echo 1. GEA Standard echo 2. GEA Engineer -echo 3. GEA Shopfloor +echo 3. GEA Shopfloor (sub-menu) echo 4. GE Standard echo 5. GE Engineer echo 6. GE Shopfloor Lockdown @@ -47,13 +47,46 @@ echo ======================================== echo. set /p choice=Enter your choice (1-7): -REM --- Only shopfloor images (3,6,7) need GCCH enrollment --- +REM --- Shopfloor images (3,6,7) need GCCH enrollment + (for 3) PC-type sub-menu. +REM Choice 3 = GEA Shopfloor: drill into sub-menu first to pick the gea-shopfloor-* +REM sub-category, THEN the office menu, THEN machine number for collections+nocollections. set PPKG= -if "%choice%"=="3" goto enroll_menu +if "%choice%"=="3" goto gea_shopfloor_submenu if "%choice%"=="6" goto enroll_menu if "%choice%"=="7" goto enroll_menu goto enroll_staged +:gea_shopfloor_submenu +cls +echo. +echo ======================================== +echo GEA Shopfloor PC Sub-Type +echo ======================================== +echo. +echo 1. Machine with Collections (eDNC + UDC + Plant Apps) +echo 2. Machine without Collections (eDNC + Plant Apps, no UDC) +echo 3. Common (Timeclock, Lab; WJ Shopfloor only) +echo 4. Keyence (VR-6000 microscope/profilometer) +echo 5. CMM (Hexagon PC-DMIS + Protect Viewer) +echo 6. Genspect +echo 7. Heattreat (placeholder) +echo 8. Wax and Trace +echo 9. Display (kiosk dashboard) +echo. +set PCTYPE= +set /p ges_choice=Enter your choice (1-9): +if "%ges_choice%"=="1" set PCTYPE=gea-shopfloor-collections +if "%ges_choice%"=="2" set PCTYPE=gea-shopfloor-nocollections +if "%ges_choice%"=="3" set PCTYPE=gea-shopfloor-common +if "%ges_choice%"=="4" set PCTYPE=gea-shopfloor-keyence +if "%ges_choice%"=="5" set PCTYPE=gea-shopfloor-cmm +if "%ges_choice%"=="6" set PCTYPE=gea-shopfloor-genspect +if "%ges_choice%"=="7" set PCTYPE=gea-shopfloor-heattreat +if "%ges_choice%"=="8" set PCTYPE=gea-shopfloor-waxtrace +if "%ges_choice%"=="9" set PCTYPE=gea-shopfloor-display +if "%PCTYPE%"=="" goto gea_shopfloor_submenu +goto enroll_menu + :enroll_menu cls echo. @@ -91,83 +124,26 @@ if "%enroll%"=="" goto enroll_menu set PPKG= if not "%OFFICE%"=="" set PPKG=GCCH_Prod_SFLD_%OFFICE%_%REGION%_Exp_%PPKG_EXP%_%PPKG_VER%.ppkg -:pctype_menu -cls -echo. -echo ======================================== -echo Shopfloor PC Type -echo ======================================== -echo. -echo 1. CMM -echo 2. Wax and Trace -echo 3. Keyence -echo 4. Genspect -echo 5. Display -echo 6. Standard -echo 7. Lab -echo. -set PCTYPE= -set /p pctype_choice=Enter your choice (1-7): -if "%pctype_choice%"=="1" set PCTYPE=CMM -if "%pctype_choice%"=="2" set PCTYPE=WaxAndTrace -if "%pctype_choice%"=="3" set PCTYPE=Keyence -if "%pctype_choice%"=="4" set PCTYPE=Genspect -if "%pctype_choice%"=="5" set PCTYPE=Display -if "%pctype_choice%"=="6" set PCTYPE=Standard -if "%pctype_choice%"=="7" set PCTYPE=Lab -if "%PCTYPE%"=="" goto pctype_menu - -REM --- Sub-type selection menus --- -REM PCSUBTYPE is written to pc-subtype.txt alongside pc-type.txt. -REM Scripts read it to look up the right profile in site-config.json. +REM --- 2026-05-04 rename reorg: PCTYPE is set by gea_shopfloor_submenu above +REM (single string, e.g. gea-shopfloor-collections). Old per-type submenus +REM (Standard sub-type, Display sub-type) are gone - flatten via the new +REM gea-shopfloor-* names. PCSUBTYPE / DISPLAYTYPE are no longer written +REM (pc-subtype.txt / display-type.txt deprecated). Configure-PC.ps1 still +REM looks up site-config.json profiles via the single full string. set PCSUBTYPE= set DISPLAYTYPE= -REM --- Standard sub-type --- -if not "%PCTYPE%"=="Standard" goto skip_standard_menu -:standard_menu -cls -echo. -echo ======================================== -echo Standard PC Sub-Type -echo ======================================== -echo. -echo 1. Machine (WJ Shopfloor, Plant Apps, eDNC, UDC) -echo 2. Timeclock (WJ Shopfloor only) -echo. -set /p standard_choice=Enter your choice (1-2): -if "%standard_choice%"=="1" set PCSUBTYPE=Machine -if "%standard_choice%"=="2" set PCSUBTYPE=Timeclock -if "%PCSUBTYPE%"=="" goto standard_menu - -REM --- Machine number (Standard-Machine only; Timeclock PCs do not use one) --- +REM --- Machine number (collections + nocollections only; other variants don't use one) --- set MACHINENUM=9999 -if "%PCSUBTYPE%"=="Timeclock" goto skip_standard_menu +if /i "%PCTYPE%"=="gea-shopfloor-collections" goto prompt_machinenum +if /i "%PCTYPE%"=="gea-shopfloor-nocollections" goto prompt_machinenum +goto skip_machinenum +:prompt_machinenum echo. set /p MACHINENUM=Enter machine number (digits, or Enter for 9999): if "%MACHINENUM%"=="" set MACHINENUM=9999 echo Machine number: %MACHINENUM% -:skip_standard_menu - -REM --- Display sub-type --- -if not "%PCTYPE%"=="Display" goto skip_display_menu -:display_menu -cls -echo. -echo ======================================== -echo Display Type -echo ======================================== -echo. -echo 1. Dashboard -echo 2. Lobby Display -echo. -set /p display_choice=Enter your choice (1-2): -if "%display_choice%"=="1" set DISPLAYTYPE=Dashboard -if "%display_choice%"=="1" set PCSUBTYPE=Dashboard -if "%display_choice%"=="2" set DISPLAYTYPE=Lobby -if "%display_choice%"=="2" set PCSUBTYPE=Lobby -if "%PCSUBTYPE%"=="" goto display_menu -:skip_display_menu +:skip_machinenum REM --- Map enrollment share early (kept open for copy after imaging) --- set NEED_ENROLL=0 @@ -303,8 +279,10 @@ echo Manual fallback created at W:\enroll.cmd REM --- Copy shopfloor PC type setup scripts --- if "%PCTYPE%"=="" goto cleanup_enroll echo %PCTYPE%> W:\Enrollment\pc-type.txt -if not "%DISPLAYTYPE%"=="" echo %DISPLAYTYPE%> W:\Enrollment\display-type.txt -if not "%PCSUBTYPE%"=="" echo %PCSUBTYPE%> W:\Enrollment\pc-subtype.txt +REM 2026-05-04 rename reorg: pc-subtype.txt and display-type.txt no longer +REM written. PCTYPE is a single full string ("gea-shopfloor-collections", +REM "gea-shopfloor-display", etc.). pcSubType-aware code paths fall back +REM to empty string and are handled as alias-resolution-only. if not "%MACHINENUM%"=="" echo %MACHINENUM%> W:\Enrollment\machine-number.txt copy /Y "Y:\shopfloor-setup\Run-ShopfloorSetup.ps1" "W:\Enrollment\Run-ShopfloorSetup.ps1" REM --- Always copy Shopfloor baseline scripts --- @@ -356,7 +334,7 @@ REM The tsgwp00525 SFLD share that holds the canonical copy is not yet reachable REM during shopfloor-setup (Azure DSC provisions those creds later), so this REM bootstrap exists to get the first-install through. Post-imaging, the REM unified GE-Enforce dispatcher takes over from the share for ongoing updates. -if /i not "%PCTYPE%"=="CMM" goto skip_cmm_stage +if /i not "%PCTYPE%"=="gea-shopfloor-cmm" goto skip_cmm_stage if exist "Y:\installers-post\cmm\cmm-manifest.json" ( mkdir W:\CMM-Install 2>NUL xcopy /E /Y /I "Y:\installers-post\cmm" "W:\CMM-Install\"