<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title> &#187; Tech Tips</title>
	<atom:link href="http://www.stratacominc.com/category/hp-service-manager7/tech-tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stratacominc.com</link>
	<description></description>
	<lastBuildDate>Fri, 13 Jan 2012 15:26:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How to make Advanced Search work better in Service Manager 7.10, 7.11 and 9.20</title>
		<link>http://www.stratacominc.com/advanced-search-work-service-manager-710-711-920/</link>
		<comments>http://www.stratacominc.com/advanced-search-work-service-manager-710-711-920/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 15:14:20 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[HP Service Manager 7.x]]></category>
		<category><![CDATA[HP Service Manager 9.2]]></category>
		<category><![CDATA[Tech Tips]]></category>

		<guid isPermaLink="false">http://www.stratacominc.com/?p=470</guid>
		<description><![CDATA[If you've ever used the 'Advanced Filter' capablities in Service Manager, you know by now that it's a pretty good tool.  Developed after the Service Desk flavor of Advanced Filter, it is still in it's infancy stage, however.

One of the most irritating defects in the Advanced Filter capabilities is the fact that it does not use the information in the underlying link record to perform the queries. 

]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve ever used the &#8216;Advanced Filter&#8217; capablities in Service Manager, you know by now that it&#8217;s a pretty good tool.  Developed after the Service Desk flavor of Advanced Filter, it is still in it&#8217;s infancy stage, however.</p>
<p>One of the most irritating defects in the Advanced Filter capabilities is the fact that it does not use the information in the underlying link record to perform the queries.</p>
<p>For example, if you have 100,000 contacts and you want to look up a contact by email address in &#8216;Advanced Filter&#8217; to find out how many Interaction records have been opened by that contact, you would have to open a new tab, open the contact search form and search for the contact from there.  Then copy/paste that contacts unique ID into the Advanced Filter box for contacts.  Clicking the &#8216;Fill&#8217; box here does nothing more than bring back the entire list of contacts, useless if you do not know their unique id.</p>
<p><a href="http://www.stratacominc.com/wp-content/uploads/2010/12/HP-SM-9.20-screen-shot-12.jpg"><img class="alignnone size-medium wp-image-476" title="HP SM 9.20 screen shot 1" src="http://www.stratacominc.com/wp-content/uploads/2010/12/HP-SM-9.20-screen-shot-12-300x69.jpg" alt="" width="300" height="69" /></a></p>
<p>I have discovered a way to make the Advanced Filter functionality use the link information from the base link record.   Simply it works like this:</p>
<ol>
<li>The Advanced Filter functionality for links uses the Filter.edit.addFilter display screen to control the actions on the screen.  Therefore, it uses the &#8216;Fill&#8217; display option to perform the processing on the link.</li>
<li>Unfortunately, the RAD app only looks in the base link to get the name of the table to go to and the name of the field to fill.  It does not use any of the logic from the $query variable or anything else in there.</li>
<li>Therefore, we must make our own &#8216;Fill&#8217; button for use on this display screen.</li>
<li>We will use the fill.fc RAD application to replace the fill button that is currently being used.</li>
<li>Because the same comm/fill box is used for every field in every table, we must make the code generic enough that it will work for all tables and all fields.</li>
</ol>
<p>Here are the steps to make this happen:</p>
<ol>
<li>Find the Filter.edit.addFilter_fill display option</li>
<li>Change the &#8216;Action&#8217; drop-down from &#8216;fill&#8217; to &#8216;redraw&#8217;</li>
<li>In the &#8216;Pre Rad Expressions&#8217; tab, enter this code:  $L.void=rtecall(&#8220;rinit&#8221;, $L.code, $L.record, tablename in $L.filed)</li>
<li>In the RAD tab enter <strong>fill.fc</strong> in the RAD application box</li>
<li>Still on RAD tab, enter <strong>record</strong> and <strong>text</strong> in the &#8216;Names&#8217; array</li>
<li>Still on RAD tab, enter <strong>$L.record</strong> and <strong>aFieldName in $L.filed</strong> in the &#8216;Values&#8217; array</li>
<li>Then, on the Post Javascript tab, enter this code:</li>
</ol>
<div><span><span style="color: #800000; font-size: x-small;"><span style="color: #800000; font-size: x-small;"><span style="color: #800000; font-size: x-small;">var </span></span></span><span style="color: #800000; font-size: x-small;"><span style="font-size: x-small;">fieldName </span><span style="color: #ff0080; font-size: x-small;"><span style="color: #ff0080; font-size: x-small;">=</span></span><span style="font-size: x-small;"> vars</span><span style="color: #ff0080; font-size: x-small;"><span style="color: #ff0080; font-size: x-small;">.</span></span><span style="font-size: x-small;">$L_filed</span><span style="color: #ff0080; font-size: x-small;"><span style="color: #ff0080; font-size: x-small;">.</span></span><span style="font-size: x-small;">aFieldName</span><span style="color: #ff0080; font-size: x-small;"><span style="color: #ff0080; font-size: x-small;">;</span></span></span></span></div>
<div><span style="color: #800000; font-size: x-small;"><span style="color: #800000; font-size: x-small;"><span style="color: #800000; font-size: x-small;"><span style="color: #800000; font-size: x-small;">var newFieldName = system.functions.strrep(fieldName,&#8221;.&#8221;,&#8221;_&#8221;); </span></span></span></span></div>
<div><span style="font-size: x-small;"><span style="font-size: x-small;">vars</span></span><span style="font-size: x-small;"><span style="font-size: x-small;"><span style="color: #ff0080; font-size: x-small;"><span style="color: #ff0080; font-size: x-small;">.</span></span><span style="font-size: x-small;">$L_filed</span><span style="color: #ff0080; font-size: x-small;"><span style="color: #ff0080; font-size: x-small;">.</span></span><span style="font-size: x-small;">aValue1</span><span><span style="color: #ff0080; font-size: x-small;">=</span><span style="color: #008040; font-size: x-small;">eval</span></span><span style="font-size: x-small;">(</span><span style="color: #0000ff; font-size: x-small;"><span style="color: #0000ff; font-size: x-small;">&#8220;vars.$L_record.&#8221;</span></span><span style="color: #ff0080; font-size: x-small;"><span style="color: #ff0080; font-size: x-small;">+</span></span><span style="font-size: x-small;">newFieldName)</span><span style="color: #ff0080; font-size: x-small;"><span style="color: #ff0080; font-size: x-small;">;</span></span></span></span> </div>
<p>Now try it out!  I did the last panel in javascript because it of the &#8216;eval&#8217; funtion.  It allowed me to create a variable name out of a string easily<strong>.</strong> </p>
<p>What still does&#8217;t work, even with this magic code?  Well, if you are using any references to $file in your $query variable code (i.e. &#8220;if assignment in $file~=NULL&#8221;) it won&#8217;t work.  You must use cursor.field.value() or other non $file statements to pull data from the field. </p>
<p>I think the most usefull thing that happens is that you can present the user with a search screen.  Then, if they are searching for contacts, they can enter any search criterea they want in the search screen and are not limited to just entering the contact&#8217;s unique ID.</p>
<p>Try it out!  It will work for any field that have a record in the base link for that table.</p>
<br/><a href="http://www.socialmarker.com/?link=http://www.stratacominc.com/advanced-search-work-service-manager-710-711-920/&title=How+to+make+Advanced+Search+work+better+in+Service+Manager+7.10%2C+7.11+and+9.20&text=If+you%26%238217%3Bve+ever+used+the+%26%238216%3BAdvanced+Filter%26%238217%3B+capablities+in+Service+Manager%2C+you+know+by+now+that+it%26%238217%3Bs+a+pretty+good+tool.%26%23160%3B+Developed+after+the+Service+Desk+flavor+of...&tags=the+base%2C+advanced+filter%2C+filter%2C+enter%2C+record%2C+field%2C+search%2C+contacts%2C+screen" target="_blank"><img src= "http://www.socialmarker.com/bookmark.gif" border="0" /></a><noscript><a href="http://www.socialmarker.com" >Social Bookmarking</a></noscript>]]></content:encoded>
			<wfw:commentRss>http://www.stratacominc.com/advanced-search-work-service-manager-710-711-920/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Track Structured Arrays in Activity Actions</title>
		<link>http://www.stratacominc.com/track-structured-arrays-activity-actions/</link>
		<comments>http://www.stratacominc.com/track-structured-arrays-activity-actions/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 19:55:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HP Service Manager 7.x]]></category>
		<category><![CDATA[Tech Tips]]></category>
		<category><![CDATA[Activity Actions]]></category>
		<category><![CDATA[Activity logging]]></category>
		<category><![CDATA[Data tracking]]></category>
		<category><![CDATA[Logging]]></category>
		<category><![CDATA[Structured arrays]]></category>

		<guid isPermaLink="false">http://www.stratacominc.com/?p=387</guid>
		<description><![CDATA[Tracking structured arrays in activity actions
Since structured arrays are more complex than a character or number field, adding this information to the activity actions requires additional javascript coding.  We will use an example of work effort data to demonstrate how to accomplish this.
Here is the work.effort structure from the dbdict.








Once we have put all the [...]]]></description>
			<content:encoded><![CDATA[<h2><strong>Tracking structured arrays in activity actions</strong></h2>
<p>Since structured arrays are more complex than a character or number field, adding this information to the activity actions requires additional javascript coding.  We will use an example of work effort data to demonstrate how to accomplish this.</p>
<p>Here is the work.effort structure from the dbdict.</p>
<table border="0">
<tbody>
<tr>
<td>
<p><div id="attachment_388" class="wp-caption alignleft" style="width: 574px"><a href="http://www.stratacominc.com/wp-content/uploads/2010/09/work.effort-structure-dbdict.jpg"><img class="size-full wp-image-388" title="work.effort structure-dbdict" src="http://www.stratacominc.com/wp-content/uploads/2010/09/work.effort-structure-dbdict.jpg" alt="Work effort structure from db dict" width="564" height="172" /></a><p class="wp-caption-text">Work effort structure from db dict</p></div></td>
</tr>
</tbody>
</table>
<p>Once we have put all the pieces together, the activity actions will display all the entries from the work.effort array before and after the change.  First, lets take a look at the javascript code that is used to manipulate the array data.  This function can be added to an existing javascript library or you can create a new one to house it.  We have put this in a script library called General. <em>Editor&#8217;s note &#8211; due to formatting the  items below may not be completely readable.  Contact us for a complimentary full copy of this article</em></p>
<pre>function formatStructArray(oldrecord, newrecord, structure) {
    var oldStructure = eval("oldrecord."+structure);  // Create a variable to house the name of the structure
    var newStructure = eval("newrecord."+structure);

    var oldDataOutput = "";
    var i = 0;
    for (i in oldStructure) {  // Loop through the old structure to get each individual array line
        var arrayLine = oldStructure[i];

        var ii = 0;
        for (ii in arrayLine) {  // Loop through and format each line of the array
            var sepii = ii; sepii++;
            if (sepii == system.functions.lng(arrayLine)) {var separator="";} else {var separator=" | ";}
            var oldDataOutput = oldDataOutput+arrayLine[ii]+separator;
        }
        oldDataOutput = oldDataOutput+"\n";    // Insert a line break after each array line.
    }
    var newDataOutput = "";
    var i = 0;
    for (i in newStructure) {  // Loop through the new structure to get each individual array line
        arrayLine = newStructure[i];

        var ii = 0;
        for (ii in arrayLine) {  // Loop through and format each line of the array
            var sepii = ii; sepii++;
            if (sepii == system.functions.lng(arrayLine)) {var separator="";} else {var separator=" | ";}
            var newDataOutput = newDataOutput+arrayLine[ii]+separator;
        }
        newDataOutput = newDataOutput+"\n";  // Insert a line break after each array line
    }
    var finalDataOutput = structure+" has changed from \n"+oldDataOutput+" to \n"+newDataOutput;
    return finalDataOutput;    // Return the entire string
}</pre>
<p>Next we need to call the javascript from the activityactions table that corresponds to where the structured array is located.  In our case it is the cm3r table and we are evoking it when the record is updated.   This will call our javascript code which returns our formatted information to be placed in the activitycm3r table.</p>
<table border="0">
<tbody>
<tr>
<td>
<a href="http://www.stratacominc.com/wp-content/uploads/2010/09/cm3r-table.jjpg_.jpg"><img class="alignleft size-full wp-image-389" title="cm3r-table.jjpg" src="http://www.stratacominc.com/wp-content/uploads/2010/09/cm3r-table.jjpg_.jpg" alt="" width="955" height="130" /></a>
</td>
</tr>
</tbody>
</table>
<p>After adding this code, whenever we make changes to the work.effort structured array, these changes will be logged for future use.</p>
<table border="0">
<tbody>
<tr>
<td>
<a href="http://www.stratacominc.com/wp-content/uploads/2010/09/work.effort-audit-log.jpg"><img class="alignleft size-full wp-image-390" title="work.effort-audit-log" src="http://www.stratacominc.com/wp-content/uploads/2010/09/work.effort-audit-log.jpg" alt="" width="962" height="215" /></a></td>
</tr>
</tbody>
</table>
<br/><a href="http://www.socialmarker.com/?link=http://www.stratacominc.com/track-structured-arrays-activity-actions/&title=How+to+Track+Structured+Arrays+in+Activity+Actions&text=Tracking+structured+arrays+in+activity+actions+Since+structured+arrays+are+more+complex+than+a+character+or+number+field%2C+adding+this+information+to+the+activity+actions+requires+additional...&tags=loop+through%2C+work+effort%2C+array%2C+structure%2C+arrayline%2C+sepii%2C+olddataoutput%2C+newdataoutput" target="_blank"><img src= "http://www.socialmarker.com/bookmark.gif" border="0" /></a><noscript><a href="http://www.socialmarker.com" >Social Bookmarking</a></noscript>]]></content:encoded>
			<wfw:commentRss>http://www.stratacominc.com/track-structured-arrays-activity-actions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unlocking the Service Manager Database</title>
		<link>http://www.stratacominc.com/unlocking-service-manager-database/</link>
		<comments>http://www.stratacominc.com/unlocking-service-manager-database/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 14:36:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HP Service Manager 7.x]]></category>
		<category><![CDATA[Tech Tips]]></category>

		<guid isPermaLink="false">http://www.stratacominc.com/?p=385</guid>
		<description><![CDATA[How to Unlock the HP Service Manager Database
Moving your Service Manager (SM) database from one instance of the application to another is an important process for any SM developer/manager.  It can be used to keep your all your environments (PROD, DEV, TEST, etc) in sync.  It can also be used to switch from your main [...]]]></description>
			<content:encoded><![CDATA[<h2>How to Unlock the HP Service Manager Database</h2>
<p>Moving your Service Manager (SM) database from one instance of the application to another is an important process for any SM developer/manager.  It can be used to keep your all your environments (PROD, DEV, TEST, etc) in sync.  It can also be used to switch from your main application server to a backup one with minimal downtime.</p>
<p>When SM is first installed, it creates a record (“scdb.system”) in the INFOOLDM1 table.  This record is tied back to the machine on which the install was originally performed.  This may cause problems if you copy or point the database to another instance.  Fortunately there is a parameter for SM that resets the scdb.system record.  This will basically remove the scdb.system record from the INFOOLDM1 table, and as a result, remove the potential for any machine name errors.</p>
<p>This command will also be useful to those who are using a cluster setup and have encountered scdb.system lock issues with one or more of the nodes trying to access the database.  By running this command, it will allow all the nodes access to the database information that they need, thus eliminating the errors.</p>
<p>Syntax:                        sm -unlockdatabase</p>
<p>Run Location:            RUN directory of the new install of SM 7.11 or higher</p>
<br/><a href="http://www.socialmarker.com/?link=http://www.stratacominc.com/unlocking-service-manager-database/&title=Unlocking+the+Service+Manager+Database&text=How+to+Unlock+the+HP+Service+Manager+Database+Moving+your+Service+Manager+%28SM%29+database+from+one+instance+of+the+application+to+another+is+an+important+process+for+any+SM+developer%2Fmanager.%26%23160%3B+It...&tags=database" target="_blank"><img src= "http://www.socialmarker.com/bookmark.gif" border="0" /></a><noscript><a href="http://www.socialmarker.com" >Social Bookmarking</a></noscript>]]></content:encoded>
			<wfw:commentRss>http://www.stratacominc.com/unlocking-service-manager-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding Conditions to a Link Record in HP Service Manager</title>
		<link>http://www.stratacominc.com/adding-conditions-link-record-hp-service-manager/</link>
		<comments>http://www.stratacominc.com/adding-conditions-link-record-hp-service-manager/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 14:18:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HP Service Manager 7.x]]></category>
		<category><![CDATA[Tech Tips]]></category>
		<category><![CDATA[hp service manager]]></category>
		<category><![CDATA[link record conditions]]></category>

		<guid isPermaLink="false">http://www.stratacominc.com/?p=370</guid>
		<description><![CDATA[How to add conditions to your link record.
Lets say that you always want to always keep the phone number that is entered by the user for a particular ticket regardless of what is in the contact record.  This may come about if you have a telephone number for a contact that is only applicable to [...]]]></description>
			<content:encoded><![CDATA[<p><strong>How to add conditions to your link record.</strong></p>
<p>Lets say that you always want to always keep the phone number that is entered by the user for a particular ticket regardless of what is in the contact record.  This may come about if you have a telephone number for a contact that is only applicable to that ticket.  Lets take a look at how to do this.</p>
<p>First we want to save the old values, so in the pre fill expressions we will add:</p>
<p><em>$save.field=field in $File;</em></p>
<p>We would repeat this step for all the fields we are going to check if they have changed.</p>
<p>Next we need to add the conditional expressions in the post fill expressions.  Don’t forget to cleanup your variables when you are finished:</p>
<p><em>if (field in $File ~= $save.field) then (field in $File=$save.field);</em></p>
<p><em>cleanup($save.field);</em></p>
<p>This will leave the fill value in the record unless it is different from the initial value, in which case it will replace the fill value with the saved value from the previous step.</p>
<p>Or you could use this technique to tie a particular type of telephone number to the priority of the ticket.  Lets use the office number for low priority, and the cell for high priority.  First we add variables in place of the “fill to” values (where the field on the form would usually be located) for all the phone numbers we might use.</p>
<p><em>fill to                 fill from</em></p>
<p><em>$work.num               contact.work.phone</em></p>
<p><em>$cell.num               contact.cell.phone</em></p>
<p>Then in the post fill expressions we need to add code to use the correct telephone number based on the value of priority (always cleanup your used variables)</p>
<p><em>if (priority in $File=”low”) then (contact.phone in $File=$work.num);</em></p>
<p><em>if (priority in $File=”high”) then (contact.phone in $File=$cell.num);</em></p>
<p><em>cleanup($work.num);cleanup($cell.num);</em></p>
<p>This same technique could be used in a variety of ways including conditional fill of other fields based on certain fill values or even modifying the values that are being generated by a fill.  Although the code we used is rather simple, it is powerful and indeed a valuable tool in Service Manager.</p>
<br/><a href="http://www.socialmarker.com/?link=http://www.stratacominc.com/adding-conditions-link-record-hp-service-manager/&title=Adding+Conditions+to+a+Link+Record+in+HP+Service+Manager&text=How+to+add+conditions+to+your+link+record.+Lets+say+that+you+always+want+to+always+keep+the+phone+number+that+is+entered+by+the+user+for+a+particular+ticket+regardless+of+what+is+in+the+contact...&tags=fill+expressions%2C+field%2C+priority%2C+contact%2C+phone%2C+number%2C+value" target="_blank"><img src= "http://www.socialmarker.com/bookmark.gif" border="0" /></a><noscript><a href="http://www.socialmarker.com" >Social Bookmarking</a></noscript>]]></content:encoded>
			<wfw:commentRss>http://www.stratacominc.com/adding-conditions-link-record-hp-service-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HP Service Manager web client &#8220;Read Only&#8221; fix</title>
		<link>http://www.stratacominc.com/hp-service-manager-web-client-read-fix/</link>
		<comments>http://www.stratacominc.com/hp-service-manager-web-client-read-fix/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 16:18:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HP Service Manager 7.x]]></category>
		<category><![CDATA[Tech Tips]]></category>
		<category><![CDATA[hp service manager]]></category>
		<category><![CDATA[read-only fields]]></category>
		<category><![CDATA[web client]]></category>

		<guid isPermaLink="false">http://www.stratacominc.com/?p=352</guid>
		<description><![CDATA[&#8220;Read-only&#8221; fields do not display in the web client
The following fix come directly from HP &#8211; there is a bug where read-only fields will not display correctly web clients.  Using the steps below should fix this problem:
Having problems with ‘read-only’ fields not displaying values and display lists correctly on your Web Client?
There is a hidden [...]]]></description>
			<content:encoded><![CDATA[<h2>&#8220;Read-only&#8221; fields do not display in the web client</h2>
<p>The following fix come directly from HP &#8211; there is a bug where read-only fields will not display correctly web clients.  Using the steps below should fix this problem:</p>
<pre>Having problems with ‘read-only’ fields not displaying values and display lists correctly on your Web Client?</pre>
<pre>There is a hidden fix for the 'read only' issue in the web client that involves modifying the ‘topaz.js’ file, which is located under the ‘\js’ directory in the Web-Tier folder structure (example: C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\webtier-7.11\js).</pre>
<pre>To fix the issue with ‘read-only’ fields not displaying values and display lists correctly on your Web Client, the following tasks must be done to resolve the issue.</pre>
<pre>1. Search for the following function</pre>
<pre>"function setComfillReadonly(field, sValue)"</pre>
<pre>in the topaz.js file.</pre>
<pre>You will see the following lines in this function:</pre>
<pre>if (dvdTrue(sValue))</pre>
<pre>{</pre>
<pre>field.style.display = "none";</pre>
<pre>field.style.visibility = "hidden";</pre>
<pre>fieldReadonly.style.display = "";</pre>
<pre>fieldReadonly.style.visibility = "";</pre>
<pre>2. After the line that executes:      fieldReadonly.style.visibility = "";</pre>
<pre>add the following line: fieldReadonly.value = field.value;</pre>
<pre>3. Then restart the Application Server (Tomcat, WAS, etc).</pre>
<br/><a href="http://www.socialmarker.com/?link=http://www.stratacominc.com/hp-service-manager-web-client-read-fix/&title=HP+Service+Manager+web+client+%26%238220%3BRead+Only%26%238221%3B+fix&text=%26%238220%3BRead-only%26%238221%3B+fields+do+not+display+in+the+web+client+The+following+fix+come+directly+from+HP+%26%238211%3B+there+is+a+bug+where+read-only+fields+will+not+display+correctly+web+clients.%26%23160%3B...&tags=fieldreadonly+style%2C+display%2C+style%2C+following" target="_blank"><img src= "http://www.socialmarker.com/bookmark.gif" border="0" /></a><noscript><a href="http://www.socialmarker.com" >Social Bookmarking</a></noscript>]]></content:encoded>
			<wfw:commentRss>http://www.stratacominc.com/hp-service-manager-web-client-read-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interactive Questions In Service Manager</title>
		<link>http://www.stratacominc.com/interactive-questions-service-manager/</link>
		<comments>http://www.stratacominc.com/interactive-questions-service-manager/#comments</comments>
		<pubDate>Mon, 17 May 2010 19:22:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HP Service Manager 7.x]]></category>
		<category><![CDATA[Implementation]]></category>
		<category><![CDATA[Tech Tips]]></category>
		<category><![CDATA[hp service manager]]></category>
		<category><![CDATA[interactive questions in service manager]]></category>

		<guid isPermaLink="false">http://www.stratacominc.com/?p=335</guid>
		<description><![CDATA[If your workflow is like most, you will more than likely have the necessity to ask questions at some point in the process.    Service Manager can make stopping a save process by interjecting user interaction a difficult process.

Since ServiceCenter 6.0 and the introduction of Service Manager, Javascript has been a great tool used to perform more complicated parts of system workflow and validations.  However, Javascript does still have some drawbacks.  Not all Javascript commands are available for use within Javascript.    Even though you may be able to write valid Javascript to call an interactive functions and/or RAD applications in Service Manager,  any interactive calls are likely to crash your Service Manager client application.  Because of this limitation, Javascript cannot be used to solicit user information in the validations on the format control.]]></description>
			<content:encoded><![CDATA[<h2>How to Create and Use Interactive Questions</h2>
<p>If your workflow is like most, you will more than likely have the necessity to ask questions at some point in the process.    Service Manager can make stopping a save process by interjecting user interaction a difficult process.</p>
<p>Since ServiceCenter 6.0 and the introduction of Service Manager, Javascript has been a great tool used to perform more complicated parts of system workflow and validations.  However, Javascript does still have some drawbacks.  Not all Javascript commands are available for use within Javascript.    Even though you may be able to write valid Javascript to call an interactive functions and/or RAD applications in Service Manager,  any interactive calls are likely to crash your Service Manager client application.  Because of this limitation, Javascript cannot be used to solicit user information in the validations on the format control.</p>
<p>There are many solutions to this.  Each solution has a number of pros and cons associated with it.  The key with any of the solutions is to intercept the save process prior to entering the normal processing.</p>
<h2>Part I:  Surveying the Solutions</h2>
<h3>Create a Wizard</h3>
<p>If your process requires more than a single piece of information collected from your user, or your process has information that needs to be presented with visual formatting, creating a wizard may be the best alternative.  Wizards may have one or more screens as well as a series of screens and information presented to the user.  Additionally, wizards have the capability to perform branching, requesting dynamic content and even presenting process around cancelling from a wizard.</p>
<div id="attachment_341" class="wp-caption alignleft" style="width: 624px"><a href="http://www.stratacominc.com/wp-content/uploads/2010/05/create-wizard-hp-sm.jpg"><img class="size-large wp-image-341 " title="create-wizard-hp-sm" src="http://www.stratacominc.com/wp-content/uploads/2010/05/create-wizard-hp-sm-1024x522.jpg" alt="" width="614" height="313" /></a><p class="wp-caption-text">Create Wizard HP SM (click for full size)</p></div>
<p>The screen shot above illustrates a set of out of the box wizards that can be used when a user rejects a change.  Wizards may view information from one or more files, run embedded code, Javascript and call formatctrl.  Wizards offer a great amount of flexibility for complex solutions.  However, this may not be the best choice for simpler needs.</p>
<h2>Out Of Box RAD Applications</h2>
<p>Service Manager features a number of RAD applications that can request information from a user and return that data to the application.</p>
<p>Each application has subtle differences in the functionality and returned data or values.  For our example, we are going to use the RAD application, object.yes.no to pose a question with a Yes or No reply to the user.</p>
<p>The object.yes.no takes several parameters:</p>
<ul>
<li>The first is the text parameter.  Text contains the data or prompt to be presented to the user.</li>
<li> The boolean1 value identifies whether the cancel button will be available as an option.  Acceptable values for this are true or false.</li>
<li>The prompt parameter contains the name of a Service Manager variable that will hold the response coming from this call.</li>
</ul>
<div id="attachment_337" class="wp-caption alignleft" style="width: 624px"><a href="http://www.stratacominc.com/wp-content/uploads/2010/05/RAD-object-yes-no-hp-sm.jpg"><img class="size-large wp-image-337" title="RAD-object-yes-no-hp-sm" src="http://www.stratacominc.com/wp-content/uploads/2010/05/RAD-object-yes-no-hp-sm-1024x280.jpg" alt="" width="614" height="168" /></a><p class="wp-caption-text">RAD Object Yes/No (Click for full size)</p></div>
<p>The example above is being called from a Process record.  Object.yes.no will only be called if there is data to be presented to the user, which is contained in the Service Manager variable $question.  Since boolean1 is false, cancelling from this function is not an option.  Lastly, the users response will be returned from object.yes.no through the Service Manager variable $returncode.</p>
<h2>Place a Temporary Field on the Form</h2>
<p>In some situations where screen real estate is not an issue and where you do not want to annoy the user with extra screen pops every time they perform an action, a field can be placed on the form that can initiate additional code at save time or can even stop or abort the process.</p>
<p>Several examples are illustrated below.</p>
<p><a href="http://www.stratacominc.com/wp-content/uploads/2010/05/notify-owner-hp-sm.jpg"><img class="alignleft size-full wp-image-339" title="notify-owner-hp-sm" src="http://www.stratacominc.com/wp-content/uploads/2010/05/notify-owner-hp-sm.jpg" alt="" width="149" height="39" /></a></p>
<p>Notify Owner can initiate notification processing when the ticket is saved.  The value behind the field can be a stored value in the database or can be provided as an interim transient value that disappears every time it is used.</p>
<p><a href="http://www.stratacominc.com/wp-content/uploads/2010/05/close-ticket-hp-sm.jpg"><img class="alignleft size-full wp-image-338" title="close-ticket-hp-sm" src="http://www.stratacominc.com/wp-content/uploads/2010/05/close-ticket-hp-sm.jpg" alt="" width="374" height="102" /></a></p>
<p>Fields presented on tickets may have DEFAULT values, be required entry or may indicate optional workflow.  This field, when selected, would perform the additional workflow needed to complete and close the ticket.</p>
<h2>Which Solution is best?</h2>
<p>Each one of these solutions is equally valid and useful.  Which solution is best for your particular situation depends on your specific design and process needs.  Some things to think about when selecting a solution:</p>
<ul>
<li>Do you want to prevent the user from taking an action until data is collected?</li>
<li>Do you want to respond to a users action?</li>
<li>Do you want to perform additional processing when an action is selected?</li>
</ul>
<h1>Part II:  Where to Implement</h1>
<p>Now that our process has directed us to one or more solutions, where does the solution get implemented in Service Manager to cause the least amount of disruption to the existing system?   Because of the interactive nature of  the data being requested, none of the calls below may be made through Javascript.   Some of the solutions below may be combined to implement the best solution.</p>
<h2>Format Control</h2>
<p>If the solution requires a response before an action is taken (add, update, close) and the solution utilizes values on the form, format control may be the best location.  Format Control can perform calculations on values, perform validation on a value or require additional validations dependent on data in other fields.</p>
<p>Format Control does not work well as a vehicle to conditionally prompt the user and alter workflow in the save process based on the user’s response.</p>
<h2>Process</h2>
<p>Service Manager Process records offer an excellent place to call conditional workflow.  A Process may execute its own expressions and Javascript and may call one or more RAD applications in a single Process.  These records offer excellent methods of gathering information and acting on the answers.  Processes may call RAD applications (object.yes.no) and/or may call wizards to perform additional processing.</p>
<p>Additionally, Processes may call other Processes and be linked together as required.  Inserting a line into the beginning or the middle of an existing process may prove irritating.  There is no insert command so each set of information below the insertion point would need to be moved by hand.  Or, the new Process may be added as an additional record that calls the existing one.  Be forewarned.  If you choose to place your Process in front of another process, all calls to the original process will also need to be adjusted and changed.</p>
<p>Another option for implementing as a Process is to implement the call to your Process as a callout from your displayoption.  Read on for how to deploy a Process via a Displayoption.</p>
<h2>DisplayOption</h2>
<p>Display Options are invoked when a user presses a button or other type of event in Service Manager (eg: save).  The display option may be self-contained or in turn execute a display action that invokes a Process.  However, the display option may also call a single RAD application to perform some processing prior to execution of outside instructions.  The result of any expressions or code executed as part of the display option may be used to alter the display action that is executed.</p>
<p>Display options may call any RAD application so it is also perfectly valid to invoke a wizard or interactive message box RAD application from here as well.  The screen below illustrates the calling of a process from within a display option.</p>
<div id="attachment_340" class="wp-caption alignleft" style="width: 624px"><a href="http://www.stratacominc.com/wp-content/uploads/2010/05/chang-display-option-RAD-hp-sm.jpg"><img class="size-large wp-image-340 " title="chang-display-option-RAD-hp-sm" src="http://www.stratacominc.com/wp-content/uploads/2010/05/chang-display-option-RAD-hp-sm-1024x393.jpg" alt="" width="614" height="236" /></a><p class="wp-caption-text">Change Display Option (click for full size)</p></div>
<p>The example above shows a Change Display option that is calling a Process (my.message.functions) to request user interaction.  Once the Process is complete, control will be passed back to this display option.  If all has gone well, the intent it to execute the “save” display action in the upper right corner.</p>
<div id="attachment_336" class="wp-caption alignleft" style="width: 421px"><a href="http://www.stratacominc.com/wp-content/uploads/2010/05/save-display-option-hp-sm.jpg"><img class="size-full wp-image-336" title="save-display-option-hp-sm" src="http://www.stratacominc.com/wp-content/uploads/2010/05/save-display-option-hp-sm.jpg" alt="" width="411" height="91" /></a><p class="wp-caption-text">Save Display Option (click for full size)</p></div>
<p>On the post expressions tab, the variable $returncode that was set in our process is being checked.  If the user answered yes, the save is aborted by modifying our display action.</p>
<h1>Putting It All Together</h1>
<p>Now you have seen how different solutions and implementations may be used to assist in the deployment of interactivity in Service Manager.  A solution may not offer the desired results in every situation so it is beneficial to know multiple ways to deploy eloquent solutions.</p>
<br/><a href="http://www.socialmarker.com/?link=http://www.stratacominc.com/interactive-questions-service-manager/&title=Interactive+Questions+In+Service+Manager&text=How+to+Create+and+Use+Interactive+Questions+If+your+workflow+is+like+most%2C+you+will+more+than+likely+have+the+necessity+to+ask+questions+at+some+point+in+the+process.%26%23160%3B%26%23160%3B%26%23160%3B+Service...&tags=service+manager%2C+the+user%2C+format+control%2C+process%2C+display%2C+caption%2C+manager%2C+service%2C+option" target="_blank"><img src= "http://www.socialmarker.com/bookmark.gif" border="0" /></a><noscript><a href="http://www.socialmarker.com" >Social Bookmarking</a></noscript>]]></content:encoded>
			<wfw:commentRss>http://www.stratacominc.com/interactive-questions-service-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuring Service Manager 7.x Knowledge Management</title>
		<link>http://www.stratacominc.com/configuring-service-manager-7x-knowledge-management/</link>
		<comments>http://www.stratacominc.com/configuring-service-manager-7x-knowledge-management/#comments</comments>
		<pubDate>Mon, 10 May 2010 20:17:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HP Service Manager 7.x]]></category>
		<category><![CDATA[Tech Tips]]></category>
		<category><![CDATA[configuring knowledge managment]]></category>
		<category><![CDATA[HP KM 7]]></category>
		<category><![CDATA[HP Knowledge mangement]]></category>

		<guid isPermaLink="false">http://www.stratacominc.com/?p=330</guid>
		<description><![CDATA[NOTE: This document lays out, in depth, the inner workings of the Knowledge Module setup in Service Manager 7. The document covers how to perform a Full Reindex on your existing Knowledge Bases in the Service Manager system (as the process for this has been modified in the Service Manager 7 system). This document also explains all of the background items that are used to do this.

Pre discussion Notes:

    *  There is a table named “kmknowledgebaseupdates” in SM 7 that holds a record of all Knowledge Article updates and new Knowledge articles added (and will also temporarily hold new records that get added in when a Full Reindex is done – then these are deleted back out once the “KMUpdate” schedule record wakes up and fires the Javascript responsible for committing the KnowledgeBase indexes and deleting the records out in this table… See the discussions below for more details on this).
    * What happens is when the “KMUpdate” schedule record goes in and re-indexes the knowledge articles, it goes into the records held in this table named “kmknowledgebaseupdates” (via the Javascripts that get invoked by his schedule record), indexes the knowledge articles referred to in these records, and removes these records from the “kmknowledgebaseupdates” table once that happens (This is all new in Service Manager 7).]]></description>
			<content:encoded><![CDATA[<h2><strong><span style="text-decoration: underline;">Knowledge Management Fundamentals in Service Manager 7</span></strong>:</h2>
<p>NOTE: This document lays out, in depth, the inner workings of the Knowledge Module setup in Service Manager 7. The document covers how to perform a Full Reindex on your existing Knowledge Bases in the Service Manager system (as the process for this has been modified in the Service Manager 7 system). This document also explains all of the background items that are used to do this.</p>
<p>Pre discussion Notes:</p>
<ul>
<li> There is a table named “kmknowledgebaseupdates” in SM 7 that holds a record of all Knowledge Article updates and new Knowledge articles added (and will also temporarily hold new records that get added in when a Full Reindex is done – then these are deleted back out once the “KMUpdate” schedule record wakes up and fires the Javascript responsible for committing the KnowledgeBase indexes and deleting the records out in this table… See the discussions below for more details on this).</li>
<li>What happens is when the “KMUpdate” schedule record goes in and re-indexes the knowledge articles, it goes into the records held in this table named “kmknowledgebaseupdates” (via the Javascripts that get invoked by his schedule record), indexes the knowledge articles referred to in these records, and removes these records from the “kmknowledgebaseupdates” table once that happens (<strong><em><span style="text-decoration: underline;">This is all new in Service Manager 7</span></em></strong>).</li>
</ul>
<p><strong>Section</strong><strong> I.</strong><strong> Performing a Full Reindex of Your Knowledge Bases in Service Manager 7:</strong></p>
<p><strong> </strong></p>
<p>***With the above notes in Mind, this is how you would <strong><em><span style="text-decoration: underline;">manually</span></em></strong> perform a one time, Full Re-index of any knowledgebase in the system***:</p>
<p>1.)    Go to the “Menu Navigation”  &gt; “Knowledge Management” section on the Left Hand Side in the System Navigator and double click “Manage Updates”. Then click “Stop” on this form. This stops the “KMUpdate” schedule record from running (this is the record that indexes the knowledgebase articles automatically in the background).</p>
<p>2.)    Then! Go to the “kmknowledgebaseupdates” table in the database manager and <strong><em><span style="text-decoration: underline;">remove</span></em></strong> (delete) any records there.</p>
<p>3.)    Go to the “Menu Navigation” &gt; “Knowledge Management” section on the Left Hand Side in the System Navigator and double click “Manage Knowledgebases”. Do a Search and go to the Knowledge Base you want to full reindex (Make sure you do <strong><em><span style="text-decoration: underline;">NOT</span></em></strong> have the Capability word named “AlwaysAdmin” in the operator record you are logging into the system with in order to have the Full Reindex Button not greyed out for these Knowledge Bases).</p>
<p>4.)    Click the “Full Reindex” button and the “Docs Returned” may say 0 actually, this is normal. ***What happens here then is the number of docs that are in this Knowledgebase will create the SAME NUMBER of records in the “kmknowledgebaseupdates” table à These then will need to be processed by the Javascript that gets fired by the “KMUpdate” schedule record that wakes up in step 5.).</p>
<p>5.)    Go Back to the “Manage Updates” screen (from step 1) and start back up the “KMUpdate” schedule record then (By clicking the “Start” button on this form). See Below now for additional notes on this:</p>
<p>Ok, so when you go to the “Manage Updates” section and click Start (this is if the “KMUpdate” schedule record needs to be restarted and it isn’t already up and running), you will see stats there about what is happening (Note – Clicking “Start” on this screen starts up the “KMUpdate” schedule record and this is how the knowledgebases are automatically reindexed in the background). You can click “Refresh” and see the knowledge docs that it is going through (NOTE!!! It will process ALL “kmknowledgebaseupdates” table records by indexing the knowledge articles referred to in these records and then deleting these records out of this table. It does this in 500 record increments until they are all processed &gt; It looks to hang at 500 record increments &gt; This is because if you go into the “kmknowledgebaseupdates” table and keep refreshing the record count, it is deleting these records slowly until it gets to the 500 it needs to delete and then the next 500 are processed till they are all gone).</p>
<p>NOTE! That this is the ONLY way to Fully Reindex your knowledgebases now in Service Manager 7… Steps 1.) – 5.) above have to be performed and then the KMUpdate sch record comes in and the Javascript it fires processes these “kmknowledgebaseupdates” table records and indexes the knowledge articles.</p>
<p>NOW! <strong><span style="text-decoration: underline;">After</span></strong> this initial full re index discussed above in steps 1.) – 5.) is performed, <strong><span style="text-decoration: underline;">only updates to existing knowledge articles and newly added knowledge articles will be stored in the “kmknowledgebaseupdates” table</span></strong> and then ONLY these records get processed by the “KMUpdate” schedule record – This is the case until another Full Re-Index of the Knowledgebase is performed by following steps 1.) – 5.) above.</p>
<p>LASTLY NOTE! The web services tier now (setup in the KM environment record à If this isn’t setup right in this environment record, it all fails), is responsible for using the WSDL (created by the “kmknowledgebaseupdates” “extaccess” table record à This record has the “delete” function here that is used by the system to delete out these “kmknowledgebaseupdates” table records once they have been indexed) to delete out the “kmknowledgebaseupdates” table records once they have been processed…</p>
<h2><strong>Section II. Sum It All Up:</strong></h2>
<p>So in sum, here’s how the “KMUpdate” schedule record works:</p>
<p>1.)    KMUpdate schedule record wakes up every 5 minutes and fires its Javascript.</p>
<p>2.)    The Javascript fired goes into the “kmknowledgebaseupdates” table and indexes EACH knowledge record that is referred to in each record in this table.</p>
<p>3.)    And at 500 record intervals, each of these “kmknowledgebaseupdates” table records is deleted out (via this web services tier used now – see the section below for a further discussion on this).</p>
<p>4.)    NOTE! If you want to perform a full reindex on any of your knowledgebases in SM 7… Perform steps 1.) – 5.) above in the beginning of this document and then let the “KMUpdate” sch record do the rest… This takes a while and you can monitor the progress of this in the “Manage Updates” link discussed above. You will be able to see the records in the “kmknowledgebaseupdates” table go down slowly as this processes happens (and only you will see this happening when the “Manage Updates” window appears that is has stuck at 500 record increments). After EACH run of this sch record, the “kmknowledgebaseupdates” table should have no records in it or something wrong has happened… FYI</p>
<h2><strong>Section III. Further Notes and KM Environment Record Setup:</strong></h2>
<p><strong> </strong></p>
<p>Further Notes About the Above:</p>
<p>1.)    Now! Web Services in Service Manager 7 is responsible for the deletion of the “kmknowledgebaseupdates” table records in the process explained above (so these records are deleted out of this table once the knowledge articles have been indexed). This is why the user <strong><em><span style="text-decoration: underline;">and</span></em></strong> port number has to be correct for this web services piece on the KM environment record (see screenshot below on the KM environment record in a mock system). The user specified in the environment record below must have web services access by having the “SOAPAPI” capability word. The port number (13081 in the screenshot below) will be pointed at a servlet that should be started up <strong><em><span style="text-decoration: underline;">just for the web services connection</span></em></strong> (If a Load Balancer is setup, extra steps will have to be taken to not have any other traffic directed to that servlet that has been started for this web services connection à There are ini file params for starting up this separate servlet that are not noted here)!</p>
<p>2.)    In the discussion above in Section I, it explains the form that you will see when going to “Manage Updates”. When you click the “Refresh” button on this thing, it will get to increments of 500 records and look to stop temporarily and hang à That’s because at the 500 mark, the process “Commits to the Search Engine and writes the indexes for these knowledge articles” and these 500 are then removed at this point from the “kmknowledgebaseupdates” table and you can see the number of records going down in this table if you go to the records in that table and keep refreshing the Search and count (and again note that the Web Services Connection is for just this deletion of these records once the knowledge articles have been indexed).</p>
<p>3.)    Note! There is a record out there in the “extaccess” table (name: kmknowledgebaseupdates) that should have a delete call in it à This is how the WSDL is constructed that the Knowledge Process uses to delete records out of the “kmknowledgebaseupdates” table when the time comes to do this in the process.</p>
<p>Example of a correctly setup Environment Record For SM 7 Knowledge Management:</p>
<div id="attachment_331" class="wp-caption alignleft" style="width: 310px"><a href="http://www.stratacominc.com/wp-content/uploads/2010/05/HP-SM7-Knowledge-Management-Environment-Record.jpg"><img class="size-medium wp-image-331" title="HP-SM7-Knowledge-Management-Environment-Record" src="http://www.stratacominc.com/wp-content/uploads/2010/05/HP-SM7-Knowledge-Management-Environment-Record-300x186.jpg" alt="" width="300" height="186" /></a><p class="wp-caption-text">SM 7 Knowledge Management Environment Record (click for large size)</p></div>
<br/><a href="http://www.socialmarker.com/?link=http://www.stratacominc.com/configuring-service-manager-7x-knowledge-management/&title=Configuring+Service+Manager+7.x+Knowledge+Management&text=Knowledge+Management+Fundamentals+in+Service+Manager+7%3A+NOTE%3A+This+document+lays+out%2C+in+depth%2C+the+inner+workings+of+the+Knowledge+Module+setup+in+Service+Manager+7.&tags=the+%E2%80%9Ckmknowledgebaseupdates%E2%80%9D%2C+schedule+record%2C+record%2C+table%2C+records%2C+knowledge" target="_blank"><img src= "http://www.socialmarker.com/bookmark.gif" border="0" /></a><noscript><a href="http://www.socialmarker.com" >Social Bookmarking</a></noscript>]]></content:encoded>
			<wfw:commentRss>http://www.stratacominc.com/configuring-service-manager-7x-knowledge-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HP Service Manager Service Catalog User Selections</title>
		<link>http://www.stratacominc.com/hp-service-manager-service-catalog-user-selections/</link>
		<comments>http://www.stratacominc.com/hp-service-manager-service-catalog-user-selections/#comments</comments>
		<pubDate>Mon, 03 May 2010 15:45:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HP Service Manager 7.x]]></category>
		<category><![CDATA[Tech Tips]]></category>
		<category><![CDATA[hp service manager]]></category>
		<category><![CDATA[Service Catalog]]></category>
		<category><![CDATA[User Selections]]></category>

		<guid isPermaLink="false">http://www.stratacominc.com/?p=318</guid>
		<description><![CDATA[Now for the fun part! If you have used Service Catalog before, then you already know the ease with which you can setup these Service Catalog Items and make them available to your end users for requesting. However, with this ease comes a few issues. Sure, we can setup our “User Selections” for these Service Catalog items with ease, but with this comes the sheer fact that you cannot report on these “User Selections,” you cannot kick these “Users Selections” back to your infrastructure support teams on emails, and generally, these “User Selections” will exist in a virtual vacuum of sorts in that they are confined to the Request record (or whatever record you are using to procure your service catalog requests) in which they reside.

Well, there is a solution to this problem! With the use of Javascript we can take any of these fields from the “User Selections” and place them into actual fields on the record you are using to procure your Service Catalog Item requests. See the technical section below for information on how to do this inside of Service Manager.]]></description>
			<content:encoded><![CDATA[<h2>Service Catalog User Selections: Placing them into Actual Fields</h2>
<p>In Service Manager, have you ever run into a need to make your “User Selections” on your Service Catalog Items actually useable? The article content below will lay out an overview of Service Catalog Item “User Selections” and how you can use Javascript to make good use out these user selections.</p>
<p>“User Selections” on the Service Catalog Item. What are they? Simply put, in Service Manager, if you use the Service Catalog to allow your end users to request certain items, they have the ability to fill out a small set of fields that will contain information concerning the Service Catalog Item they are requesting. These fields that contain this user driven information are known as the Service Catalog’s “User Selections.”</p>
<p>So what? What do these “User Selections” have to do with me and my Service Manager System you might ask? Well, we as Service Manager programmers have the ability to code our Service Catalog Items to easily open Request records (of specific Request Categories) in order to procure these Service Catalog Item Requests made by our end users. So, simply speaking, we can open Request Tickets for our end user Service Catalog Item Requests that will carry the info they provide to us in these “User Selections.”</p>
<p>Now for the fun part! If you have used Service Catalog before, then you already know the ease with which you can setup these Service Catalog Items and make them available to your end users for requesting. However, with this ease comes a few issues. Sure, we can setup our “User Selections” for these Service Catalog items with ease, but with this comes the sheer fact that you cannot report on these “User Selections,” you cannot kick these “Users Selections” back to your infrastructure support teams on emails, and generally, these “User Selections” will exist in a virtual vacuum of sorts in that they are confined to the Request record (or whatever record you are using to procure your service catalog requests) in which they reside.</p>
<p>Well, there is a solution to this problem! With the use of Javascript we can take any of these fields from the “User Selections” and place them into actual fields on the record you are using to procure your Service Catalog Item requests. See the technical section below for information on how to do this inside of Service Manager.</p>
<p>Now for the technical part:</p>
<p>If, for example, you are using Request (ocmq) records to procure your Service Catalog Item Requests, you already know that the “User Selections” are all held in one field on the Request (ocmq) record named “svc.options.” This field holds these “User Selections” in an xml based format so that, when placed inside the context of a dynamic form on the request record, the user selections can be properly displayed to the user viewing the record. That’s nice, however, this does not allow us to have access to those “User Selections” for reporting, email reporting etc. (unless you want to kick back the nasty svc.options field to your users on reports and emails! But nobody wants to do that!).</p>
<p>So, below <strong><em><span style="text-decoration: underline;">is an example</span></em></strong> of a block of Javascript that can be used to go into any part of this “svc.options” field to grab out a field value and place that value into any existing field on the ocmq record. Please note, <strong><em><span style="text-decoration: underline;">for this specific example</span></em></strong>, that the content in the svc.options field on the actual ocmq record is as follows (and also note that this is a real life example of the svc.options field belonging to an ocmq record that was opened from a Service Catalog Item Request that held “User Selections”. Those “User Selections,” in this example, are held in the svc.options field inside of the ocmq record seen below):</p>
<pre><code>&gt;d svc.options in $L.file
&lt;form&gt;&lt;text id="vwdateneeded" label="Date and Time of Termination :*"&gt;4-4-09 1:30 PM&lt;/text&gt;&lt;select id="vwpriority" label="Priority :*" style="combo"&gt;Emergency&lt;option label="" /&gt;&lt;option id="0" label="Standard"&gt;Standard&lt;/option&gt;&lt;option id="1" label="Emergency"&gt;Emergency&lt;/option&gt;&lt;/select&gt;&lt;select id="vwemployeetype" label="Employee Type :*" style="combo"&gt;Permanent&lt;option label="" /&gt;&lt;option id="0" label="Permanent"&gt;Permanent&lt;/option&gt;&lt;option id="1" label="Temporary"&gt;Temporary&lt;/option&gt;&lt;option id="2" label="Consultant"&gt;Consultant&lt;/option&gt;&lt;/select&gt;&lt;text id="vwreportsto" label="Reports To :*"&gt;Test Manager&lt;/text&gt;&lt;select id="vwtypeoftetermination" label="Type of Termination :*" style="combo"&gt;VCI Termination&lt;option label="" /&gt;&lt;option id="0" label="VCI Termination"&gt;VCI Termination&lt;/option&gt;&lt;option id="1" label="Transfer Out Of VCI Domain"&gt;Transfer Out Of VCI Domain&lt;/option&gt;&lt;/select&gt;&lt;text id="vwmycomments" label="Comments *:" multiline="true"&gt;This is a Test &amp;#xD;
This is a Test&amp;#xD;
This is a Test&lt;/text&gt;&lt;/form&gt;</code></pre>
<p><em>***Editorial note &#8211; the line above needs to stay formatted as displayed for this to work correctly.  Unfortunately the line above does not wrap and is displayed under part of the content bars on the right.  If you would like to receive the full code for this particular item please email lwalker@stratacominc.com.</em></p>
<p>As you can see, this is an ugly field value to say the least! So, the below javascript is an example of how we can pull out a value in one of these “User Selections” and place it into an actual field on the ocmq record (and then we will have access to report on this field and kick it back to our users in emails as well!). Please note that you would place this block of Javascript below into the next available Javascript box in the actual Javascript section of the “ocmq” format control (Add and Update Conditions for this specific example are: category in $file=&#8221;sarterm&#8221;). This means that when an ocmq record is opened or updated and has a value of “sarterm” in the actual “category” field, this Javascript will fire on add and update. Again, this is just for our example here, but this Javascript can be applied (with modification of course to point to the right area in the svc.options field) to any instance where a User Selection must be dragged out and placed into a field on the record. Now for the script:</p>
<pre><code>//Begin Script

//Grab the current ocmq File
var file = system.vars.$file;

//Grab the svc.options field out of the ocmq record
var holdSvcOptions = file.svc_options;

//Use Basic String Functions in Javascript to Grab out the String for
//the vwreportsto field user selection.
var positionofManager = holdSvcOptions.indexOf('vwreportsto');

var grabManagerCutUp = holdSvcOptions.substring(positionofManager);

var grabManGreaterThanSymbolPos = grabManagerCutUp.indexOf('&gt;');

var grabManCutUpFurther = grabManagerCutUp.substring(grabManGreaterThanSymbolPos);

var grabManLessThanSymbolPos = grabManCutUpFurther.indexOf('&lt;');

var myManager = grabManCutUpFurther.substring(1,grabManLessThanSymbolPos);

//Place that String into our actual manager field on the ocmq record
file.manager = myManager;

//End Script
</code></pre>
<p>In Summary, you can see above that we are keying off of the value that is in the “vwreportsto” “User Selection” (inside of the svc.options field on the ocmq record) and we are dragging that value out (via basic string manipulation functions in Javascript) and placing that value into the actual “manager” field on the ocmq record (the last line in the javascript does this). So this means, for our example, that when our end user goes and requests a Service Catalog Item that opens a Request (ocmq) record of category “sarterm”, this block of code will fire on Add and Update to pull the correct “User Selection” out and place it into an actual field on the ocmq record.</p>
<p>***Now, what if we want to drag out the contents of a <strong><em><span style="text-decoration: underline;">multi text field</span></em></strong> from our User Selections and place that into an array field on our ocmq record? Below is a Block of Code that will extract the contents of a multi text User Selection from the same “svc.options” field shown above and place that into <strong><em><span style="text-decoration: underline;">an array field</span></em></strong> on the ocmq record. Please again note that you would place this block of Javascript below into the next available Javascript box in the actual Javascript section of the ocmq format control (Add and Update Conditions <strong><em><span style="text-decoration: underline;">for this example are</span></em></strong>: category in $file=&#8221;sarterm&#8221;). Please also note that the section of that svc.options field (from above) we will be referring to in this block of Javascript code is:</p>
<pre><code>…&gt;&lt;/select&gt;&lt;text id="vwmycomments" label="Comments *:" multiline="true"&gt;This is a Test &amp;#xD;
This is a Test&amp;#xD;
This is a Test&lt;/text&gt;&lt;/form&gt;</code></pre>
<p>And now the Javascript is below. Again, the Javascript will pull out the multi text user selection field value (for the field named “vwmycomments”) and place that value into an array field named “description” on the actual ocmq record. Note the use of the Javascript based “split()” function as this takes the contents of the multi text user selection and packages it into a useable array that can then be placed into the “description” field on the ocmq record:</p>
<pre><code>//Begin Script

//Grab the current ocmq File
var file = system.vars.$file;

//Grab the svc.options field out of the ocmq record
var holdSvcOptions = file.svc_options;

//Use Basic String Functions in Javascript to Grab out the Value for
//the multitext vwmycomments field user selection.
var positionofDesc = holdSvcOptions.indexOf('vwmycomments');

var grabDescCutUp = holdSvcOptions.substring(positionofDesc);

var grabDescGreaterThanSymbolPos = grabDescCutUp.indexOf('&gt;');

var grabDescCutUpFurther = grabDescCutUp.substring(grabDescGreaterThanSymbolPos);

var grabDescLessThanSymbolPos = grabDescCutUpFurther.indexOf('&lt;');

var myDesc = grabDescCutUpFurther.substring(1,grabDescLessThanSymbolPos);

//Take the multi text value you just grabbed and package it into an //array
var x = myDesc.split("&amp;#xD;");
//Place that array into the description field on the ocmq record.
file.description = x;

//End Script</code></pre>
<p>Please again note that, for this example, if an End User Selects a Service Catalog Item that fires a Request (ocmq) record of category “sarterm” then this block of code will fire and the contents of the User Selection we choose in this code (in this case it’s the contents of the user selection named “vwmycomments”) will be placed in the actual ocmq field we choose as well (in this case we place this info into the “description” field on the ocmq record).</p>
<p>How are these two blocks of Javascript code from above helpful? The answer is simple in that we are able to extract the “User Selections” we choose form the “svc.options” field and place these values into actual fields on the ocmq record (or whatever record you are using to procure you Service Catalog Item Requests). This allows us to then report on these fields, kick these fields back to users on emails, and generally have full availability to these fields at all times.</p>
<br/><a href="http://www.socialmarker.com/?link=http://www.stratacominc.com/hp-service-manager-service-catalog-user-selections/&title=HP+Service+Manager+Service+Catalog+User+Selections&text=Service+Catalog+User+Selections%3A+Placing+them+into+Actual+Fields+In+Service+Manager%2C+have+you+ever+run+into+a+need+to+make+your+%26%238220%3BUser+Selections%26%238221%3B+on+your+Service+Catalog+Items+actually...&tags=the+ocmq%2C+service+catalog%2C+the+actual%2C+field%2C+record%2C+service%2C+javascript%2C+%E2%80%9Cuser%2C+catalog%2C+these" target="_blank"><img src= "http://www.socialmarker.com/bookmark.gif" border="0" /></a><noscript><a href="http://www.socialmarker.com" >Social Bookmarking</a></noscript>]]></content:encoded>
			<wfw:commentRss>http://www.stratacominc.com/hp-service-manager-service-catalog-user-selections/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notifications in HP Service Manager 7.x</title>
		<link>http://www.stratacominc.com/notifications-service-manager/</link>
		<comments>http://www.stratacominc.com/notifications-service-manager/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 11:43:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Consultant Blog]]></category>
		<category><![CDATA[HP Service Manager 7.x]]></category>
		<category><![CDATA[Tech Tips]]></category>
		<category><![CDATA[notifications]]></category>
		<category><![CDATA[service manager]]></category>

		<guid isPermaLink="false">http://blogs.stratacominc.com/?p=64</guid>
		<description><![CDATA[Out of the box, ServiceCenter/Service Manager is configured to send notifications at all of the touch points of the record lifecycle.  There are notifications for Open, Update and Close.  Additionally Change notifications include many notifications for Approval workflow.  These base notifications are called from the Object record for the file you are working on.]]></description>
			<content:encoded><![CDATA[<h2 style="text-align: left;">Notifications in Service Manager 7.1/ServiceCenter</h2>
<p>The Notification Engine is primarily responsible for sending messages that are generated by HP ServiceCenter and Service Manager events, such as opening or closing a change or task. Administrators can edit these messages, add new messages, change the conditions that trigger the messages, and select who will receive the messages.</p>
<p>The foundation for the Notification Engine is strong and robust, allowing many different types of notifications to be generated.   The Notification file stores the definitions of the who, what, where, when and how of the notifications.  This file works in conjunction with the message file to define headers for common system events. Arguments are passed to the pre-defined messages and substituted allowing for unique subject lines for each message. </p>
<p>Out of the box, ServiceCenter/Service Manager is configured to send notifications at all of the touch points of the record lifecycle.  There are notifications for Open, Update and Close.  Additionally Change notifications include many notifications for Approval workflow.  These base notifications are called from the Object record for the file you are working on.</p>
<p>In addition to the base ServiceCenter notifications, notifications may be automatically generated from other triggers, such as the addition of an activity record or by custom methods or scripts and calling the notification engine directly.  This allows for an endless number of notifications to be generated.</p>
<br/><a href="http://www.socialmarker.com/?link=http://www.stratacominc.com/notifications-service-manager/&title=Notifications+in+HP+Service+Manager+7.x&text=Notifications+in+Service+Manager+7.1%2FServiceCenter+The+Notification+Engine+is+primarily+responsible+for+sending+messages+that+are+generated+by+HP+ServiceCenter+and+Service+Manager+events%2C+such+as...&tags=notifications%2C+messages" target="_blank"><img src= "http://www.socialmarker.com/bookmark.gif" border="0" /></a><noscript><a href="http://www.socialmarker.com" >Social Bookmarking</a></noscript>]]></content:encoded>
			<wfw:commentRss>http://www.stratacominc.com/notifications-service-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alerts in HP ServiceCenter/HP Service Manager</title>
		<link>http://www.stratacominc.com/alerts-hp-servicecenterhp-service-manager/</link>
		<comments>http://www.stratacominc.com/alerts-hp-servicecenterhp-service-manager/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 13:19:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Consultant Blog]]></category>
		<category><![CDATA[HP Service Manager 7.x]]></category>
		<category><![CDATA[Tech Tips]]></category>
		<category><![CDATA[alerts]]></category>
		<category><![CDATA[hp service manager]]></category>
		<category><![CDATA[HP ServiceCenter alerts]]></category>

		<guid isPermaLink="false">http://blogs.stratacominc.com/?p=58</guid>
		<description><![CDATA[Alerts
ServiceCenter has provided very robust and in-depth tools to produce Alerts and Notifications to users based on system events.  Alerts allow an organization to define known conditions, which could automatically produce some action on the ticket, such as escalating the ticket, changing the severity, notifications, etc.
The ServiceCenter Alert Definitions, Schedule and Notification files all work [...]]]></description>
			<content:encoded><![CDATA[<h2 style="text-align: left;">Alerts</h2>
<p>ServiceCenter has provided very robust and in-depth tools to produce Alerts and Notifications to users based on system events.  Alerts allow an organization to define known conditions, which could automatically produce some action on the ticket, such as escalating the ticket, changing the severity, notifications, etc.</p>
<p>The ServiceCenter Alert Definitions, Schedule and Notification files all work together to produce output for the Alerts.  Frequent usage of the Alerts includes:</p>
<ul>
<li>Notifications for SLA breaches</li>
<li>Notification of pending Approvals</li>
<li>Notifications of Past Due tickets</li>
<li>Notifications of Stale Tickets</li>
</ul>
<p>While many of the frequent uses for Alerts include notifications, those are far from the only uses for Alerts.  Alerts can be used to update information on a ticket or execute processes.</p>
<p>Each ticket type provides for an alert status field, which can be updated when the alert is triggered.  This status identifies the next time that a specific alert may need to be evaluated or acted upon.  Alerts run at the time when a ticket is saved and evaluates the schedule.condition against the current record.  If a match is made, the Calculation fields on the scheduling tab are used to set the expiration (Alert Time) on the schedule record that will be created.  The name used for the Alert will be the name on the scheduled event. </p>
<p><strong><em>Recommendation:  </em></strong><em>Use very clear names for your Alerts so that Administrators will know what they are looking at when troubleshooting Alerts in the schedule file.</em></p>
<p>The Calculations for Alert times allow you to schedule an alert to happen based on a specific time in the ticket or a calculated time (such as one business day prior to the implementation time).  Each alert can use a different calendar based on different needs.  Some alerts may use a 24 X 7 calendar while others may use an 8 X 5 calendar. </p>
<p>The update Information tab allows you to specify notifications that will run and/or special processes to change the existing data in the ticket.  Triggers can be turned off for these updates in order to prevent potential circular processes.  From here, one or more notifications can be kicked off.</p>
<p><strong><em>Recommendation:</em></strong><em>  In order to be able to trace system Alerts and Notifications end to end, it is a good idea to use clear and systematic names for your notifications.</em></p>
<p>There is an Alert tab on the Object record.  This allows for specification of a top level Alert that will run for that specific notification type.  Additionally, the Change module provides Alert panels in each Change and each Task phase to set off Alerts based on specific conditions.</p>
<p>The best first step is to define and map out on paper exactly what you think your organization needs.  Remember that any tool should always support your process.  When should a ticket be escalated?  Who needs to be notified?  When do they need to be notified?  What information is necessary for that step?   While you may feel the need to notify everyone for all items, be conservative about notifying users in your organization.  Excessive notifications will result in users ignoring or deleting them. </p>
<p>The Alerts in ServiceCenter are extremely powerful when defined and executed well.    When they are not set up correctly, they can have disastrous consequences.  The challenge can be in defining the notifications in a clear and concise manner.    Start small with one Alert and test it end to end.  Once you have nailed exactly what you want, continue to create the additional alerts that are required.</p>
<br/><a href="http://www.socialmarker.com/?link=http://www.stratacominc.com/alerts-hp-servicecenterhp-service-manager/&title=Alerts+in+HP+ServiceCenter%2FHP+Service+Manager&text=Alerts+ServiceCenter+has+provided+very+robust+and+in-depth+tools+to+produce+Alerts+and+Notifications+to+users+based+on+system+events.%26%23160%3B+Alerts+allow+an+organization+to+define+known+conditions%2C...&tags=the+ticket%2C+alerts%2C+alert%2C+notifications%2C+ticket%2C+schedule" target="_blank"><img src= "http://www.socialmarker.com/bookmark.gif" border="0" /></a><noscript><a href="http://www.socialmarker.com" >Social Bookmarking</a></noscript>]]></content:encoded>
			<wfw:commentRss>http://www.stratacominc.com/alerts-hp-servicecenterhp-service-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

