This document provides an overview of SOAP, WSDL, and related technologies for accessing HP Service Manager web services from Perl applications. It begins with introductions to SOAP and WSDL, the basic standards for defining and calling web services. The document then covers options for using SOAP in Perl and examples of creating clients. It also describes the different ticket types in HP Service Manager and how to create tickets by calling web service methods. Finally, it discusses additional tools like the service catalog and techniques for performance. The overall purpose is to teach developers how to integrate Perl applications with HP Service Manager using SOAP-based web services.
This document provides an overview of SOAP, WSDL, and related technologies for accessing HP Service Manager web services from Perl applications. It begins with introductions to SOAP and WSDL, the basic standards for defining and calling web services. The document then covers options for using SOAP in Perl and examples of creating clients. It also describes the different ticket types in HP Service Manager and how to create tickets by calling web service methods. Finally, it discusses additional tools like the service catalog and techniques for performance. The overall purpose is to teach developers how to integrate Perl applications with HP Service Manager using SOAP-based web services.
HP Service Manager 9.X and BP4SM 9.X Dr Christopher Vance and Greg Baker August 2012 i Contents 1 Agenda 1 2 SOAP Introduction 3 2.1 What is SOAP/WSDL? . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3 WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 How do I access the Service Manager SOAP service? . . . . . . . . . 26 2.5 Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3 SOAP in Perl 29 3.1 What options are there for SOAP/WSDL client-side in Perl? . . . . . 30 3.2 Building a Perl client . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3 SOAP::Lite putting stu in . . . . . . . . . . . . . . . . . . . . . . . 34 3.4 SOAP::SOM getting stu back out . . . . . . . . . . . . . . . . . . . 41 3.5 SOAP::Data calling parameters . . . . . . . . . . . . . . . . . . . . . 48 3.6 Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4 HP Service Manager Tickets 51 4.1 Contacts and operators . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.2 Interaction tickets and their lifecycle . . . . . . . . . . . . . . . . . . . 55 4.3 Incident tickets and their lifecycle . . . . . . . . . . . . . . . . . . . . . 62 4.4 Change tickets and their lifecycle . . . . . . . . . . . . . . . . . . . . . 64 4.5 Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5 Creating Tickets 68 5.1 Common elds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.2 Create skeleton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.3 What an interaction ticket needs . . . . . . . . . . . . . . . . . . . . . 76 ii 5.4 What an incident ticket needs . . . . . . . . . . . . . . . . . . . . . . . 77 5.5 What a change ticket needs . . . . . . . . . . . . . . . . . . . . . . . . 78 5.6 What ticket should I use? . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.7 Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6 Other Tickets and Tools 84 6.1 Service Catalogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 6.2 Conguration Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 6.3 Creating a new web service interface . . . . . . . . . . . . . . . . . . . 87 6.4 Creating a mailer interface . . . . . . . . . . . . . . . . . . . . . . . . . 90 7 Techniques 98 7.1 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 7.2 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Index 106 Page iii of 108 Page iv of 108 1 Agenda 1 Agenda Agenda SOAP Introduction SOAP in Perl HP Service Manager Tickets Creating Tickets Other Tickets and Tools Notes. Introduction. Fire and emergency. Locations of restrooms. Break location and times. Page 2 of 108 2 SOAP Introduction 3 2.1. WHAT IS SOAP/WSDL? 2.1 What is SOAP/WSDL? SOAP/WSDL Like many parts of IT, SOAP and WSDL t into a universe of dependencies. RPC Remote Procedure Call XML Extensible Markup Language HTTP Hypertext Transfer Protocol SOAP Simple Object Access Protocol WSDL Web Services Denition (or Description) Language Notes. Page 4 of 108 CHAPTER 2. SOAP INTRODUCTION RPC Remote Procedure Call is any mechanism used for a client program on one machine to invoke (or call) a procedure on another machine. To make it work, the ends have to agree What procedures are available What arguments does each procedure take for input and output How are arguments and the choice of procedure ex- pressed Where should information be sent to cause invocation The results are invariably returned to the client using the same formats and methods as the invocation. Notes. A number of RPC mechanisms are used in the real world. Some of the earliest ones were originally motivated by the need to share les. In 1984 Sun invented Sun RPC, mostly used these days for NFS on Unix and Linux systems. In the same year CCITT (now called ITU-T) described ASN.1, still used for LDAP, SNMP, cryptographic keys, etc. In the mid 1980s Apollo Computer (later bought by HP) invented NCS, which which later became DCE, used by Microsoft DCOM and ODBC. In the late 1980s, IBM invented SMB, now called CIFS and most heavily used by Microsoft systems, and implemented by the free Samba software. The named systems all use binary encodings to make transfer ecient, at the cost of interoperability. Some of these encodings are at least partially self-describing, while others are not. Page 5 of 108 2.1. WHAT IS SOAP/WSDL? XML The Extensible Markup Language attempts to provide a self- describing textual view of data using nested tags. Typical use is within disk les. <person><name>Baz</name><height unit="metre">2.0 </height><moustache/></person> It comes from the same heritage as HTML, used for web pages. XML does not require the use of whitespace for indentation or readability, since it is intended primary for machine pars- ing. Notes. XML enables better interoperability at the expense of verbosity. Tags are expressed within angle brackets. They are case-sensitive, nest strictly, and must be explicitly closed. Content between the open and close tag may include nested tags and character data. An opening tag may include attributes (see unit within height above). A closing tag starting with </ must appear somewhere following the opening tag. A tag ending with />, such as <moustache/> above, is self-closing. It may include attributes, but cannot contain other tags or non-tag data. Whitespace may separate the / from its tag name, whether in </ or /> form. Page 6 of 108 CHAPTER 2. SOAP INTRODUCTION XML example <?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <RetrieveIncidentKeysListRequest> <model> <keys /> <instance> <IncidentID /> </instance> </model> </RetrieveIncidentKeysListRequest> </Body> </Envelope> Notes. This example is editted down from real XML used with SOAP and HP Service Manager. The original uneditted XML includes namespaces and attributes, and omits all the indentation and newlines. Page 7 of 108 2.1. WHAT IS SOAP/WSDL? HTTP The Hyper Text Transfer Protocol was invented for the world- wide web. A request includes a command line, starting with GET, POST, etc. a number of header lines, each eectively a name, fol- lowed by a colon (:), whitespace, and content to end- of-line one empty line text or binary content The response is returned in the same similar format. Apart from the single command line, the le format, includ- ing header lines and content separation is derived from the format used for e-mail. Notes. Page 8 of 108 CHAPTER 2. SOAP INTRODUCTION HTTP example POST /SM/7/ws HTTP/1.1 Host: bp4smdemo.hpsweducation.com:13080 Accept: text/xml Accept: multipart/* Accept: application/soap Content-Length: 546 Content-Type: text/xml; charset=utf-8 SOAPAction: "#Retrieve" <?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><RetrieveIncidentKeysListRequest xmlns="http://bp4smdemo.hpsweducation.com:13080/SM/7"><model><keys /><instance><IncidentID /></instance></model></RetrieveIncidentKeysListRequest></soap:Body></soap:Envelope> Most of the (XML) content disappears o the end of a single long line. Notes. The client program has a choice between POST http://bp4smdemo.hpsweducation.com:13080/SM/7/ws HTTP/1.1 and POST /SM/7/ws HTTP/1.1 Host: bp4smdemo.hpsweducation.com:13080 Both have the same eect. Page 9 of 108 2.2. SOAP 2.2 SOAP SOAP The Simple Object Access Protocol provides a way to express remote procedure call. It is an XML-based language. Service Manager uses SOAP v1.1. The request and its arguments are serialized into an XML document. The request document is passed via an HTTP POST action to the server. The server deserializes the XML, performs the requested procedure, and serializes the results into XML. The response document is passed back to the client as the result of the HTTP POST action. The client deserializes the response XML. Notes. The HTTP headers required for SOAP with HP Service Manager include SOAPAction Content-Length Omitting either of these, or incorrect values of them, will cause HP SM to return a failure or fault, rather than performing the requested service. Page 10 of 108 CHAPTER 2. SOAP INTRODUCTION SOAP request The XML part of a real SOAP request is typically a single line. Even with newlines put in to aid legibility, the full content does not t on a slide, so see the course notes for the full content. POST http://bp4smdemo.hpsweducation.com:13080/SM/7/ws HTTP/1.1 Authorization: Basic ... Content-Length: 546 Content-Type: text/xml;charset=utf-8 SOAPAction: "RetrieveKeysList" <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <RetrieveIncidentKeysListRequest xmlns="http://bp4smdemo.hpsweducation.com:13080/SM/7"> <model><keys/><instance><IncidentID/></instance></model> </RetrieveIncidentKeysListRequest> </soap:Body> </soap:Envelope> Notes. Note that the SOAP request body contains a tag ending with Request. This is a convention followed by HP Service Manager, not a requirement of SOAP per se. We show the request over several slides, and several pages in the course notes, to emphasize dierent parts. The good news is that most of the material in any SOAP request you deal with is likely to be boilerplate generated by the Perl modules youll use. Page 11 of 108 2.2. SOAP SOAP request ... <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> ... </soap:Body> </soap:Envelope> Notes. The xmlns attributes specify XML namespaces which dene tags available in a document. This slide shows the Envelope tag and its attributes. Page 12 of 108 CHAPTER 2. SOAP INTRODUCTION SOAP request ... <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope ...> <soap:Body> <RetrieveIncidentKeysListRequest xmlns="http://bp4smdemo.hpsweducation.com:13080/SM/7"> <model> <keys /> <instance> <IncidentID /> </instance> </model> </RetrieveIncidentKeysListRequest> </soap:Body> </soap:Envelope> Notes. This slide shows the body of the request. This request returns the keys (IncidentID) for all Incident tickets. This slide shows that the xmlns attribute can be use in more than one tag (pre- ceding ones were on the Envelope tag). Page 13 of 108 2.2. SOAP SOAP response Here is the response to the preceding request. HTTP/1.1 200 OK Content-Length: 766 Content-Type: text/xml;charset=utf-8 Set-Cookie: ... <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <RetrieveIncidentKeysListResponse message="Success" query="" returnCode="0" schemaRevisionDate="2011-12-04" schemaRevisionLevel="1" status="SUCCESS" xmlns="http://schemas.hp.com/SM/7" xmlns:cmn="http://schemas.hp.com/SM/7/Common" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.hp.com/SM/7 http://bp4smdemo.hpsweducation.com:13080/SM/7/Incident.xsd"> <keys><IncidentID type="String">IM10420</IncidentID></keys> <keys><IncidentID type="String">IM10422</IncidentID></keys> </RetrieveIncidentKeysListResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Notes. Just as the tag within Body ends with Response. Again, this is a HP Service Manager convention not a SOAP requirement. Please note that the tags for the request and response are almost always going to dier by necessity of holding dierent internal structures. Page 14 of 108 CHAPTER 2. SOAP INTRODUCTION SOAP response ... <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <RetrieveIncidentKeysListResponse message="Success" query="" returnCode="0" schemaRevisionDate="2011-12-04" schemaRevisionLevel="1" status="SUCCESS" xmlns="http://schemas.hp.com/SM/7" xmlns:cmn="http://schemas.hp.com/SM/7/Common" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.hp.com/SM/7 http://bp4smdemo.hpsweducation.com:13080/SM/7/Incident.xsd"> ... </RetrieveIncidentKeysListResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Notes. The response includes a bunch of xmlns attributes, as well as some additional information. Just as the request message is mostly boilerplate assembled by the Perl mod- ules youll be using, the response message is also mostly boilerplate which is understood and deconstructed by the same Perl modules. Page 15 of 108 2.3. WSDL 2.3 WSDL WSDL WSDL is the Web Services Denition Language (v1.1) or Web Services Description Language (v2.0), and provides a way to express the remote procedure calls available at a service endpoint, and the arguments required of each call. It is an XML-based language. HP Service Manager, like many implementations, uses WSDL 1.1, perhaps at least in part because the Business Process Execution Language, BPEL, only supports 1.1. We wont show a complete WSDL example, but there will be excerpts showing each of the components from the IncidentManagement.wsdl le used by Service Manager. Notes. Just as with SOAP, you wont be needing to write a WSDL le, nor even read one very often. Consider it more useful as a reference. The tags used are supposed to be informative, as in programming languages like Java where convention is to use phrases when constructing names for modules, packages, and procedures. Page 16 of 108 CHAPTER 2. SOAP INTRODUCTION WSDL components The components in a WSDL 1.1 le include types, describing the simple and complex data structures accompanying each request and response message, describes a single request or response message operation, describes a single remote procedure call, and combines input and output, being one message from client to server, and one message from server to client portType, being a collections of operations binding, being a specication of the transport protocols of the operations in a portType port, being the a service endpoint, typically a URL, used by a binding service, being a collection of ports Notes. Page 17 of 108 2.3. WSDL WSDL types <types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://schemas.hp.com/SM/7" version="2011-12-04 Rev 1" xmlns="http://schemas.hp.com/SM/7" xmlns:cmn="http://schemas.hp.com/SM/7/Common" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"> <xs:import namespace="http://www.w3.org/2005/05/xmlmime" schemaLocation="http://www.w3.org/2005/05/xmlmime"/> <xs:import namespace="http://schemas.hp.com/SM/7/Common" schemaLocation="http://bp4smdemo.hpsweducation.com:13080/SM/7/Common.xsd"/> <xs:complexType name="IncidentKeysType"> <xs:sequence> <xs:element minOccurs="0" name="IncidentID" nillable="true" type="cmn:StringType"/> </xs:sequence> <xs:attribute name="query" type="xs:string" use="optional"/> <xs:attribute name="updatecounter" type="xs:long" use="optional"/> </xs:complexType> ... </xs:schema> </types> Notes. A number of complexType tags will normally appear within a schema, even though weve only shown one. Page 18 of 108 CHAPTER 2. SOAP INTRODUCTION WSDL types <types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://schemas.hp.com/SM/7" version="2011-12-04 Rev 1" xmlns="http://schemas.hp.com/SM/7" xmlns:cmn="http://schemas.hp.com/SM/7/Common" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"> <xs:import namespace="http://www.w3.org/2005/05/xmlmime" schemaLocation="http://www.w3.org/2005/05/xmlmime"/> <xs:import namespace="http://schemas.hp.com/SM/7/Common" schemaLocation="http://bp4smdemo.hpsweducation.com:13080/SM/7/Common.xsd"/> <xs:complexType name="IncidentKeysType"> <xs:sequence> <xs:element minOccurs="0" name="IncidentID" nillable="true" type="cmn:StringType"/> </xs:sequence> <xs:attribute name="query" type="xs:string" use="optional"/> <xs:attribute name="updatecounter" type="xs:long" use="optional"/> </xs:complexType> </xs:schema> </types> Notes. The schema includes a number of attributes. Page 19 of 108 2.3. WSDL WSDL types <types> <xs:schema ...> <xs:import namespace="http://www.w3.org/2005/05/xmlmime" schemaLocation="http://www.w3.org/2005/05/xmlmime"/> <xs:import ...> <xs:complexType name="IncidentKeysType"> <xs:sequence> <xs:element minOccurs="0" name="IncidentID" nillable="true" type="cmn:StringType"/> </xs:sequence> <xs:attribute name="query" type="xs:string" use="optional"/> <xs:attribute name="updatecounter" type="xs:long" use="optional"/> </xs:complexType> </xs:schema> </types> Notes. Imported namespaces provide some of the tags used to describe data structures. Attributes include an indication whether values can be explicitly empty, or whether their use is compulsory. Page 20 of 108 CHAPTER 2. SOAP INTRODUCTION WSDL types <types> <xs:schema ...> <xs:import ...> <xs:complexType name="IncidentKeysType"> <xs:sequence> <xs:element minOccurs="0" name="IncidentID" nillable="true" type="cmn:StringType"/> </xs:sequence> <xs:attribute name="query" type="xs:string" use="optional"/> <xs:attribute name="updatecounter" type="xs:long" use="optional"/> </xs:complexType> </xs:schema> </types> Notes. Only the innermost data types can be predened, like string. Almost everything else is complexType with internal structure. Page 21 of 108 2.3. WSDL WSDL message <message name="RetrieveIncidentRequest"> <part element="ns:RetrieveIncidentRequest" name="RetrieveIncidentRequest"/> </message> <message name="RetrieveIncidentResponse"> <part element="ns:RetrieveIncidentResponse" name="RetrieveIncidentResponse"/> </message> Notes. Here we intuit from the tag names used that RetrieveIncident uses one message type for the Request and another for the Response. Typically, a message only contains one part. Page 22 of 108 CHAPTER 2. SOAP INTRODUCTION WSDL operation and portType <portType name="IncidentManagement"> <operation name="RetrieveIncident"> <documentation/> <input message="ns:RetrieveIncidentRequest"/> <output message="ns:RetrieveIncidentResponse"/> </operation> <operation name="RetrieveIncidentKeysList"> <documentation/> <input message="ns:RetrieveIncidentKeysListRequest"/> <output message="ns:RetrieveIncidentKeysListResponse"/> </operation> </portType> Notes. Here, an operation has an input and output message. Page 23 of 108 2.3. WSDL WSDL binding <binding name="IncidentManagement" type="ns:IncidentManagement"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="RetrieveIncident"> <soap:operation soapAction="Retrieve" style="document"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> Notes. The binding includes information on how to transport data for each operation. In this case, "literal" means to transport the XML without compression or conversion to binary format. Page 24 of 108 CHAPTER 2. SOAP INTRODUCTION WSDL port and service <service name="IncidentManagement"> <port binding="ns:IncidentManagement" name="IncidentManagement"> <soap:address location="http://bp4smdemo.hpsweducation.com:13080/SM/7/ws"/> </port> </service> Typically there is only one port entry within the service. Notes. Page 25 of 108 2.4. HOW DO I ACCESS THE SERVICE MANAGER SOAP SERVICE? 2.4 How do I access the Service Manager SOAP ser- vice? SOAP on HP Service Manager The SOAP service is presented via HTTP on a congurable TCP port of your SM machine (default 13080). A request contains some HTTP headers, followed by an XML body. The response is returned in the same format. Although web browsers have a mechanism for le upload, they typically have no general mechanism to allow passing content into a web service, so the alternatives are to use an existing program designed to pass XML to a web service, such as a REST client, or to write your own program which does this. This course introduces programming in Perl using the SOAP::Lite module. Notes. The server TCP ports are congured in the sm.ini le, as in this excerpt system:13080 httpPort:13080 sslConnector:0 httpsPort:13443 The web tier is often congured to listen on port 8080, and runs inside a java application server, such as Tomcat. A load balancer is often run in front of this. The web services interface does not involve the web tier, but communicates di- rectly a ServiceManager application server. The web tier is also congured to talk to the application servers. Unfortunately the WSDL denitions provided by HP Service Manager do not make it easy to work out all the details of message structure. In particular, the language does not express which values SM will be happy with, and which will cause distress or misbehaviour. You may nd, as we have done, that a certain amount of trial and error is necessary, as is comparison with the results of using SM from a web browser. Page 26 of 108 CHAPTER 2. SOAP INTRODUCTION extaccess Notes. With SM, the WSDL le content is dynamically generated, as a result of the current settings in the extaccess table. The Service Name is the name presented by web services and forms the basis of where the WSDL le is located. http://servername:port/SM/7/Service Name.wsdl Name is the name of the supporting Service Manager table. Object Name is appended to the allowed actions so that it can be distinguished from other actions on the same Service Name. Column 1 of the table lists the column names in the table. Column 2 represents their names as presented via web services. Page 27 of 108 2.5. EXERCISE 2.5 Exercise Exercise Exercise: Fetch the WSDL denition from HP Service Man- ager Within http://bp4smdemo.hpsweducation.com:13080/SM/7/ youll nd a number of .wsdl les, including ChangeManagement.wsdl ConfigurationManagement.wsdl FSCManagement.wsdl IncidentManagement.wsdl ProblemManagement.wsdl ServiceDesk.wsdl Fetch at least one of these les, and inspect the content. Notes. Your easiest approach is to use a web browser. Youll need to type the full URL into the address eld of your browser, since you wont be able to browse by directory search. Command line alternatives available on most non-Windows systems include one or more of: wget -O (thats capital letter O) curl -o ftp -o (BSD) If you have extra time, you might also want to compare with what you see using SM in a web browser. Log in to http://bp4smdemo.hpsweducation.com/. Navigate to Tailoring > Web Services > WSDL Configuration. Ask the trainer for more information on values to try in the form. Page 28 of 108 3 SOAP in Perl 29 3.1. WHAT OPTIONS ARE THERE FOR SOAP/WSDL CLIENT-SIDE IN PERL? 3.1 What options are there for SOAP/WSDL client- side in Perl? SOAP modules Hundreds of Perl modules claim to implement or to use SOAP. SOAP::Lite appears to provide the most popular method for writing SOAP clients and servers. Its dependency on WSDL is relatively Lite. With the level of information provided by SM for WSDL, this appears to be a reasonable match. SOAP::WSDL provides a heavier weight implementation, much more strongly tied to WSDL, and requiring conguration be- fore use. The benets gained do not appear to justify the costs of using this. Notes. In addition, MIME::Base64 is used for basic password authentication. If you care about protecting this data in transit, you might want to congure your SM SOAP service, or a reverse proxy in front of it, to use SSL. Page 30 of 108 CHAPTER 3. SOAP IN PERL CPAN The Comprehensive Perl Archive Network is the standard mechanism for providing Perl modules not otherwise in- cluded with your original Perl installation. Whether the mod- ules you need are included, or need to be added after market, will depend on decisions of your Perl vendor. If you know how to use CPAN, please let your trainer know, and we can move on to the meat of this course. ActiveState Perl provides its own package manager, PPM, for installing third party modules. Notes. Page 31 of 108 3.1. WHAT OPTIONS ARE THERE FOR SOAP/WSDL CLIENT-SIDE IN PERL? ActiveState PPM Running ppm without specifying an argument should enable you to determine if the modules you need are installed. The ones we refer to explicitly are MIME::Base64 and SOAP::Lite. Depending on the version of ActiveState Perl, you may nd these packages already installed. If you have ActiveState Perl installed, but SOAP::Lite is not installed, you should be able to install it by opening a com- mand prompt window, and typing the command ppm install SOAP-Lite Similarly for MIME::Base64, packaged as MIME-Base64. Notes. Note that PPM package names use - instead of ::. Page 32 of 108 CHAPTER 3. SOAP IN PERL 3.2 Building a Perl client Perl client Well go through the steps of building a script which retrieves contacts from HP Service manager. The exercise at the end of this part of the course will be polishing this to make it work. Notes. Page 33 of 108 3.3. SOAP::LITE PUTTING STUFF IN 3.3 SOAP::Lite putting stu in Starting out a.pl 1 #!/usr/bin/perl 2 3 use strict; 4 use warnings; 5 6 use SOAP::Lite; 7 8 my $site = http://bp4smdemo.hpsweducation.com:13080/SM/7; 9 10 my $soap = SOAP::Lite->new( 11 proxy => "$site/ws", 12 service => "$site/ConfigurationManagement.wsdl", 13 default_ns => $site); Notes. The main element is the new invocation on lines 1013, which creates a new client object used for accessing the SOAP service. Before we can use use SOAP::Lite, we have to import it, which we do on line 6. The proxy argument on line 11 species the URL for the POST command. The service argument on line 12 specied the URL for WSDL description of the SOAP service. The default_ns argument on line 13 species the namespace used for XML tags within the request we will assemble. Because the values for proxy, service, and default_ns share common content, we have used line 8 to factor it out. The strict and warnings pragmata on lines 34 make Perl programming a little safer. The #! comment on line 1 is appropriate for Linux, BSD, and most Unix editions. Perl uses double quotes " around strings which require interpolation of $ and \ expressions, and single quotes around strings which do not required such interpolation. You could of course use " around a strings which doesnt include $ or \ with the same result as using . Use of modules such as Perl::Critic can be used to impose coding style re- strictions on your code. The sample code provided with this course does not necessarily follow all such recommendations. Page 34 of 108 CHAPTER 3. SOAP IN PERL Add the call b.pl 10 my $soap = SOAP::Lite->new( 11 proxy => "$site/ws", 12 service => "$site/ConfigurationManagement.wsdl", 13 default_ns => $site); 14 15 my $som = $soap->call(RetrieveContactKeysList); 16 17 print "Fault\n" if ($som->fault); 18 19 print $som->valueof(//RetrieveContactKeysListResponse/keys) . "\n"; Notes. Now we add the call on line 15 and a rst attempt at showing any error on line 17 or the result on line 19. Unfortunately we receive a runtime error Use of uninitialized value in concatenation (.) or string at soap-lite/b line 19. which suggests that the call failed. Page 35 of 108 3.3. SOAP::LITE PUTTING STUFF IN Tracing SOAP c.pl 1 #!/usr/bin/perl 2 3 use strict; 4 use warnings; 5 6 use SOAP::Lite +trace => debug; 7 8 my $site = http://bp4smdemo.hpsweducation.com:13080/SM/7; 9 10 my $soap = SOAP::Lite->new( 11 proxy => "$site/ws", 12 service => "$site/ConfigurationManagement.wsdl", 13 default_ns => $site); 14 15 my $som = $soap->call(RetrieveContactKeysList); 16 17 print "Fault\n" if ($som->fault); 18 19 print $som->valueof(//RetrieveContactKeysListResponse/keys) . "\n"; Notes. To help determine what went wrong, we enable tracing within SOAP::Lite, by modifying line 6. The module will show the HTTP request and response, includ- ing raw XML. The result of running the script reveals output HTTP/1.1 401 Unauthorized Connection: close Date: Sun, 05 Aug 2012 08:15:35 GMT Server: Apache-Coyote/1.1 WWW-Authenticate: Basic realm="CASM" Content-Length: 40 Content-Type: text/html;charset=utf-8 Client-Date: Sun, 05 Aug 2012 09:22:18 GMT Client-Peer: 74.50.56.155:13080 Client-Response-Num: 1 <HTML><BODY>Not Authorized</BODY></HTML> Page 36 of 108 CHAPTER 3. SOAP IN PERL Add authorization d.pl 6 use SOAP::Lite +trace => debug; 7 use MIME::Base64; 8 9 my $site = http://bp4smdemo.hpsweducation.com:13080/SM/7; 10 my $user = falcon; 11 my $password = orange perfection; 12 my $auth = encode_base64("$user:$password", ); 13 14 my $soap = SOAP::Lite->new( 15 proxy => "$site/ws", 16 service => "$site/ConfigurationManagement.wsdl", 17 default_ns => $site); 18 $soap->transport->http_request->header(Authorization 19 => "Basic $auth"); 20 21 my $som = $soap->call(RetrieveContactKeysList); 22 23 print "Fault\n" if ($som->fault); 24 print $som->valueof(//RetrieveContactKeysListResponse/keys) . "\n"; Notes. Service Manager uses basic HTTP authorization, which requires using base64 encoding of the user and password. Line 7 imports the module which provides base64 encoding. Line 18 adds the Authorization header to the request, as revealed by the tracing output. The result of running the script now receives a SOM (SOAP Output Message). Unfortunately it indicates a fault, but thats far better than not executing the SOAP request at all. The output XML has been editted for readability. HTTP/1.1 500 Internal Server Error Connection: close Date: Sun, 05 Aug 2012 08:58:11 GMT Server: Apache-Coyote/1.1 Content-Type: text/xml;charset=utf-8 Client-Date: Sun, 05 Aug 2012 10:04:54 GMT Client-Peer: 74.50.56.155:13080 Client-Response-Num: 1 Set-Cookie: JSESSIONID=19FDDDD3012A22CB923AB4BED1AD19CA; Path=/SM <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>A CXmlApiException was raised in native code : error 16 : scxmlapi(16) - Invalid or missing file name in XML request</faultstring> <faultactor>Server</faultactor> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Fault Use of uninitialized value in concatenation (.) or string at soap-lite/d line 24. Page 37 of 108 3.3. SOAP::LITE PUTTING STUFF IN Fault handling e.pl 20 my $som = $soap->call(RetrieveContactKeysList); 21 22 if ($som->fault) { 23 my $code = $som->faultcode; 24 my $actor = $som->faultactor; 25 my $string = $som->faultstring; 26 my $detail = $som->faultdetail; 27 my $out = "Fault\n"; 28 $out .= "\tCode\t$code\n" if ($code); 29 $out .= "\tActor\t$actor\n" if ($actor); 30 $out .= "\tString\t$string\n" if ($string); 31 $out .= "\tDetail\t$detail\n" if ($detail); 32 die $out; 33 } 34 35 print $som->valueof(//RetrieveContactKeysListResponse/keys) . "\n"; Notes. Now that we can recognize a fault as reported by SOAP, we extract the fault information from the SOAP response and print it, lines 2233. If there was a fault, we no longer attempt to print useful results, but rather exit the script with error indication on line 32. This removes the error message about uninitialized value. Page 38 of 108 CHAPTER 3. SOAP IN PERL How to proceed The fault we currently see is Fault Code SOAP-ENV:Server Actor Server String A CXmlApiException was raised in native code : \ error 16 : scxmlapi(16) - Invalid or missing file \ name in XML request Unfortunately this is insucient to suggest the direction to proceed. Two modications are needed to make progress, discovered by reading the .wsdl le, and by comparing the SOAP request with a working non-Perl implementation. Notes. Page 39 of 108 3.3. SOAP::LITE PUTTING STUFF IN Two changes f.pl 14 my $soap = SOAP::Lite->new( 15 proxy => "$site/ws", 16 service => "$site/ConfigurationManagement.wsdl", 17 default_ns => $site); 18 $soap->transport->http_request->header(Authorization 19 => "Basic $auth"); 20 $soap->on_action(sub { "RetrieveKeysList"; } ); 21 22 my $keys = SOAP::Data->name(keys => )->type(); 23 my $instance = SOAP::Data->name(instance => )->type(); 24 my $model = SOAP::Data->name(model => 25 \SOAP::Data->value($keys, $instance)); 26 my $som = $soap->call(RetrieveContactKeysList, $model); Notes. Looking at ConfigurationManagement.wsdl shows <operation name="RetrieveContactKeysList"> <soap:operation soapAction="RetrieveKeysList" style="document"/> ... </operation> where the soapAction attribute does not include Contact. On line 19, we have modied the SOAPAction header to use this value, rather than the incorrect SOAP::Lite default. On lines 2123 we have constructed data which modies the RetrieveContactKeysList part of the request XML from <RetrieveContactKeysList xmlns="http://bp4smdemo.hpsweducation.com:13080/SM/7" xsi:nil="true" /> to <RetrieveContactKeysList xmlns="http://bp4smdemo.hpsweducation.com:13080/SM/7"> <model> <keys /> <instance /> </model> </RetrieveContactKeysList> These modications change the output to HASH(0x7fe1eaaeedb0) meaning that there is now a result, even if it doesnt yet look informative. The use of SOAP::Data will be explained more later. Page 40 of 108 CHAPTER 3. SOAP IN PERL 3.4 SOAP::SOM getting stu back out SOM SOM stands for SOAP Object Model. What remains now is to process the SOAP::SOM object received from $soap->call. We use the valueof method on $som to extract data, using ex- pressions similar to those used with DOM (describing HTML documents for manipulation using Javascript, etc.). Notes. The beginning and end of the XML response are <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <RetrieveContactKeysListResponse message="Success" query="" returnCode="0" schemaRevisionDate="2011-12-04" schemaRevisionLevel="1" status="SUCCESS" xmlns="http://schemas.hp.com/SM/7" xmlns:cmn="http://schemas.hp.com/SM/7/Common" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.hp.com/SM/7 http://bp4smdemo.hpsweducation.com:13080/SM/7/Contact.xsd"> <keys><ContactName type="String">AARON, JIM</ContactName></keys> <keys><ContactName type="String">ACRE CORNER, ROB</ContactName></keys> ... <keys><ContactName type="String">ZAHN, HAROLD</ContactName></keys> </RetrieveContactKeysListResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Page 41 of 108 3.4. SOAP::SOM GETTING STUFF BACK OUT Output g.pl 30 my $detail = $som->faultdetail; 31 my $out = "Fault\n"; 32 $out .= "\tCode\t$code\n" if ($code); 33 $out .= "\tActor\t$actor\n" if ($actor); 34 $out .= "\tString\t$string\n" if ($string); 35 $out .= "\tDetail\t$detail\n" if ($detail); 36 die $out; 37 } 38 39 foreach my $k 40 ($som->valueof(//RetrieveContactKeysListResponse/keys/ContactName)) { 41 print "$k\n"; 42 } Notes. We changed line 39 to a loop over the appropriate elements of the SOM, and the result begins with AARON, JIM ACRE CORNER, ROB ADAMS, IRENE ADMIN HARVEY ADMIN, CONFIG You may notice some blank lines in the output. These are due to some ContactName values containing multiple lines. Page 42 of 108 CHAPTER 3. SOAP IN PERL soapdata outer h.pl 39 soapdata($som, //RetrieveContactKeysListResponse/keys, 1); 40 41 sub soapdata { 42 my ($som, $root, $num) = @_; 43 my $ref = $som->valueof($root); 44 my @keys = sort(keys(%$ref)); 45 foreach my $k (@keys) { 46 my $count = 0; 47 foreach my $v ($som->valueof("$root/$k")) { 68 } 69 } 70 } Notes. Now weve replaced lines 3941 with a more general routine which knows how to show the internal structure of a SOM node. This may not make much dierence to a key listing, but it will help when we retrieve individual records with a larger number of elds. On line 42, the rst parameter gives the SOM to extract data from, the second parameter indicates which part of the SOM to show, while the third parameter indicates whether the elements are believed to be part of an array. In this case numbers are added. The soapdata function is not specic to this script, so it could be separated into a separate le, and included using use. Well do this shortly. Page 43 of 108 3.4. SOAP::SOM GETTING STUFF BACK OUT soapdata inner 1 h.pl 47 foreach my $v ($som->valueof("$root/$k")) { 48 my $kk = $k; 49 $count += 1; 50 if (! defined $v) { 51 $kk .= "[$count]" if ($num); 52 print "$kk: (undefined)\n"; 53 } elsif (ref($v) eq HASH) { 54 soapdata($som, "$root/$k", 1); 55 } elsif ($v eq ) { 56 $kk .= "[$count]" if ($num); 57 print "$kk: (empty)\n"; 58 } else { 67 } 68 } Notes. Line 47 allows the possibility of repetition. Lines 5152 handle the case where there is no data. Line 54 handles the case where there is nested structure. Lines 5657 handle the case where there is data, but its an empty string. Page 44 of 108 CHAPTER 3. SOAP IN PERL soapdata inner 2 h.pl 58 } else { 59 $kk .= "[$count]" if ($num); 60 my @ls = split(/\n/, $v); 61 my $lcount = 0; 62 foreach my $l (@ls) { 63 $lcount += 1; 64 $kk .= "($lcount)" if ($#ls > 0); 65 print "$kk: $l\n"; 66 } 67 } Notes. Lines 5966 handle the case where the data is a string, including the possibility of it spanning multiple lines. Page 45 of 108 3.4. SOAP::SOM GETTING STUFF BACK OUT HPSMSOAP module A useful step here is to make soapdata a separate module. HPSMSOAP.pm 1 #!/usr/bin/perl 2 3 use SOAP::Lite; 4 5 package HPSMSOAP; 6 require Exporter; 7 @ISA = qw(Exporter); 8 @EXPORT = qw(soapdata); 9 10 sub soapdata { 39 } 40 41 1; Notes. We put the function into a separate le, called HPSMSOAP.pm, with a small amount of decoration. The extra lines around the soapdata function make the containing le a module. The lename must have the .pm sux. It may be easiest to keep this le within the same directory as the scripts which use it. The 1; line at the end is a quirk of needing le inclusions to return with success. Page 46 of 108 CHAPTER 3. SOAP IN PERL Using the module i.pl To use the new module, we add line 8 to our script and remove the body of the soapdata function from the end of it. 6 use SOAP::Lite +trace => debug; 7 use MIME::Base64; 8 use HPSMSOAP; Notes. Page 47 of 108 3.5. SOAP::DATA CALLING PARAMETERS 3.5 SOAP::Data calling parameters Calling parameters With the RetrieveContactKeysList script weve written so far, we havent needed to pass any parameters to the script. Once we have the name of a Contact, we may wish to write a script which shows more information about a particular contact, say RetrieveContact, in which case we need to get the name into the script somehow, and pass it in the SOAP request. One approach is to have the script read the argument, while another is to pass it on the command line. The second ap- proach is more usual in scripting on Unix and Linux systems because it enables multiple arguments to be used even if some take more than one line. Notes. Reading multiple arguments from the terminal or standard input would make it dicult to handle a mixture of multiple arguments and multiple line arguments, while the POSIX shell is happy to allow quoted strings to cover multiple lines. Page 48 of 108 CHAPTER 3. SOAP IN PERL SOAP::Data Now lets look at the SOAP::Data lines in the script. 21 my $keys = SOAP::Data->name(keys => )->type(); 22 my $instance = SOAP::Data->name(instance => )->type(); 23 my $model = SOAP::Data->name(model => 24 \SOAP::Data->value($keys, $instance)); Notes. SOAP::Data->name takes arguments like (thing => one) which produces <thing>one</thing>. SOAP::Lite attempts to deduce the type of the value (e.g., one looks like a string) and will typically add an attribute to the opening <thing> tag to indicate this. This often produces unwanted or even incorrect verbiage, hence the use of ->type() to remove the attribute. If the tag value is to be empty, we can use SOAP::Data->name(thing => )->type() which produces <thing/>, which is equivalent to <thing></thing>. SOAP::Data->value provides a way to specify nesting of tags, taking a number of arguments for the contained content. Specifying this type of value as the right hand part of a SOAP::Data->name invocation requires creating a reference, hence the \. Page 49 of 108 3.6. EXERCISE 3.6 Exercise Exercise Exercise: Retrieving contacts from HP Service Manager Notes. Ensure that your copy of RetrieveContactKeysList.pl works. (On systems other than Windows, you may be able to omit the .pl extension.) Copy RetrieveContactKeysList.pl to RetrieveContact.pl (Omit .pl if both de- sired and possible). Edit in the necessary changes Remove KeysList whereever it occurs. The rst command line argument is the rst element of @ARGV, namely $ARGV[0]. The <instance/> eld in the request needs to become <instance><ContactName>Whatever</ContactName></instance>. The part of the response to print is within //RetrieveContactResponse/model/instance. When you think its ready, try with a contact who exists (say, XINTIAN), and one who doesnt (say, FRED). If your argument contains spaces or special characters, youll need to quote it. On Windows, youll need to use double quote ". On POSIX you can choose between and ". You should nd RetrieveContact.pl works identically whether you put the <ContactName> inside <instance> or inside <keys>. If you try to put a reference to the same SOAP::Data into both, youll have a failure, but you could make two copies with the same string value, and itll work. Page 50 of 108 4 HP Service Manager Tickets 51 4.1. CONTACTS AND OPERATORS 4.1 Contacts and operators Contacts and operators A ticketing system such as HP Service Manager involves sev- eral dierent kinds of people. operator a person who operates the SM web interface to record, modify, or otherwise act upon tickets, usually on behalf of somebody else; this may include service technicians and other professionals contact a person who communicates with an operator, by telephone or email, to address an issue on behalf of themselves or someone else self-service a person (other than an operator) who uses SM, perhaps with restricted access, to record tickets on their own behalf In addition computer programs may create tickets reecting issues which need to be addressed, such as outages, or modify tickets when other situations occur, such as timeouts. Notes. Other people involved with SM include supervisors and those whose work is less directly driven by SM tickets than level 1 operators. A person may be both an operator and a contact. Page 52 of 108 CHAPTER 4. HP SERVICE MANAGER TICKETS HP Service Manager ticket types interaction When a client communicates with an operator, the operator normally creates an interaction ticket to record this event. incident When an interaction is complex enough not to be fully dealt with during the call, the interaction is esca- lated, and an incident ticket is created from the interac- tion. change Sometimes the issue causing communication via SM is that a software or hardware requires (re)installation or upgrading. A change ticket is created to track this. This ticket type includes elds for build, testing, and deployment. Notes. interaction An interaction ticket is always given a category, namely incident, or a request for administration, information, or change. Some interaction tickets are closed almost immediately after opening, during the initial conversation, as the operator satises the contact. An ongoing issue is typically escalated to an incident, which is a separate kind of ticket related to the interaction. incident The incident is an issue which remains current until explicit steps are taken to close or abandon it. The incident may have related interactions, incidents, or other ticket types.. change A change ticket is not identical to the request for change category for interaction tickets. An interaction in that category will escalate to a change ticket. Page 53 of 108 4.1. CONTACTS AND OPERATORS Interaction tickets When a contact calls an operator, an interaction ticket is cre- ated. The interaction ticket must be categorized as one of incident something has gone wrong and needs to be xed request for one of administration grant access or password reset change emergency, normal, or standard information complaint, how to, status, etc. Notes. Some amount of diagnosis and classication can be undertaken by the operator during the call, while further processing by operators or analysts may be necessary to progress the ticket further. Page 54 of 108 CHAPTER 4. HP SERVICE MANAGER TICKETS 4.2 Interaction tickets and their lifecycle Interaction tickets create When a client talks with an operator, the operator creates in interaction ticket to record the issue. escalate If the issue cannot be fully dealt with during the call, and is not a request with its own category, the operator will escalate the issue, which creates a related incident ticket. close When the client is fully satised the issue has been handled, the operator will close the issue. Notes. If the interaction is marked for email callback, closing other ticket types may close related interaction tickets, as the email notication is automated. If the interaction is marked for telephone callback, the operator is expected to call the contact back before closing the interaction. Page 55 of 108 4.2. INTERACTION TICKETS AND THEIR LIFECYCLE Interaction: Incident Notes. This screenshot was taken after an incident-category interaction was created and escalated. Both the interaction and the related incident were saved. Note the red stars indicating compulsory elds. Page 56 of 108 CHAPTER 4. HP SERVICE MANAGER TICKETS Scroll down Notes. Scrolling down the previous web page shows a link to the related incident. Page 57 of 108 4.2. INTERACTION TICKETS AND THEIR LIFECYCLE Interaction: Request for Administration Notes. This screenshot was taken after a request for administration interaction was cre- ated. Page 58 of 108 CHAPTER 4. HP SERVICE MANAGER TICKETS Interaction: Request for Information Notes. This screenshot was taken after a request for information interaction was created. Page 59 of 108 4.2. INTERACTION TICKETS AND THEIR LIFECYCLE Interaction: Request for Change Notes. This screenshot was taken after a request for change interaction was created and escalated. Both the interaction and the related change were saved. Page 60 of 108 CHAPTER 4. HP SERVICE MANAGER TICKETS Scroll down Notes. Scrolling down the previous web page shows a link to the related change. Page 61 of 108 4.3. INCIDENT TICKETS AND THEIR LIFECYCLE 4.3 Incident tickets and their lifecycle Incident tickets categorize and prioritize The operator will attempt to de- scribe the incident, and determine urgency and impact. analyse and diagnose The operator attempts to nd a cause and/or documented workaround. relate The operator will attempt to nd related incidents, and mark them as such in Service Manager. reassign If the incident is beyond the operators skill, the ticket may be reassigned to more experienced sta. raise a change ticket If a software or hardware change is re- quired, the operator may raise a change ticket. resolve If the issue has been resolved to the operators un- derstanding, it may be marked as resolved. close When the contact is also satised with the resolution of the incident, it may be closed. abandon If the contact loses interest in the incident, and no- body else believes it to be an issue, the incident may be marked as abandoned. Notes. Page 62 of 108 CHAPTER 4. HP SERVICE MANAGER TICKETS Incident Notes. This ticket was created by escalating an interaction ticket. It is possible to create an incident ticket directly, rather than from escalation of an interaction. Page 63 of 108 4.4. CHANGE TICKETS AND THEIR LIFECYCLE 4.4 Change tickets and their lifecycle Change tickets log An operator creates the ticket. Fields may be copied from a request for change interaction. assess and evaluate Assess what needs to be done, and what it will take. analyse risk and impact Analyse what services will be af- fected by the change, and the relative risk of doing or not doing the change. approve Includes assigning resources to do the work. build and test Assigned resources build and test as required. schedule Schedule deployment, including notications. implement Deploy the hardware and/or software. review Post-Implementation Review. Notes. Page 64 of 108 CHAPTER 4. HP SERVICE MANAGER TICKETS Change Notes. This ticket was created by escalating an interaction ticket. It is possible to create an change ticket directly, rather than from escalation of an interaction. Page 65 of 108 4.4. CHANGE TICKETS AND THEIR LIFECYCLE Scroll down Notes. Scrolling down shows the related interaction. Page 66 of 108 CHAPTER 4. HP SERVICE MANAGER TICKETS 4.5 Exercise Exercise Exercise: Using the HP Service Manager web interface to see tickets Notes. Log in to http://bp4smdemo.hpsweducation.com/bp4sm93/. Visit each of Service Desk > Interaction Queue Incident Management > Incident Queue Change Management > Changes > Change Queue Page 67 of 108 5 Creating Tickets 68 CHAPTER 5. CREATING TICKETS 5.1 Common elds Creation Creating tickets requires modifying existing information or adding new information. As this is more destructive than merely fetching existing in- formation, your script should check additional sources of in- formation about things which might not be quite right. We suggest including soapfault($som); soapstatus($som); soapdata($som, //XResponse/messages, 1); near the end of your script, just before you show the result. You will need to replace X with the appropriate request type. Notes. The soapfault and soapstatus routines are included in the provided HPSMSOAP.pm package. If there was a SOAP error preventing execution of your request, soapfault will indicate what the fault was, and stop the script. Errors tend to be because of missing or erroneous parts in the request XML. If there was no SOAP error, in that there was a response received from the server, soapstatus will indicate a summary of the status of your request. A status other than success can still result in ticket creation, in which case some elds will have default or empty values. The soapdata invocation with /messages will show any messages sent by the server to indicate why status might not be an unambiguous Success. For ticket creation, these messages should indicate what elds are missing or fail validation. Page 69 of 108 5.1. COMMON FIELDS Common elds Most tickets require the following elds to be given valid values Contact Who wants this done, and/or to be informed about it Title One line summary of the ticket Description Multi-line description of the problem, issue, etc. AectedService What software service is at issue AectedCI What hardware is at issue Impact Number 14 expands to one of 1 Enterprise, 2 Site/Dept, 3 Multiple Users, 4 User Urgency Number 14 expands to one of 1 Critical, 2 High, 3 Average, 4 Low Notes. Our sample program checks for certain elds to ensure they are specied. Only one of AffectedService and AffectedCI is required. The Contact, AffectedService or AffectedCI, Impact, Urgency, and several other elds must match values already known to Service Manager. For the Change ticket, you need to use InitiatedBy and bp.primary.contact instead of Contact. Page 70 of 108 CHAPTER 5. CREATING TICKETS 5.2 Create skeleton Create skeleton 1 m.pl 1 #!/usr/bin/perl 2 3 use strict; 4 use warnings; 5 6 BEGIN { 7 if ($0 =~ m|^(.*)/[^/]+$|) { 8 push(@INC, $1); 9 } 10 } 11 12 use SOAP::Lite +trace => debug; 13 use MIME::Base64; 14 use HPSMSOAP; 15 Notes. Line 1 should work for any Unix-like OS including Linux and BSD. For Windows, the extension .pl should be enough. Lines 610 set the include path for Perl modules to include the directory con- taining the script youre running so that HPSMSOAP.pm can be found it if is in the same directory. If you install HPSMSOAP.pm in one of the directories already on your Perl include path, these lines can be omitted. Line 12 enables tracing of SOAP messages. Once youre satised your scripts work, you could remove the +trace => debug if you like. Page 71 of 108 5.2. CREATE SKELETON Create skeleton 2 m.pl 15 16 my $site = http://bp4smdemo.hpsweducation.com:13080/SM/7; 17 my $user = falcon; 18 my $password = orange perfection; 19 my $auth = encode_base64("$user:$password", ); 20 21 my %argument = (); 22 foreach my $a (@ARGV) { 23 if ($a =~ s/^([^=]+)=//) { 24 $argument{$1} = $a; 25 } else { 26 die "invalid argument [$a]\n"; 27 } 28 } 29 my @required = qw(Contact Title Description Impact Urgency); Notes. Line 16 needs to be corrected to refer to your actual Service Manager URL. Lines 1718 need to be adjusted for the user you want your scripts to raise tickets as. Lines 2128 check command line arguments are of the form Name=Value, and puts them into a the dictionary %argument. The value needs to be quoted or escaped if it includes anything which your shell might misinterpret, such as space, newline, or special characters. On Windows, you may have to (double) quote the entire command line argument including the Name= part. Page 72 of 108 CHAPTER 5. CREATING TICKETS Create skeleton 3 m.pl 29 my @required = qw(Contact Title Description Impact Urgency); 30 my @missing = (); 31 my $misscount = 0; 32 foreach my $r (@required) { 33 if (! exists $argument{$r}) { 34 $misscount += 1; 35 push(@missing, $r); 36 } 37 } 38 die "$misscount required args missing:\n\t" . join( , sort(@missing)) . "\n" 39 if ($misscount); 40 Notes. Lines 2939 check whether the required arguments (as listed on line 29) are present in %argument, and prints and error message if any are missing. You probably want to add elds to 29 as appropriate for your request type as you discover them. Page 73 of 108 5.2. CREATE SKELETON Create skeleton 4 m.pl 40 41 my @xargs = (); 42 foreach my $k (keys %argument) { 43 push(@xargs, SOAP::Data->name($k => $argument{$k})); 44 } 45 my $x = SOAP::Data->value(@xargs); 46 47 my $soap = SOAP::Lite->new( 48 proxy => "$site/ws", 49 service => "$site/XX.wsdl", 50 default_ns => $site); 51 $soap->transport->http_request->header(Authorization => "Basic $auth"); 52 $soap->on_action(sub { "Create"; } ); 53 Notes. Lines 4145 encode the command line arguments into SOAP data for use on line 55 below. Lines 4752 create the SOAP::Lite object to be used for your request. You will have to modify the XX on line 49 to refer to the correct .wsdl le for your request type. Page 74 of 108 CHAPTER 5. CREATING TICKETS Create skeleton 5 m.pl 53 54 my $keys = SOAP::Data->name(keys => )->type(); 55 my $instance = SOAP::Data->name(instance => \$x)->type(); 56 my $model = SOAP::Data->name(model => \SOAP::Data->value($keys, $instance)); 57 my $som = $soap->call(CreateX, $model); 58 59 soapfault($som); 60 soapstatus($som); 61 soapdata($som, //CreateXResponse/messages, 1); 62 soapdata($som, //CreateXResponse/model, 0); Notes. Lines 5457 collect the arguments required for the call, and invokes the SOAP service. Line 55 uses the SOAP data encoded on lines 4145 above. Line 59 indicates whether there was a fault in the SOAP syntax, or any failure to contact the SOAP server, and terminates the script of there was no useful SOAP response. Line 60 shows the SOAP status of the request. Line 61 shows any warnings or informational messages associated with the SOAP status. This may include notication of missing or invalid elds not caught above in lines 2939. Line 62 shows the return data from your request. Youll need to modify X for your request type on lines 57 and 6162. Page 75 of 108 5.3. WHAT AN INTERACTION TICKET NEEDS 5.3 What an interaction ticket needs Interaction ticket Category must be one of incident request for change request for administration request for information Area Acceptable values (and whether required) depend on Category Subarea Acceptable values (and whether required) depend on Category Notes. Remember that incident and request for change categories both result in sep- arate ticket types upon escalation, and that the resulting incident and change tickets can actually be created separately without requiring an interaction ticket to start from. Your work processes will probably specify whether to create the interaction ticket or not. Page 76 of 108 CHAPTER 5. CREATING TICKETS 5.4 What an incident ticket needs Incident ticket In addition to the common elds mentioned previously, an incident ticket requires AssignmentGroup Who will handle the incident. Notes. Additional elds are available for categorizing and classifying the incident further, but a ticket can be created without them, or they could be added later with an Update request if you wish. Page 77 of 108 5.5. WHAT A CHANGE TICKET NEEDS 5.5 What a change ticket needs Change ticket In addition to the common elds mentioned previously, a change ticket requires Category Permitted values depend on whether BP4SM is in use, and/or what customization has been done. Reason Why is the change needed (menu)? bp.eect.not.implementation What is the eect if the change is not implemented? InitiatedBy Who started this change? bp.primary.contact Who is responsible to see this change through? AssignmentGroup Who will handle the incident? RequestedEndDate When should the change be done by? bp.status Similar to Status. Notes. The possible values of Category are dened in the category table. The area and subarea tables dene permissible subcategories and areas. For users of HP Service Manager without BP4SM, the standard categories of change include Hardware, Software, Maintenance and several others. Most sites customize these. For users of BP4SM, Category must be one of Emergency RFC, Normal RFC and Standard RFC unless further site customisation has been done. Page 78 of 108 CHAPTER 5. CREATING TICKETS 5.6 What ticket should I use? What ticket should I use? As described previously, each ticket type has a distinct usage. We have discussed Change Incident Interaction We have not discussed Conguration Management Knowledge Management Problem Management Release Management Request Management Service Catalog(ue) Notes. Page 79 of 108 5.6. WHAT TICKET SHOULD I USE? Change ticket If youre recording a need for something to be changed, hardware or software, a Change ticket may be appropriate. As these require specic justication, they are probably best raised using the browser interface. Some changes may be routine enough to justify scripting. Notes. Page 80 of 108 CHAPTER 5. CREATING TICKETS Incident ticket If youre recording an issue, other than a change, which re- quires future or ongoing attention, and which is well under- stood, an Incident ticket is reasonable. These may be routine enough to script. For scripting, we may usually expect the ticket raised to be an Incident which can be auto-recognized by monitoring soft- ware. In this case, it may even be possible for the monitoring software to close some of the tickets it has raised. Notes. Page 81 of 108 5.6. WHAT TICKET SHOULD I USE? Interaction ticket If youre recording an interaction between a contact and an operator, which is complete during the conversation, or which is a request for administration or information, an Interaction ticket is reasonable. Given the presence of an operator in the conversation, the browser interface is often appropriate. Scripting these may be useful if youre attempting to tie mul- tiple Interactions into a single Incident. We have not discussed how to script such relationships. Notes. Page 82 of 108 CHAPTER 5. CREATING TICKETS 5.7 Exercise Exercise Exercise: Creating an incident ticket Notes. Create an incident ticket using the browser interface. Now attempt to create a script to do the same, referring back to your browser ticket as needed to ll in values. You may nd a Retrieve script useful to determine the eld names used by the SOAP interface. Page 83 of 108 6 Other Tickets and Tools 84 CHAPTER 6. OTHER TICKETS AND TOOLS 6.1 Service Catalogue Service Catalogue This provides access to information and things congured to be available for the user to order or request. Depend- ing on customization, this may include things like telephone line provisioning, laptop purchase, or allocation of some re- sources. Knowledge Management is included, as knowledge docu- ments grow over time. Notes. Actually, HP Service Manager spells it Service Catalog. Page 85 of 108 6.2. CONFIGURATION ITEMS 6.2 Conguration Items Conguration Items Many dierent types of Conguration Items are available to classify or group people, physical items, and abstract things in ways which help document relationships relevant to the ticket types used within HP Service Manager, and to inven- tory individuals within each classication. Company, Computer, Contact, Department, Device, Dis- playDevice, Furnishing, HandHeldDevice, Installed- Software, Location, MainFrame, Model, NetworkDe- vice, OceElectronic, SoftwareLicense, StorageDevice, TelecommunicationDevice, Vendor Note that many of these are specializations of others listed. Notes. Each of these types can be fetched using the RetrieveKeysList methods youve already used, and then fetched individually using the Retrieve methods youve also used. Your Create experience is also useful, but youll need to be aware of the way things are grouped and classied to make it work for you. Page 86 of 108 CHAPTER 6. OTHER TICKETS AND TOOLS 6.3 Creating a new web service interface Creating a new web service interface Up to now, this course has been about writing SOAP client programs. Well briey discuss now providing SOAP service. 1. First preference is to use the ITIL-based features already provided by Service Manager Web Services. 2. Second preference is to modify an existing extaccess record to expose access to additional elds of database records already in use for SM Web Services. 3. Third preference is do something new. Notes. You might want to consult the HP Service Manager Web Services Guide (SM9.30_Web_Services.pdf) from http://support.openview.hp.com/selfsolve/manuals/ Page 87 of 108 6.3. CREATING A NEW WEB SERVICE INTERFACE ITIL-based processes Service Desk Incident Management Problem Management Knowledge Management Conguration Management Change Management Service Catalogue Service Level Management Notes. These processes are available out-of-the-box. Page 88 of 108 CHAPTER 6. OTHER TICKETS AND TOOLS extaccess Tailoring > Web Services > WSDL Configuration shows ex- ternally exposed tables and elds. Tailoring > Database Dictionary shows tables and elds. Knowing what is connected to what can take some time to learn, and some ferreting around to discover. The dierence between them may show that the data youre after is present in the SM database, but not yet accessible. You may modify or add extaccess record information to expose additional elds or tables. Notes. The extaccess tool uses the same le values as the Document Engine. Browsing WSDL Configuration will help you determine which tables provide in- formation for each .wsdl. From there, browsing Database Dictionary will help you determine what elds are used, and perhaps what the table is actually used for. If you want Service Manager to use an externally provided service, you will need to run WSDL2JS. Page 89 of 108 6.4. CREATING A MAILER INTERFACE 6.4 Creating a mailer interface eventout Notications send messages to the eventout table These can be logs, email, page or many others. Other programs retrieve and delete from this table Notes. A quick way of identifying all possible out events available in your system is to create a new notication and look at the Notify Method pull down. Typically it will contain: connect email fax log mail msg noticenter noticenterappr page print tso Many of these are absolete, or almost never used for example, far fewer sites are using mail (HP ServiceManager internal email) for notications compared to email. tso is even rarer as it is many, many years since HP ServiceManager ran on a mainframe. An out-of-the-box BP4SM or ServiceManager server will only have notications that trigger email, msg and mail. Page 90 of 108 CHAPTER 6. OTHER TICKETS AND TOOLS eventout Notications send messages to the eventout table These can be logs, email, page or many others. Other programs retrieve and delete from this table. Usually done by Connect-IT Notes. msg notications appear at the top of the screen in the users session if they are logged in, and not at all if they are not. ServiceManager handles mail internally, and version 9.3 introduced an SMTP sender. But other than these, ServiceMan- ager has no built-in support for procesing out events. Connect-IT (also known as CIT) is the tool used by most customers for this job. Its strength is in handling web services; it can send emails and write log messages. Complicated processing is dicult since any programming has to be done in BASIC. Connect-IT can connect on proprietary, unpublished APIs which give it access to all tables regardless of whether they are exposed via WSDL. Page 91 of 108 6.4. CREATING A MAILER INTERFACE extaccess actions for eventout Notes. There is no WSDL denition for the eventout table, so one needs to be created. There is no need to create an add or save action as event out records are only viewed and deleted. Page 92 of 108 CHAPTER 6. OTHER TICKETS AND TOOLS extaccess elds for eventout Notes. There is no established standard or convention for eventout web services, nor is there likely ever to be one. There is no reason to hide any elds from view either, so in this example we have mapped every eld. More importantly, it is hard to imagine any upgrade which would aect this extaccess record, so even sites with concerns about stepping away from an out- of-the-box solution need not be too worried. Notice that the automatically-created sysmodcount, sysmodtime and sysmoduser can also be made available via web services. Of course, for the eventout table, every record will have a sysmodcount of 1 since after creation they only ever get deleted! Page 93 of 108 6.4. CREATING A MAILER INTERFACE eventout WSDL Notes. The resulting WSDL is available as soon as the denition is saved. And of course, with Perl, there is no compilation of WSDL to code required, so you are good to write your application immediately! Note that the evsysseq eld (which is a key on the eventout table is automatically used as an index for queries. Page 94 of 108 CHAPTER 6. OTHER TICKETS AND TOOLS But what do these elds mean...? Find a format which contains these elds (e.g. with Database Manager Try the context help (F1) Try the help generally Try the HP ART and EUT content Reverse engineer Guess Notes. Sometimes elds are obvious. Many times, the most obscure elds were used once many versions ago and are only maintained for backward compatibility. Sadly, guessing is often the only option. Looking at established solutions in Connect-IT are often inadequate as it will usually use non-published APIs. Page 95 of 108 6.4. CREATING A MAILER INTERFACE Some eventout answers evsysseq Sequence number. Primary key evtype Email, mail, page, etc. evsyssep Separator character for the information eld evelds Details of message to send; ve elds: email, opera- tor, name, subject, body. Notes. For example, if evsyssep is the ^ character, evfields might be: [email protected] HP Service Manager password has been updated by falcon. It was changed on 07/20/12 04:44:00.Your HP Service Manager password has been updated by falcon. It was changed on 07/20/12 04:44:00. Page 96 of 108 CHAPTER 6. OTHER TICKETS AND TOOLS Exercise Exercise: fetching and deleting event out records Notes. Use the content in the last few pages to: Create a WSDL denition for the eventout table Write a Perl program to: 1. Fetch a list of eventout sequence numbers 2. Retrieve the event out record associated with that sequence number 3. If it is an email, split the evfields value using the evsyssep character. Delete the eventout record. For a bonus, use Net::SMTP or equivalent to send the email that you have split. Add some fancy HTML as well. For an extra bonus, update the Notications in Service Manager to send a page. Modify your program to turn these page records into an SMS. Ask your in- structor for an SMS gateway you can use. Page 97 of 108 7 Techniques 98 CHAPTER 7. TECHNIQUES 7.1 Performance Performance Always constrain your search on the following tables: probsummary Bad you will have many incidents. problem If paging is turned on, very, very bad you will have much incident history. (If paging is o, you will get nothing) device You will have many computers contact You will have many contacts incidents Unless you dont use the Service Desk module activity Notes. Unconstrained searches on these tables are costly and very slow. Depending on the size of the organisation, the operator table may be very large as well particularly if the classic Employee Self-Service interface has been de- ployed. Page 99 of 108 7.1. PERFORMANCE Searching prexes and tricks SOAP-initiated searches use the same code path as user- initiated searches. Exact match (not prex only) > Search for a numeric eld greater than supplied model value. * Anywhere in the eld Notes. Page 100 of 108 CHAPTER 7. TECHNIQUES Being gentle with big tables sysmodtime is your friend. Search for changes since your last call. Search for newer incidents e.g. >IM123425 Create a trigger or format control to log changes to an- other table Query the activity table for BP4SM audit information. Notes. The mobility client access the activity table look at MobilityIncidentJournal1. Page 101 of 108 7.2. TABLES 7.2 Tables A brief list of common tables See notes for standard out-of-the-box tables. Notes. A few unimportant tables have been left o for brevity. The most important are in bold. Object Name Table Name Description ActiveSLA slaactive Current active service level agreements Approval Approval Pending approvals (e.g. for normal changes) ApprovalLog ApprovalLog History of approvals given Cart svcCart Service Catalogue carts. Used by the Flash-based self-service portal CartItem svcCartItem Service Catalogue carts items. Used by the Flash-based self- service portal CatalogByLanguage svcCatLanguage Languages supported by the service catalogue CatalogDetail svcCatDetail Catalogue contents. Used by the Flash-based self-service portal CatalogItem joinsvcDisplay Catalogue contents. Used by the Flash-based self-service portal Change cm3r All changes on the system. ChangeIIA cm3r All changes, alternate API. ChangeOperatorInformation cm3roperatorinfo Information about operator proles for change ChangeRC cm3r Change API as used by release control ChangeTask cm3t All change tasks. ChangeTaskOperatorInformation cm3roperatorinfo Information about operator proles to change tasks ChangeTaskRC cm3t Change API as used by release control Company company Access to the company table. Especially important for or- ganisations running in multi- company mode. Page 102 of 108 CHAPTER 7. TECHNIQUES Object Name Table Name Description Contact contacts Access to the contents table. Used in almost all organisa- tions to populate from HR databases. Currency currency The service catalogue and re- quest modules (not the service requre module) can operate in multiple currencies. CurrencyConvert curconvert The service catalogue and re- quest modules (not the service requre module) can operate in multiple currencies. This pro- vides an API for updating ex- change rates. Delegation ApprovalDelegation Who has delegated their ap- provals, to whom, and for how long. Department dept The departmental table. Very important for identifying who is subscribed to what service. Device device All conguration items, in- cluding business services. DisplayDevice joindisplaydevice Information about desktop monitors. GlobalLists globallists You can modify global lists ex- ternally! Inbox inbox The to-do list that operators see on login. Incident probsummary Incident table IncidentwithoutJournalUpdates probsummary Access to create and update in- cidents without having to sup- ply a journal update. InstalledSoftware pcsoftware Installed software. Interaction incidents Service Desk tickets, including service requests. InteractionApprovalCount svcInteractionApprovalCount Service Catalogue Items can have approvals. InteractionInbox svcInteractionInbox Service Catalogue items can have approvals. InteractionInfo incidents Alternate incidents API. KMAttachments kmattachments Knowledge management at- tachments. Knowledge kmdocument Knowledge management doc- uments KnowledgebaseErrors kmknowledgebaseerrors Knowledge management doc- uments derived from known errors. Page 103 of 108 7.2. TABLES Object Name Table Name Description KnowledgebaseUpdates kmknowledgebaseupdates Documents which have been submitted for indexing but have not yet been processed. Location location Contact locations MainFrame joinmainframe Database of mainframes in the organisation Model model The models of computer, fur- nishings, etc. in the system. Operator operator All operators Operator700 operator Backward-compatibility inter- face Operators svcCatOperatorList Used by Flash-based self ser- vice catalogue. Problem rootcause Access to the problems table Relationship cirelationship Access to the relationships between Conguration Items (e.g. this CI runs on this other CI). SLA sla All service level agreements SLAResponse slaresponse SLA response success levels SRCGlobalLists globallists Used by SRC. SRCInteraction incidents Used by SRC. Vendor vendor Companies that we buy from. See also model bpreleaseinfo bpreleaseinfo To be able to identify the cur- rent BP4SM version. (BP4SM only). civisualizationcat civisualizationcat Visualiation information ucmdbApplication joinapplication Interface for UCMDB ucmdbBusinessServicejoinbizservice Interface for UCMDB ucmdbComputer joincomputer Interface for UCMDB ucmdbNetwork joinnetworkcomponents Interface for UCMDB ucmdbPrinter joinoceelectronics Interface for UCMDB Page 104 of 108 CHAPTER 7. TECHNIQUES The mobility client Even if the mobility client is not licensed, these APIs are available and are unlikely to change in any future version. Most of the elds are self-explanatory. Notes. Object Name Table Name MobilityApproval1 Approval MobilityChange1 cm3r MobilityChangeByFields1 getrecordeldsbykey MobilityChangeGroups1 cm3groups MobilityChangeJournal1 activitycm3r MobilityChangeJournalType1 activitytype MobilityChangeOperatorInformation1 cm3roperatorinfo MobilityChangeTask1 cm3t MobilityChangeTaskCategory1 cm3tcategory MobilityChangeTaskOperatorInformation1 cm3roperatorinfo MobilityChangesAwaitingApproval1 mobilitychmwtap MobilityChangesAwaitingApprovalCount1 mobilitycountone MobilityChangesAwaitingApprovalQuery1 mobilityquery MobilityChangesInAssignmentGroups1 changesinassignmentgroup MobilityChangesInAssignmentGroupsCount1 mobilitycounttwo MobilityChangesInAssignmentGroupsQuery1 mobilityquery MobilityContact1 contacts MobilityGlobalList1 wsdlgloballist MobilityIncident1 probsummary MobilityIncidentAssignmentGroups1 assignment MobilityIncidentByFields1 getrecordeldsbykey MobilityIncidentClosureCode1 probcause MobilityIncidentJournal1 activity MobilityIncidentJournalType1 activitytype MobilityIncidentOperatorInformation1 incidentoperatorinfo MobilityIncidentsAssignedToMeCount1 mobilitycounttwo MobilityIncidentsInAssignmentGroups1 incidentsinassignmentgroups MobilityIncidentsInAssignmentGroupsCount1 mobilitycounttwo MobilityIncidentsInAssignmentGroupsQuery1 mobilityquery MobilityLogin1 mobilityoperatorinfo MobilityLogout1 mobilitylogout MobilityMassChangeOperatorInformation1 mobilityrecopinfo MobilityMassChangeTaskOperatorInformation1 mobilityrecopinfo MobilityMassIncidentOperatorInformation1 mobilityrecopinfo MobilityOperator1 operator Page 105 of 108 Index 106 Index authorization, 36, 37 base64, 30, 37 Blueprint for Service Manager, see BP4SM BP4SM, 78 BPEL, 16 Business Process Execution Language, see BPEL change, 53, 61, 62, 64, 65, 67, 70, 76, 7880 CIT, 91 Connect-IT, 91 Content-Length, 10 default ns, 34 Document Object Model, see DOM DOM, 41 Email from Service Manager, 90 eventout, 9094 evsysseq, 94 exercise, 28, 50, 67, 83, 97 extaccess, 27, 87, 89, 93 eXtensible Markup Language, see XML HP Service Manager, see SM HTML, 41 HTML POST action, see POST HTTP, 4, 811, 37 HyperText Markup Language, see HTML HyperText Transfer Protocol, see HTTP incident, 13, 16, 22, 28, 53, 56, 62, 63, 67, 77, 79, 8183, 97 interaction, 5356, 5860, 6365, 67, 76, 79, 82 ITIL, 87, 88 Javascript, 41, 89 load balancer, 26 mainframe, 90 MIME::Base64, 30 module, 11, 15, 26, 3032, 34, 36, 37, 46, 47, 71 Net::SMTP, 97 notication, 90 Notify Method, 90 Perl, 11 Perl module, see module Perl package, see module Perl::Critic, 34 port, 26 Port 13080, 26 port 8080, 26 POST, 810, 34 pragma, 34 proxy, 34 Remote Procedure Call, see RPC REpresentational State Transfer, see REST REST, 26 RPC, 4, 5, 10, 35 service, 34 Service Manager, see SM Simple Object Access Protocol, see SOAP SM, 7, 10, 11, 14, 16, 26, 28, 33, 37, 50, 52, 53, 62, 67, 78, 8587, 89 SOAP, 4, 7, 916, 24, 26, 30 107 INDEX SOAP Object Model, see SOM SOAP::Data, 40, 4850 SOAP::Lite, 26, 30, 32, 34, 36, 40 SOAP::SOM, 41 SOAP::WSDL, 30 SOAPAction, 911, 24, 40 SOM, 41 strict, 34 sysmodcount, 93 sysmodtime, 93 sysmoduser, 93 tomcat, 26 tso, 90 warnings, 34 Web Services Denition Language, see WSDL Web Services Description Language, see WSDL web tier, 26 WSDL, 4, 1626, 28, 30, 34, 39, 40, 74, 89 XML, 4, 6, 7, 911, 16 XML namespace, see xmlns xmlns, 12, 13, 15 Page 108 of 108