ORD/CONNECT One User Preference across multiple workspaces?

i'm back onto setting up my ORD workspaces for clients.

I plan to use the default location for userpreferences to simplify things. This will require me to lock down a few variables in our Organization configuration.

My question is, is there any HARM in using the same user preferences for multiple clients? As far as I can tell, user preferences are personal preferences, and shouldn't really be dependent on client setup, but I'm not certain about that. Some of the clients have user preference seeds, some of them do not. Can you think of anything in


that would be essential to functioning in a specific client environment?

_USTN_PREFNAMEBASE does vary from client to client. I believe that is what I would need to lock down. Either that, or _USTN_HOMEPREFS...

I plan to %lock _USTN_USERNAME = $(USERNAME)

Can you think of anything wrong with this?
If I need to allow for separate preferences for each client, I can do that, but it would be cleaner and neater if I could just go around that.

  • I've been experimenting with using One Drive to hold my user preferences. In order to account for both how Bentley breaks up preference storage (by application and version) and to avoid one computer modifying a file in use on another computer I decided to put each application's preferences in a folder for that app, then name the files in that folder with the username, computer name and version of the application. 

    Since I setup our client workspaces I remove all their seed files & preference file naming. In my checking our client workspaces seem to be shipping the default seed files that were in the version of ORD was current when they set up their very first ORD workspace.

    I've done this grand experiment on one person (me) so far, so take with a grain of salt.

    Here's roughly the configuration I use (i edited ours a bit so i may have introduced an error):

    # OneDrive User Prefs
    #--- Define UserPrefs locations & name prefix
    %if defined (_ONEDRIVE_ROOT) && exists ($(_ONEDRIVE_ROOT)CADDLib/Connect/)
    	_MY_USER_ROOT             = $(_ONEDRIVE_ROOT)CADDLib/Connect/
    	_MY_ALLAPPSPREFS          = $(_ONEDRIVE_ROOT)All/
    	_USTN_USERNAME            = $(USERNAME)
    	_USTN_HOMEPREFS           = $(_USTN_HOMEROOT)
    	# These prefs are always the same for all apps, all versions
    	MS_PERSONALDGNLIB         = $(_HNTB_ALLAPPSPREFS)Personal.dgnlib
    	MS_FKEYMNU                = $(_HNTB_ALLAPPSPREFS)funckey.mnu
    #--- Migrate Existing Preferences
    %if exists($(_USTN_LOCALUSERAPPDATAPATH)Prefs/Personal.upf)
    	# Migrate preference files from user directory
    	_OLD_PREFBASE                  = $(_USTN_LOCALUSERAPPDATAPATH)Prefs/Personal
    	MS_BUTTONMENUSEED              = $(_OLD_PREFBASE).button.btnmenu 
    	MS_DOCKINGPREFSEED             = $(_OLD_PREFBASE).docking.xml
    	MS_EXPLORERSETTINGSSEED        = $(_OLD_PREFBASE).explorer-settings.xml
    	MS_FKEYMNUSEED                 = $(_OLD_PREFBASE).funckey.mnu 
    	MS_GROUPPANELPREFSEED          = $(_OLD_PREFBASE).GroupPanels.xml
    	MS_INPUT_CONFIGXMLSEED         = $(_OLD_PREFBASE).InputConfiguration.xml
    	MS_KEYBOARDSHORTCUTSSEED       = $(_OLD_PREFBASE).KeyboardShortcuts.xml
    	MS_RIBBONPREFSSEED             = $(_OLD_PREFBASE).RibbonState.xml
    	MS_USERPREFSEED                = $(_OLD_PREFBASE).upf
    	# Not sure what preference file this creates
    	#MS_TASKDIALOGPREFSEED          = $(_OLD_PREFBASE)MicroStationTaskDialogPrefSeed.xml
    %elif exists ($(_ONEDRIVE_ROOT)CADDLib/Connect/Seed/)
    	# Keep a set of seed files in OneDrive
    	_SEED_PREFBASE                  = $(_ONEDRIVE_ROOT)CADDLib/Connect/Seed/PersonalSeed
    	MS_BUTTONMENUSEED              = $(_SEED_PREFBASE).button.btnmenu 
    	MS_DOCKINGPREFSEED             = $(_SEED_PREFBASE).docking.xml
    	MS_EXPLORERSETTINGSSEED        = $(_SEED_PREFBASE).explorer-settings.xml
    	MS_FKEYMNUSEED                 = $(_SEED_PREFBASE).funckey.mnu 
    	MS_GROUPPANELPREFSEED          = $(_SEED_PREFBASE).GroupPanels.xml
    	MS_INPUT_CONFIGXMLSEED         = $(_SEED_PREFBASE).InputConfiguration.xml
    	MS_KEYBOARDSHORTCUTSSEED       = $(_SEED_PREFBASE).KeyboardShortcuts.xml
    	MS_RIBBONPREFSSEED             = $(_SEED_PREFBASE).RibbonState.xml
    	MS_USERPREFSEED                = $(_SEED_PREFBASE).upf
    	# Not sure what preference file this creates
    	#MS_TASKDIALOGPREFSEED          = $(_SEED_PREFBASE)MicroStationTaskDialogPrefSeed.xml

    The first %if is what is defining the actual preference seed files.

    Note that the _USTN_PRODUCT_VERSION_* variables are newer ones. They are there in 10.10 on. There is a way to get these numbers from the registry if you want to support older versions as well. Version is only down to the minor version (so 10.10.21 for the last 10.10 ORD build and 10.11.00 for current ORD). I went down to the minor version because OBM 10.10 had different prefs for 10.10.00 and 10.10.20. Everything else seems OK with just going to the major version number. If OBM doesn't repeat this I may change to just the major version once we get 10.10.00 out of the environment.

    The key line is:


    That defines both the path and the prefix for any user preference file.

    The first part of the bottom section is how I plan on migrating most of a user's existing preference files. Basically I identify the existing files as the seed files so when ORD goes to create the new files it just copies the existing ones.

    The second half allows me to create a folder of seed files in OneDrive and use those for all my settings. If the personal.upf doesn't exist in the application's old preference location, and there is no seed folder in one drive, the applicaton's defaults are used.

    Testing so far:

    1. I'm not an in-depth ORD user, I'm just a workspace & projectwise person so my testing does not go super far into the things most of these seed files do. I plan on expanding the usage of this for additional testing.
    2. I have a custom ribbon in my personal dgnlib i use to bring tools for working on workspaces into 2 ribbon tabs. I use it with all applications, all versions, this has worked well.
    3. I've not yet tested this on multiple computers with one drive on them
    4. There are preference files that don't use the prefnamebase. Looking at my ORD folder i have a webdropsettings.rsc, and SurveyToolsWorkspacePreferences_2_0.xml files that don't use it (this is more a concern for using OneDrive than it is to move to a single set of named preference files).
    5. ORD automatically created the folders one OneDrive once I set the variables. This was very nice, I thought i'd have to create them ahead of time manually.
    6. You can't move, or change the name Personal.ucf.
    7. Currently I use this system with:
      1. MicroStation 10.17.01
      2. OpenBridge Modeler 10.10.20
      3. OpenBridge Modeler 10.11.00
      4. OpenRail Designer 10.10.21
      5. OpenRail Designer 10.11.00
      6. OpenRoads Designer 10.10.21
      7. OpenRoads Designer 10.11.00


  • BTW, I already remove all our client's setting of seed and prefname base. I've been doing this for awhile, i've got a several 10.9 workspaces where i've done this. Just instead of putting them on OneDrive I use the ORD defaults for everything.


  • so item #6 - the personal.ucf is still on the local machine where the software installed it ?

    Timothy Hickman

    CADD Manager | CADD Department


    Main: 877 627 3772| 

    1000 Waterview Drive Suite 201 | Hamilton, New Jersey 08691

  • It has to be. There is no way to rename or repath that file.

    It is locked internally by MicroStation.

    Rod Wing
    Senior Systems Analyst

  • Yes. I'm debating adding a %include to the Personal.ucf (all of them) that will include a UCF from OneDrive, but we rarely need to add things to the ucf, our more typical usage is to clean everything out of the UCF to fix issues rather than adding things. The %include wouldn't fix that.