When loading a transport case usingucybdld -EREPLACE, if an object already exists in the DB, and if the primary folder location of the object in the transport case is different from the primary folder location of the object in the DB, thenucybdbld does not replace the primary folder location in the DB. Instead, the primary folder location of the object in the DB remains as-is. The primary folder path of the object in the transport case will be added as a link in the DB, if it does not already exist.
If one moves an object several times in the source DB, doing a transport to the target DB each time, then the object links will simply accumulate.
In the Automation Engine DB, an object’s location is merely an
attribute of the object. Thus,
ucybdbld -EREPLACE does not perform a true replacement, because one object attribute (location) is not replaced.
There ought to be a way to make ucybdbld
truly replace all object attributes, including the primary folder location.
☙
The best way to solve this problem without breaking existing customers’ processes would probably be to modifyucybdbld so that the user could specify how folder locations should be handled. Here’s one idea of how it might work that covers most possibilities.
UCYBDBLD
[
-V[Path and file name]] [
-IFile name]
[
-LLanguage]
-B -Cmmmm [
-EMode]
[
-UName/Department] [
-GName]
[
-AAccess] [
-MAccess]
[
-FFolderHandling]
-XFile name
...-FFolderHandling
Determines how folder locations (links) are handled when existing objects are replaced. Valid only when -EREPLACE is also specified. Can be especially important when the folder location(s) of an object in the transport case differ from the object’s location(s) in the DB.
Allowed values forFolderHandling:
MD=Merge, database priority.The primary folder location in the database takes precedence. All other folder locations (whether in the transport case or the DB) will be links. The primary location in the DB is not changed (default).
MT=Merge, transport case priority.The primary folder location in the transport case takes precedence. All other folder locations (whether in the transport case or the DB) will be links.
OD=Only database.No changes are made to the folder locations in the DB.
OT=Only transport case. The primary folder location will be set to the primary folder location in the transport case. Any other folder locations in the transport case will be links. Folder locations found in the DB but not in the transport case will be removed.
PD=Primary location only, database priority.The primary folder location will be set to the primary folder location specified in the database. No new links will be created, and any existing links will be removed.
PT=Primary location only, transport case priority.The primary folder location will be set to the primary folder location
specified in the transport case. No new links will be created, and any existing
links will be removed.
The behavior we are most interested in is
OT — in other words, we need a way to instruct the DB load program to completely replace all the folder locations of objects that are replaced, with the location(s) specified in the transport case. If anyone has ideas of how to make ucybdbld work this way, or to achieve a similar result through other means, I would be glad to know about it.