This document provides a sample piece of code of how to use Perl SOAP::Lite to create a request in CA Service Desk Manager (CA SDM) via SOAP Web Services.
NOTE: This is offered with no guarantees and is not supported by CA Support.
Service Desk Manager 17.x
#!/usr/local/bin/perl
#use SOAP::Lite trace=>'debug';
use SOAP::Lite;
use Data::Dumper;
use XML::Simple;
#use strict;
#use warnings;
use Getopt::Std;
# Declare Constants
use constant DEBUG => 0; # DEBUG settings
use constant CONSOLE => 0; # CONSOLE DEBUG settings
if ($#ARGV < 4 ) {
print "usage: <script> username password incident/request 'Summary' 'description'\n";
exit;
}
################################################################
# UPDATE WITH YOUR SPECIFIC USERNAME AND PASSWORD (or take command line args)
################################################################
my $username = $ARGV[0];
my $password = $ARGV[1];
my $tickettype = "crt:180";
print "\nArgument 2 = $ARGV[2]\n";
if($ARGV[2] eq 'incident') {
$tickettype = "crt:182";
print "\nTicket Type Handle = $tickettype\n";
}
else {
$tickettype = "crt:180";
}
#my $ticketsummary = $ARG[3];
#my $ticketdesc = $ARG[4];
# Declare Variables
my $xml = new XML::Simple;
my $ticket_number;
my $ticket_handle;
my $wsdl = 'http://yourServiceDeskServer:8080/axis/services/USD_R11_WebService?wsdl';
my $service = SOAP::Lite->service($wsdl);
my $sid = $service->login($username, $password);
my $userHandle = $service->getHandleForUserid($sid,$user);
my $method = SOAP::Data->name('createRequest');
my @params = (SOAP::Data->name("sid" => $sid),
SOAP::Data->name("userHandle" => $userHandle),
SOAP::Data->name("attrVals" =>
\SOAP::Data->value(
SOAP::Data->name("string" => "description"),
SOAP::Data->name("string" => $ARGV[4]),
SOAP::Data->name("string" => "customer"),
SOAP::Data->name("string" => "cnt:###########################"),#contact persid
SOAP::Data->name("string" => "type"),
SOAP::Data->name("string" => $tickettype),
SOAP::Data->name("string" => "category"),
SOAP::Data->name("string" => "pcat:5103"),
SOAP::Data->name("string" => "assignee"),
SOAP::Data->name("string" => ""),
SOAP::Data->name("string" => "group"),
SOAP::Data->name("string" => "cnt:###########################"), # group persid
SOAP::Data->name("string" => "summary"),
SOAP::Data->name("string" => $ARGV[3])
)
),
SOAP::Data->name("propertyValues" =>
\SOAP::Data->value(
SOAP::Data->name("string" => '')
)
),
SOAP::Data->name("template" => ''),
SOAP::Data->name("attributes" =>
\SOAP::Data->value(
SOAP::Data->name("string" => 'ref_num'),
SOAP::Data->name("string" => 'persistent_id')
)
),
SOAP::Data->name("newRequestHandle"),
SOAP::Data->name("newRequestNumber")
);
print "dumper: ".Dumper(\@params)."\n" if (DEBUG);
my $soap = $service->call($method => @params);
if ($soap->fault){
print "Error\n";
print "[".$soap->faultcode."] [".$soap->faultstring."] [".$soap->faultdetail."]";
} else {
print $soap->result if (DEBUG);
}
print "SOAP dump: ".Dumper($soap->result)."\n" if (DEBUG);
$xml = XMLin($soap->result);
$ticket_number = $xml->{Attributes}->{Attribute}->[0]->{AttrValue};
$ticket_handle = $xml->{Attributes}->{Attribute}->[1]->{AttrValue};
print "Ticket Number = $ticket_number\n";
print "Ticket Handle = $ticket_handle\n";
$service->logout($sid);
exit;