vCAC 6 Property Dictionary Relationship Builder

Note: If you are looking for how use Property Dictionary Relationship in vRA 7.0, then you want to look at my updated article at: vRA 7 Property Dictionary Relationship, though if you are looking for vRA 6.0, then please keep reading below.

While you can create property Dictionary Relationship XML by hand as I have shown in my previous post: vCAC 6 Property Dictionary Relationship, it has been proven to be so tedious of task to do when having a large environment,  that I wanted a more compelling way of doing it. That’s why I came up with my vCAC 6.x Property Dictionary Relationship Builder (This work with all versions of vCAC 5.1 and higher). I am going to continue with the example of my previous two posts: vCAC 6 Custom Properties – Build Profiles – Property DictionaryvCAC 6 Property Dictionary Relationship and show you how to generate the same property dictionary relationship XML using my my Property Dictionary Relationship Builder. Please read my previous post for more background of the scenario used in this example.

Let’s start by quickly showing the same table used in my previous post to demonstrate the relationship we are trying to generate. In this post I will use my generator to produce the location and storage relationship demonstrated in the below table

Location Storage Network
Toronto Toronto_T1 Toronto_Prod_PG01
Toronto_T2 Toronto_Prod_PG02
Toronto_T3 Toronto_DMZ_PG01
Boston Boston_T1 Boston_Prod_PG01
Boston_T2 Boston_Prod_PG02
Boston_T3 Boston_DMZ_PG01
Paris Paris_T1 Paris_Prod_PG01
Paris_T2 Paris_Prod_PG02
Paris_T3 Paris_DMZ_PG01

The expected Property Dictionary relationship XML file between Location & Storage for the above table look like below:

<?xml version=”1.0″ encoding=”utf-8″ standalone=”yes”?><ArrayOfPropertyValue xmlns:xsi=””><PropertyValue><FilterName>Vrm.DataCenter.Location</FilterName><FilterValue>Toronto</FilterValue><Value>Toronto_T1</Value></PropertyValue><PropertyValue><FilterName>Vrm.DataCenter.Location</FilterName><FilterValue>Toronto</FilterValue><Value>Toronto_T2</Value></PropertyValue><PropertyValue><FilterName>Vrm.DataCenter.Location</FilterName><FilterValue>Toronto</FilterValue><Value>Toronto_T3</Value></PropertyValue><PropertyValue><FilterName>Vrm.DataCenter.Location</FilterName><FilterValue>Boston</FilterValue><Value>Boston_T1</Value></PropertyValue><PropertyValue><FilterName>Vrm.DataCenter.Location</FilterName><FilterValue>Boston</FilterValue><Value>Boston_T2</Value></PropertyValue><PropertyValue><FilterName>Vrm.DataCenter.Location</FilterName><FilterValue>Boston</FilterValue><Value>Boston_T3</Value></PropertyValue><PropertyValue><FilterName>Vrm.DataCenter.Location</FilterName><FilterValue>Paris</FilterValue><Value>Paris_T1</Value></PropertyValue><PropertyValue><FilterName>Vrm.DataCenter.Location</FilterName><FilterValue>Paris</FilterValue><Value>Paris_T2</Value></PropertyValue><PropertyValue><FilterName>Vrm.DataCenter.Location</FilterName><FilterValue>Paris</FilterValue><Value>Paris_T3</Value></PropertyValue></ArrayOfPropertyValue>

While the above XML file look not too bad and could be edited manually, imagine if you have to generate the same type of XML for a large Property Dictionary Relationship that include 10s of filter values and for each filter 10s of values. That will not be fun trust me, but you can try it on your own. If you already know you want an easier way to do it all you have to do is to use my vCAC Property Dictionary Relationship builder. Follow the below steps to do that:

1- Download the latest version: Relationship generator 1.0.1

2- Run the excel sheet and if you got a warning of running the contents or the VB script included, you will need to allow that before using it.

3- Complete your data in the forum as shown in the below screenshot:

vCAC Property Dictionary Relationship Builder completed example

Few things to note :

  1. Make sure the output field is empty when you start line 3 in the above screenshot
  2. Fill the Parent Name field Line 6 with the relationship parent, in here Vrm.DataCenter.Location
  3. Fill the filters and values as shown in line 9 to 19 in the above screenshot
  4. Make sure there is a line break before you start filling data for a new filter, just as shown in the above screenshot line 12, 16, & 20

4- Hit run and you should have the Property Dictionary Relationship in XML format ready for you to copy in the output field on line 3 as in the below screenshot. Copy the output and input it in the value expression field under your property dictionary in your vCAC Portal:

vCAC Property Dictionary Relationship Builder output example

Yop, its that easy. Hope this can make your life and your customers life a bit easier when it comes to vCAC Property Dictionary Relationship. I seems to use this same sheet for every vCAC Customer I visit and customers seems to appreciate it much more than the manual way of creating the relationship XML file, which has encouraged me to share it. Please share your feedback in the comments area below and let me know if you can think of any way to improve it or make this very simple tool more useful.


  1. This is great! Do you know if it is possible to assign a default value to a property using this method? As an example, if you knew that any server in Toronto needed to be on the Toronto_T1 storage, but other locations may have multiple values and you didn’t want the user to have to manually select that value since there is only one?

    I’m trying to do a similar thing, only I want to choose a customization spec (CloneSpec) based off what environment is selected and it would only ever be one customization spec per environment. It would be ideal if the value of the property was automatically assigned instead of having to be selected by the user.

  2. Hi Eiad,

    Excellent Post. One question –> I presume that we have to do the actual mapping between the portgroup / property listed in the dropdown. Also, If a portgroup does not exist actually, how to perform the relation between the property list in the dropdown and the portgroup or storage datastore.


  3. Hi Jake, Unfortunately this is something you can not do out of the box today, but if you have VMware PSO engaged with you we can deliver just that using something we call CCC kit. This customization kit though is only available for VMware PSO to deliver as a part of their engagements and is not a customer installable. Maybe worth reaching out to your SE about it.

  4. Hi Raja, That property actually take the actual name of the portgroup so there is not much to map there. Further, this custom property is not capable of creating port groups and only use existing ones. let me know if that answer your questions or if you need any further details.

  5. Hi Eiad,

    I created three port groups, created the property dictionary with the same name and same case, but when the end user selects a particular port group, VCAC assigns the VM to a different port group. tried many times with different VCAC but same result !!

    Thanks for your time,


  6. I would like to build the property relationship between Division, OS and CloneSpec. The result will be getting the respective CloneSpec based on Division and OS.

  7. Hi Rama, would filtering OS based on Division and then filter CloneSpec based on OS which was already filtered by Division not cut it for you?

  8. Does this also work in vRA 7.x and are there any plans to update this version if 7.x is currently not supported?

  9. Hi Alex, sorry for the late reply, but this does not work for vRA 7.0 but there is other ways to do it in 7.0 using vCO workflow that is just as easy. Please reach out in here if you still looking for that.

  10. Thanks for your reply. I’d very much like to understand how to do this via a vCO/vRO workflow. I do not have much XP with those products yet but looking to start ramping up.

Speak Your Mind