The Problem:
I upgraded a vRealize Automation (minimal) installation from 7.0.1 to 7.3, jumping to 7.2 first. Everything appeared to upgrade with no issues. It wasn’t until I decided to request a VM that I noticed all the custom property definitions were not populating on the VM Request form.
Here is what the form looked like:
The form should look like this:
There were about a dozen or more fields not being displayed on the form. Only the default fields would appear. This was also the case with all the blueprints in the environment. None of the configuration settings that affect the custom properties or property definitions had changed. Removing the custom properties from the blueprint and adding them back in made no difference.
I then contacted VMware support. They were very helpful and identified the issue immediately as a bug. Currently there is no published KB, but there is one in the works. They also mentioned this issue should be resolved in 7.4, but that is not expected for another few months.
Troubleshooting Steps:
The first step to confirm the issue was to SSH into the vRA appliance and check the logs. The following command was used: cat /var/log/vmware/vcac/Catalina.out |less
The following error was found:
This is just a snip from the screenshot, but the important part is found after the “VIEW_NOT_READY.” We see it then lists: TypeError: h.setMinValue is not a function.
The error itself is not overly helpful. There is not much context, or at least not a lot I’m familiar with. Luckily the VMware Tech knew this was an indication that the Property Definitions are throwing an error due to a MinValue.
Next, we checked our Property Definitions to see if any have the Minimum value set. I was told this bug only relates to Integer and Decimal Type Property Definitions. Luckily for me only 2 out of 20 Property Definitions were Integers. The bug is not specific to Min Values and can also be triggered by Max and Increment values having been defined prior to the upgrade.
Here is how one of them looked, the second was very similar.
The Solution:
To be safe we removed the Minimum value, Maximum value, and Increment. VMware has seen issues with all 3 fields and felt it was better to remove them all. These fields are not required as we explicitly define what the Dropdown menu uses for values. You can see those defined on the right side of the screen. Dropdowns typically have values defined so having a Min and Max are irrelevant as you don’t allow users to type something in. I saw no issue removing all 3.
One thing to note here is that our minimum value was set higher than the static list’s lowest value (see previous screenshot). As a test, we lowered the Minimum value and saved it. Interestingly this had no impact. It wasn’t until we removed the entry completely that the form displayed. We did not test with just the Minimum value removed, but I’ll try to circle back and test it. Either way we don’t need the 3 entries so having them removed poses no problem in this environment.
Here you can see we saved it with no values:
Going back to the Catalog I created another request and sure enough all the fields were now displaying. Problem solved!
My guess is that this bug could happen to any Property Definition with the Min, Max, Increment values. That would include Integer, Decimal, and Datetime. I didn’t have any Decimal definitions defined, but did have a Datetime. The Datetime did not have any values in the Min, Max, or Increment so I can’t say what would happen there had something been defined. Some additional testing could prove this out or hopefully VMware will have a KB talking about it soon.
From what I gathered the format of the values in these fields gets modified during the upgrade. Since the format is not correct the form validation fails and doesn’t display the fields. The validation that the request form performs doesn’t care where in the list the problem is either. It won’t display any of them even if just a single property definition is invalid. For us just changing the 2 Integer Property Definitions allowed all of the defined Property Definitions to display on the request. Simple enough, but frustrating that the logs don’t show more helpful output.
If anyone has additional information or understanding of what is going on behind the hood feel free to leave comments.
All the credit for this solution goes out to the awesome VMware Tech who assisted me. Hopefully I can pass this on to help others.
Thanks for reading!