Does anyone use the Remedy Web Services as the interface with Orion? If so, what is the configuration setup?
Were you ever able to figure out how to do this? I have this very need. I was provided with the Remedy WSDL, but I need to figure out how to call it when one of my switches goes down to create a ticket.
If anyone has any ideas on this, it would be greatly appreciated.
Thanks.
First start with a WSDL / SOAP test tool. I like the following:
NOTE: the WSDL is specific to our implementation. Change it to match yours.NOTE: the parameters are specific to our implementation. Change it to match yours.NOTE: I only fill in the mandatory fields to get a ticket cut.
Here is a php test script I used to work with the WSDL exposed by our Remedy support staff.
Kinda crude and brute force, but it worked.
<?php$myargs = getArgs($_SERVER['argv']);foreach (array('u','p','g','c','o','f','l','s') as $arg) { if (!isset($myargs[$arg])) { echo "usage $argv[0] -u 'username' -p 'userpassword' -g 'group name as shown in ars' -c 'opcat1:opcat2:opcat3' -o 'prodcat1:prodcat2:prodcat3' -f 'firstname' -l 'lastname' -s 'summary field text'\n"; exit; }}$opcats = split(":",$myargs['c']); print_r($opcats);$prodcats = split(":",$myargs['o']); print_r($prodcats);$params->Assigned_Group=$myargs['g'];$params->Assigned_Group_Shift_Name='';$params->Assigned_Support_Company='Liquids Pipelines';$params->Assigned_Support_Organization='Liquids Pipelines';$params->Assignee='';$params->Categorization_Tier_1=$opcats[0];$params->Categorization_Tier_2=$opcats[1];$params->Categorization_Tier_3=$opcats[2];$params->CI_Name='';$params->Closure_Manufacturer='';$params->Closure_Product_Category_Tier1='';$params->Closure_Product_Category_Tier2='';$params->Closure_Product_Category_Tier3='';$params->Closure_Product_Model_Version='';$params->Closure_Product_Name='';$params->Department='';$params->First_Name=$myargs['f'];$params->Impact='4-Minor/Localized';$params->Last_Name=$myargs['l'];$params->Lookup_Keyword='';$params->Manufacturer='';$params->Product_Categorization_Tier_1=$prodcats[0];$params->Product_Categorization_Tier_2=$prodcats[1];$params->Product_Categorization_Tier_3=$prodcats[2];$params->Product_Model_Version='';$params->Product_Name='';$params->Reported_Source='Direct Input';$params->Resolution='';$params->Resolution_Category_Tier_1='';$params->Resolution_Category_Tier_2='';$params->Resolution_Category_Tier_3='';$params->Service_Type='User Service Request';$params->Status='New';$params->Action='CREATE';$params->Create_Request='Yes';$params->Summary=$myargs['s'];$params->Notes='';$params->Urgency='4-Low';$params->Work_Info_Summary='';$params->Work_Info_Notes='';$params->Work_Info_Type='----- Customer Inbound -----';$params->Work_Info_Date='';$params->Work_Info_Source='Email';$params->Work_Info_Locked='Yes';$params->Work_Info_View_Access='Internal';$params->Middle_Initial='';//test//$ars = new SoapClient('hostname:8080/.../HPD_IncidentInterface_Create_WS');//dev//$ars = new SoapClient('hostname:8080/.../HPD_IncidentInterface_Create_WS');// prod$ars = new SoapClient('hostname:8080/.../HPD_IncidentInterface_Create_WS');$auth->userName=$myargs['u'];$auth->password=$myargs['p'];$authvalues = new SoapVar($auth, SOAP_ENC_OBJECT);$header = new SoapHeader('name_space', "AuthenticationInfo", $authvalues, false);$ars->__setSoapHeaders(array($header));$result = $ars->HelpDesk_Submit_Service($params); var_dump($result);function getArgs($args) { $out = array(); $last_arg = null; for($i = 1, $il = sizeof($args); $i < $il; $i++) { if( (bool)preg_match("/^--(.+)/", $args[$i], $match) ) { $parts = explode("=", $match[1]); $key = preg_replace("/[^a-z0-9]+/", "", $parts[0]); if(isset($parts[1])) { $out[$key] = $parts[1]; } else { $out[$key] = true; } $last_arg = $key; } else if( (bool)preg_match("/^-([a-zA-Z0-9]+)/", $args[$i], $match) ) { for( $j = 0, $jl = strlen($match[1]); $j < $jl; $j++ ) { $key = $match[1]{$j}; $out[$key] = true; } $last_arg = $key; } else if($last_arg !== null) { $out[$last_arg] = $args[$i]; } } return $out;}?>
Thanks for that info. I have been playing with soapUI to get all the fields correct for creating a ticket, so I know all the fields I need now.
How are you calling this PHP from Solarwinds? Do you have PHP installed on your Solarwinds server?
Yes, I've installed PHP 5.x on the server and use the CLI interface.
To call it, I do alert action of "run an external program" like this:
C:\Program Files (x86)\PHP\TelAlert\php.exe c:\remedy.php -u username -p password -g "Monitoring" -c Request:Service:Create -o "Software:IT Software:Monitoring" -f firstname -l lastname -s "cmdline soap testing from Orion"
Thanks for that info. That helps out. Is this your entire code? It seems maybe it is missing an object definition for "$params." Or should $params be an array using => instead of ->? Maybe I am just completely missing something.
php doesn't require variable definition before use unless you do something like a "use strict". I don't do that.
You are right that $params is an array. If there was a statement @ the top that said $params = array(); that would make it more clear.
I'm lazy and you code in a different language (and probably aren't lazy!)
Hi Guy's
Does anyone have a physical diagram of this prosses end to end? Trying to get my head around the components and how the communication is between Orian and Remedy to generate tickets on events.
Something like the attached?
Many thanks