Fix ROA Windows setup scripts discovered during VM 302 testing

- 03-import-contafin.ps1: Auto-detect DMP file when not specified
- 05-import-companies.ps1: Default DumpDirectory to C:\DMPDIR
- 08-post-install-config.ps1: Fix SERVER_INFO column names (NAME/VALUE)

Tested full installation on VM 302 (Oracle XE 21c):
- CONTAFIN_ORACLE: 344 objects imported
- CAPIDAVATOUR: 3418 objects imported
- 54 ROAUPDATE directories created
- Scheduler jobs configured

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Marius
2026-01-29 01:42:39 +02:00
parent 648342c0a8
commit ef1e40675f
3 changed files with 111 additions and 89 deletions

View File

@@ -11,7 +11,7 @@
- Verifies import (object count, invalid objects)
.PARAMETER DumpFile
Path to the CONTAFIN_ORACLE DMP file. Required.
Path to the CONTAFIN_ORACLE DMP file. If not specified, auto-detects from DmpDir.
.PARAMETER OracleHome
Oracle home directory. If not specified, auto-detects.
@@ -45,8 +45,7 @@
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidateScript({ Test-Path $_ })]
[Parameter(Mandatory = $false)]
[string]$DumpFile,
[Parameter(Mandatory = $false)]
@@ -79,6 +78,24 @@ $ErrorActionPreference = 'Stop'
$logPath = Join-Path $PSScriptRoot "..\logs\03-import-contafin_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
Initialize-LogFile -LogPath $logPath -ScriptName "03-import-contafin.ps1"
# Auto-detect DumpFile if not specified
if (-not $DumpFile) {
Write-Host "[INFO] DumpFile not specified, searching in $DmpDir..." -ForegroundColor Yellow
$candidates = Get-ChildItem -Path $DmpDir -Filter "*contafin*.dmp" -ErrorAction SilentlyContinue |
Sort-Object LastWriteTime -Descending
if ($candidates) {
$DumpFile = $candidates[0].FullName
Write-Host "[INFO] Auto-detected DumpFile: $DumpFile" -ForegroundColor Green
} else {
throw "No CONTAFIN_ORACLE dump file found in $DmpDir. Please specify -DumpFile parameter or copy *contafin*.dmp to $DmpDir"
}
}
# Validate DumpFile exists
if (-not (Test-Path $DumpFile)) {
throw "DumpFile not found: $DumpFile"
}
try {
Write-LogSection "Importing CONTAFIN_ORACLE Schema"

View File

@@ -16,7 +16,7 @@
5. Logs progress
.PARAMETER DumpDirectory
Directory containing company DMP files. Required.
Directory containing company DMP files. If not specified, defaults to C:\DMPDIR.
.PARAMETER OracleHome
Oracle home directory. If not specified, auto-detects.
@@ -53,9 +53,8 @@
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidateScript({ Test-Path $_ -PathType Container })]
[string]$DumpDirectory,
[Parameter(Mandatory = $false)]
[string]$DumpDirectory = "C:\DMPDIR",
[Parameter(Mandatory = $false)]
[string]$OracleHome,
@@ -89,6 +88,12 @@ Initialize-LogFile -LogPath $logPath -ScriptName "05-import-companies.ps1"
try {
Write-LogSection "Batch Import Company Schemas"
# Validate DumpDirectory exists
if (-not (Test-Path $DumpDirectory -PathType Container)) {
throw "DumpDirectory not found: $DumpDirectory"
}
Write-Log "Using dump directory: $DumpDirectory"
if ($DryRun) {
Write-LogWarning "DRY RUN MODE - No changes will be made"
}

View File

@@ -345,122 +345,122 @@ SET FEEDBACK ON SERVEROUTPUT ON VERIFY OFF
-- System passwords (encoded)
MERGE INTO server_info t
USING (SELECT 'PASSWORD_SYS' AS varname, '$sysPasswordEncoded' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'PASSWORD_SYS' AS name, '$sysPasswordEncoded' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'PASSWORD_CONTAFIN_ORACLE' AS varname, '$contafinPasswordEncoded' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'PASSWORD_CONTAFIN_ORACLE' AS name, '$contafinPasswordEncoded' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
-- Local paths
MERGE INTO server_info t
USING (SELECT 'ROAUPDATEPATH' AS varname, '$RoaUpdatePath' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'ROAUPDATEPATH' AS name, '$RoaUpdatePath' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'SQLPLUSPATH' AS varname, '$sqlplusPath' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'SQLPLUSPATH' AS name, '$sqlplusPath' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'POWERSHELLPATH' AS varname, 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'POWERSHELLPATH' AS name, 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
-- Update configuration
MERGE INTO server_info t
USING (SELECT 'UPDATEPREREQ' AS varname, '1' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'UPDATEPREREQ' AS name, '1' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'POWERSHELLDOWNLOAD' AS varname, '1' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'POWERSHELLDOWNLOAD' AS name, '1' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'POWERSHELLTIMEOUT' AS varname, '30' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'POWERSHELLTIMEOUT' AS name, '30' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
-- Email configuration
MERGE INTO server_info t
USING (SELECT 'EMAIL_FROM' AS varname, '$EmailFrom' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'EMAIL_FROM' AS name, '$EmailFrom' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'EMAIL_TO' AS varname, '$EmailTo' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'EMAIL_TO' AS name, '$EmailTo' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'EMAIL_CC' AS varname, '' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'EMAIL_CC' AS name, '' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'EMAIL_SMTP' AS varname, '$EmailSmtp' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'EMAIL_SMTP' AS name, '$EmailSmtp' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'EMAIL_PORT' AS varname, '25' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'EMAIL_PORT' AS name, '25' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'EMAIL_METHOD' AS varname, 'UTL_SMTP' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'EMAIL_METHOD' AS name, 'UTL_SMTP' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'EMAIL_USERNAME' AS varname, '$EmailUsername' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'EMAIL_USERNAME' AS name, '$EmailUsername' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'EMAIL_PASSWORD' AS varname, '$EmailPassword' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'EMAIL_PASSWORD' AS name, '$EmailPassword' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
-- Update server URLs
MERGE INTO server_info t
USING (SELECT 'UPD_URL_APP' AS varname, 'https://update.romfast.ro/roa/' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'UPD_URL_APP' AS name, 'https://update.romfast.ro/roa/' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'UPD_URL_APP_BACKUP' AS varname, 'https://update2.romfast.ro/roa/' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'UPD_URL_APP_BACKUP' AS name, 'https://update2.romfast.ro/roa/' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
MERGE INTO server_info t
USING (SELECT 'UPD_URL_VERSION' AS varname, 'https://update.romfast.ro/version.txt' AS varvalue FROM dual) s
ON (t.varname = s.varname)
WHEN MATCHED THEN UPDATE SET t.varvalue = s.varvalue
WHEN NOT MATCHED THEN INSERT (varname, varvalue) VALUES (s.varname, s.varvalue);
USING (SELECT 'UPD_URL_VERSION' AS name, 'https://update.romfast.ro/version.txt' AS value FROM dual) s
ON (t.name = s.name)
WHEN MATCHED THEN UPDATE SET t.value = s.value
WHEN NOT MATCHED THEN INSERT (id_server_info, name, value) VALUES ((SELECT NVL(MAX(id_server_info),0)+1 FROM server_info), s.name, s.value);
COMMIT;
@@ -563,18 +563,18 @@ ORDER BY directory_name;
PROMPT
PROMPT === SERVER_INFO Configuration ===
SELECT varname,
CASE WHEN UPPER(varname) LIKE '%PASSWORD%' THEN '***HIDDEN***'
ELSE SUBSTR(varvalue, 1, 50)
END AS varvalue
SELECT name,
CASE WHEN UPPER(name) LIKE '%PASSWORD%' THEN '***HIDDEN***'
ELSE SUBSTR(value, 1, 50)
END AS value
FROM contafin_oracle.server_info
WHERE varname IN (
WHERE name IN (
'ROAUPDATEPATH', 'SQLPLUSPATH', 'POWERSHELLPATH',
'UPDATEPREREQ', 'POWERSHELLDOWNLOAD',
'EMAIL_FROM', 'EMAIL_TO', 'EMAIL_SMTP',
'UPD_URL_APP', 'PASSWORD_SYS', 'PASSWORD_CONTAFIN_ORACLE'
)
ORDER BY varname;
ORDER BY name;
PROMPT
PROMPT === AUTH_DETALII Customer ID ===