May be vm host is not resolving properly. Let's try the following options:
1. Create a workflow with input parameter of type VirtualMachine and a scripting task with some code to print properties of the selected VM. Something like
System.log("id -> " + vm.id); System.log("host -> " + vm.vimHost);
Run the workflow, select a vm, and examine the logs to check values of the properties. Are id and vimHost values the same you are manually providing in the 'poer off ...' workflow?
2. (If you can configure your vCO server to use LDAP authentication or setup a 5.5 version) Create a workflow with input parameter of type VirtualMachine. Using vCO Java client, go to presentation tab, add 'Default Value' decorator, and select some VM as its value. Open a console/terminal window, and execute the following command to get the workflow presentation (replacing username, password, ip and workflowid with correct values):
curl -k -i -u username:password -X GET https://10.23.12.203:8281/api/workflows/{workflowid}/presentation
Examine the output of this command; iside there should be the value of the VM id in the format host/id. Again, check if it matches the value you are providing to 'power off ...' workflow.