When you put virtual machine to particular OU, you may refer to virtual machine properties, such as ‘server role’, ‘server group’ or ‘user group’…etc. It’s easy to set a drop-list in blueprint of vRealize Automation Center (vRA) to let users choose this kind of properties but hard to create a computer account in corresponded OU location in vRO. That’s because vRA passes most of values to vRO as strings, Active Directory workflows in vRO do not provide a way to convert string to OU.

[do_widget “Language Switcher” wrap=aside title=false]

I found a nice article explains how to convert string to OU object in vRO. I may use this feature frequently in vRA so I decided to create a workflow to make it reusable.

  1. Please make sure you read the article above and understand what it’s talking about.
  2. I put virtual machine to OU base upon server role. Like “Production”, “Development” and “POC”…etc.OUs
  3. I created customized action below to convert string to OU object.WorkFlow2

The code is:

Temp = "OU="+targetOU+",OU=Server,DC=CONTOSO,DC=COM";

var searchOU = Temp.split("=")[1].split(",")[0];
System.log("Search OU: " +searchOU);

var ouArray = ActiveDirectory.search("OrganizationalUnit", searchOU);
System.log("ouArray is:"+ouArray);


var ouIndex = ouArray.map(function(e) { return e.distinguishedName.toLowerCase(); }).indexOf(Temp.toLowerCase());

if (ouIndex > -1) {
    ou = ouArray[ouIndex];
    System.log("Found OU: " +ou.distinguishedName);
    return ou;
} else {
    throw("OU not found");
}

Basically you need to create a input parameter – “targetOU“, it bring string into the action. Then variable “Temp” hard code the distinguish name with “targetOU“. Rest of codes are same like the article above, just one thing, I added “return ou” in if section to make sure the action can returns object of AD:OrganizationUnit type.

Life is easy after the customized action is created. You just need to drop the action to a new workflow, define input parameter and run it!