Use PowerShell to Create Missing Promotion Management Config Files
My company is in the process of moving from a 4.1 SP04 BusinessObjects environment to a 4.2 SP07 environment on new servers running Window 2016. Yes, I am aware there are newer Support Packages available and even 4.3 is available, but we are not ready for those and that is not the focus of what I am writing about today.
We have two completely separate production systems and migrated all of the content for one of them to the upgraded environment pretty smoothly about 6 weeks ago using Promotion Management Wizard. This past weekend it was time to migrate the content for our second production system.
I was doing a Promote (Live CMS to Live CMS) scenario with Full content promotion with my Destnation CMS as my Central CMS. I had set the Log Level to “High”. This very same approach had work with the first production system whose content I had promoted just over a month ago.
Unfortunately, this time it turned out differently. After the Promotion Management Wizard found all of objects and checked all the dependencies this error occurred when trying to save the job. Unable to save job. Ugh!
In reviewing the Promotion Management Wizard log files I found a whole lot of messages like this all in regard to the same file…
frs://Output/a_181/048/040/2633909/lcm.job.external.dependencies.list-guid[7426040b-a3f9-44a8-b9d6-8c7a14ca2d2e16].properties not found on File Repository Server.
A quick search of that error turned up KBA 2620803 – Unable to save job. Basically, I just needed to create the missing file (empty) on the file repository server (FRS). I did just that and before re-running the Promotion Management Wizard I stopped and started the server containing the Promotion Management service.
Same error, different file. Initially, I didn’t know on which FRS I should be creating this file so I did so on the destination FRS because that seems more logical to me. Eventually I started creating the files on both the source and destination FRS locations, but I kept getting the same error with the log file telling me a different file was missing. I had no idea how this would go on. Ten files? Fifty files? After five we decided to abandon the upgrade for the weekend.
I spent a majority of this past week troubleshooting this issue on my own and with our support provider. They pointed me to the same KBA I had found and upon closer reading we discovered that it was the source FRS where we needed to be creating these “missing” files. After a few more missing file creations I was thinking there had to be a quicker way. In some cases, these directories were up to four levels deep. So I created a PowerShell script into which I could just plug in my base FRS path and the filename from the Promotion Management Wizard log file and it would create the file and whatever directories were necessary.
#Set the FRSPath variable to the full FRS UNC path. Be sure to include the backslash at the end.
$FRSPath = “\\Your full FRS UNC path goes here\”
#Set the PathAndNameFromLogFile variable to the file that is reported as missing in the Promotion Management Wizard log file minus the “frs://” at the beginning.
$PathAndNameFromLogFile = “Output/a_181/048/040/2633909/lcm.job.external.dependencies.list-guid[7426040b-a3f9-44a8-b9d6-8c7a14ca2d2e16].properties”
$PathAndName = $FRSPath + $PathAndNameFromLogFile.Replace(“/”, “\”)
$Path = Split-Path $PathAndName
$Name = Split-Path $PathAndName -leaf
Write-Host “Original path and name =” $PathAndNameFromLogFile
Write-Host “Full path and name =” $PathAndName
Write-Host “Path =” $Path
Write-Host “Name =” $Name
if(!(Test-Path -Path $Path))
$null = New-Item -ItemType Directory -Force -Path $Path
Write-Host “Created path =” $Path
Write-Host “Path already exists =” $Path
$null = New-Item $PathAndName
Write-Host “Created file =” $Name
Write-Host “File already exists =” $Name
Please note this will only work in a Windows environment. If your BusinessObjects installation is on Unix I am sure there is a way to do this same sort of thing and probably more simply too.
As it turned out the first missing file I created with my PowerShell script was the last missing file. I hope you never run into this this issue, but if you do this will help you work through it more quickly.