Convert string to OU object in vRO

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!