<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://greggsmith.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FrankTR</id>
		<title>SDU - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://greggsmith.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FrankTR"/>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Special:Contributions/FrankTR"/>
		<updated>2026-07-27T11:34:06Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.1</generator>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=User:FrankTR&amp;diff=4128</id>
		<title>User:FrankTR</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=User:FrankTR&amp;diff=4128"/>
				<updated>2010-11-18T13:00:54Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: New page: Been working with Unicenter Service Desk for a few years now. First only as a normal analyst / user, but now I have become &amp;quot;system responsible for application&amp;quot; or whatever...  Used r6.x wi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Been working with Unicenter Service Desk for a few years now.&lt;br /&gt;
First only as a normal analyst / user, but now I have become &amp;quot;system responsible for application&amp;quot; or whatever...&lt;br /&gt;
&lt;br /&gt;
Used r6.x with java client at CSC Norway and was a tiny bit involved with testing for changing to web interface.&lt;br /&gt;
Working at Coop Norway now. We started with r6.x and are now at r11.x, looking at upgrade to r12.&lt;br /&gt;
&lt;br /&gt;
So now I'm just trying to learn and figure out as much as possible about what can and can't be done in the system.&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Web_Services&amp;diff=4127</id>
		<title>Web Services</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Web_Services&amp;diff=4127"/>
				<updated>2010-11-18T12:51:21Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Integration]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Create a Request, Change Order and Contact through Web Services via VB ==&lt;br /&gt;
=== Step1: Create a web reference in the front end. ===&lt;br /&gt;
#Start the front end.&lt;br /&gt;
#Go to Website menu and click “Add web reference”.&lt;br /&gt;
#In the URL box provide the web service URL and click go. &amp;lt;nowiki&amp;gt;http://&amp;lt;hostname&amp;gt;:8080/axis/services/USD_R11_WebService?wsdl'''&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
#We can find the methods being pulled out.&lt;br /&gt;
#Add the webreference with the name “WebReference”.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Create an Object of the web reference ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;Dim ws As New WebReference.USD_WebService&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Specify the Correct web service URL ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;ws.Url = &amp;quot;http://&amp;lt;hostname&amp;gt;:8080/axis/services/USD_R11_WebService?wsdl&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Provide the username and password to get the sid value ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;Dim username, password As String&lt;br /&gt;
Dim sid As Integer&lt;br /&gt;
username = &amp;quot;analyst1&amp;quot;&lt;br /&gt;
password = &amp;quot;123&amp;quot;&lt;br /&gt;
sid = ws.login(username, password)&amp;lt;/source&amp;gt;&lt;br /&gt;
where login is the method used to get the sid.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Get the User Handle ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;Dim userhandle As String&lt;br /&gt;
userhandle = ws.getHandleForUserid(sid, username)&amp;lt;/source&amp;gt;&lt;br /&gt;
Where getHandleForUserid is the method&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Create a Request ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;Dim attrVal(5), attr(1), prop(1), persistent_id As String&lt;br /&gt;
Dim requestHandle, requestNumber As String&lt;br /&gt;
attrVal = New String() {&amp;quot;customer&amp;quot;, userhandle, &amp;quot;category&amp;quot;, &amp;quot;&amp;lt;category id&amp;gt;&amp;quot;, &amp;quot;description&amp;quot;, &amp;quot;Description here&amp;quot;}&lt;br /&gt;
prop = New String() {&amp;quot;&amp;quot;}&lt;br /&gt;
attr = New String() {persistent_id}&lt;br /&gt;
requestHandle = &amp;quot;&amp;quot;&lt;br /&gt;
requestNumber = &amp;quot;&amp;quot;&lt;br /&gt;
ws.createRequest(sid, userhandle, attrVal, prop, &amp;quot;&amp;quot;, attr, requestHandle, requestNumber)&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Create a Change Order ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;Dim attrVal(5), attr(1), prop(1), persistent_id As String&lt;br /&gt;
Dim requestHandle, requestNumber As String&lt;br /&gt;
attrVal = New String() {&amp;quot;requestor&amp;quot;, userhandle, &amp;quot;category&amp;quot;, &amp;quot;category id&amp;quot;, &amp;quot;description&amp;quot;, &amp;quot;description here&amp;quot;}&lt;br /&gt;
prop = New String() {&amp;quot;&amp;quot;}&lt;br /&gt;
attr = New String() {cpersistent_id}&lt;br /&gt;
requestHandle = &amp;quot;&amp;quot;&lt;br /&gt;
requestNumber = &amp;quot;&amp;quot;&lt;br /&gt;
ws.createChangeOrder(sid, userhandle, attrVal, prop, &amp;quot;&amp;quot;, cattr, requestHandle, requestNumber)&amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Step 8: Create a contact ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;Dim attrVal(5), attr(1), persistent_id As String&lt;br /&gt;
Dim contactHandle, contactNumber As String&lt;br /&gt;
attrVal = New String() {&amp;quot;first_name&amp;quot;,&amp;quot;Mike&amp;quot;, &amp;quot;last_name&amp;quot;, &amp;quot;Tolland&amp;quot;, &amp;quot;userid&amp;quot;, &amp;quot;mike.tolland&amp;quot;, &amp;quot;contact_num&amp;quot;, &amp;quot;&amp;lt;Password here&amp;gt;&amp;quot;, &amp;quot;email_address&amp;quot;, &amp;quot;mike.tolland@abc.co.in&amp;quot;, &amp;quot;phone_number&amp;quot;, &amp;quot;00989876723&amp;quot;}&lt;br /&gt;
attr = New String() {persistent_id}&lt;br /&gt;
ws.createObject(sid, &amp;quot;cnt&amp;quot;, attrVal, attr, contactHandle, contactNumber)&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating Code for VB.net 2008 and R11 ==&lt;br /&gt;
=== Create object / login and return basic information ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        Dim sid As String&lt;br /&gt;
        Dim uHandle As String&lt;br /&gt;
        Dim b As New casoap.USD_WebServiceSoapClient&lt;br /&gt;
        sid = b.login(&amp;quot;Administrator&amp;quot;, &amp;quot;password&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        &lt;br /&gt;
        Dim user As String = &amp;quot;devak01&amp;quot;&lt;br /&gt;
        uhandle = b.getHandleForUserid(sid, user)&lt;br /&gt;
        Dim arryVals As String() = {&amp;quot;first_name&amp;quot;, &amp;quot;last_name&amp;quot;, &amp;quot;organization&amp;quot;, _&lt;br /&gt;
                                    &amp;quot;organization.name&amp;quot;, &amp;quot;admin_org.name&amp;quot;, _&lt;br /&gt;
                                    &amp;quot;group_list.length&amp;quot;}&lt;br /&gt;
        Dim arryValsresults As String = b.getObjectValues(sid, uHandle, arryVals)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Create a Asset / Hardware Configuration item ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
        Dim newexten As String = &amp;quot;&amp;quot;&lt;br /&gt;
        Dim extenName As String = &amp;quot;&amp;quot;&lt;br /&gt;
        Dim assethndle As String = &amp;quot;&amp;quot;&lt;br /&gt;
        Dim car As String = &amp;quot;&amp;quot;&lt;br /&gt;
        Dim chgHandle As String = &amp;quot;&amp;quot;&lt;br /&gt;
        Dim chgNum As String = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        Dim attrVal() As String = {&amp;quot;name&amp;quot;, &amp;quot;hello2&amp;quot;, &amp;quot;class&amp;quot;, &amp;quot;grc:10000002&amp;quot;}&lt;br /&gt;
        ReDim Preserve attrVal(3)&lt;br /&gt;
        Dim persistent_id As String = &amp;quot;persistent_id&amp;quot;&lt;br /&gt;
        Dim attr() As String = {persistent_id}&lt;br /&gt;
        ReDim Preserve attr(0)&lt;br /&gt;
&lt;br /&gt;
        b.createAsset(sid, attrVal, attr, car, assethndle, newexten, extenName)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create a Change Order ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
        Dim attrVal() As String = {&amp;quot;requestor&amp;quot;, uHandle, &amp;quot;category&amp;quot;, &amp;quot;5103&amp;quot;, &amp;quot;description&amp;quot;, &amp;quot;hello world&amp;quot;}&lt;br /&gt;
        ReDim Preserve attrVal(5)&lt;br /&gt;
&lt;br /&gt;
        Dim persistent_id As String = &amp;quot;persistent_id&amp;quot;&lt;br /&gt;
        Dim attr() As String = {persistent_id}&lt;br /&gt;
        ReDim Preserve attr(0)&lt;br /&gt;
        Dim prop() As String = {}&lt;br /&gt;
        ReDim Preserve prop(1)&lt;br /&gt;
        Dim chgHandle As String = &amp;quot;&amp;quot;&lt;br /&gt;
        Dim chgNum As String = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        b.createChangeOrder(sid, uHandle, attrVal, prop, _&lt;br /&gt;
                            &amp;quot;&amp;quot;, attr, chgHandle, chgNum)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to Use Web Services==&lt;br /&gt;
&lt;br /&gt;
I am using Visual Web Developer Express.Net. It is free and easy to use. &lt;br /&gt;
To consume the USD web services, create a new web application.&lt;br /&gt;
&lt;br /&gt;
'''Now is time to get to work'''&lt;br /&gt;
&lt;br /&gt;
Once your page is set up:&lt;br /&gt;
&lt;br /&gt;
Click the '''Website'''  &amp;gt; '''add reference''' &lt;br /&gt;
&lt;br /&gt;
Enter the URL to the web services WSDL file, which is located at'&lt;br /&gt;
''http ://&amp;lt; your server&amp;gt;:8080/axis/services/USD_R11_WebService?wsdl'''&lt;br /&gt;
&lt;br /&gt;
You might want to study a little XML and WSDL, but it isn't neccesary.  &lt;br /&gt;
Look up the topic, Consume or Consuming Web Services.&lt;br /&gt;
&lt;br /&gt;
==Quick Reference==&lt;br /&gt;
&lt;br /&gt;
Consuming Web service With Visual Studio/ Express Web Developer&lt;br /&gt;
&lt;br /&gt;
Go to the Menu Bar and click &lt;br /&gt;
Website &amp;gt; Add Web Reference (name it anything you want then click --&amp;gt; Add reference&lt;br /&gt;
&lt;br /&gt;
And that is it! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To use the web reference, create a new instance of the web service &lt;br /&gt;
VB.Net Class program file&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Partial Class tickets&lt;br /&gt;
    Inherits System.Web.UI.UserControl&lt;br /&gt;
&lt;br /&gt;
    Private ws As New USD_WebService&lt;br /&gt;
                      .&lt;br /&gt;
                      .&lt;br /&gt;
               .&lt;br /&gt;
To consume the service, call your first function&lt;br /&gt;
ws.login(username, password)&lt;br /&gt;
&amp;lt;/source&amp;gt;      &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
'the login function returns a system id value so...'&lt;br /&gt;
'lets rewrite the above code to look like the code below...'&lt;br /&gt;
&lt;br /&gt;
Dim sid As String &lt;br /&gt;
sid = ws.login(username, password)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Example Code: Using Webservice in VB.NET Web Application ==&lt;br /&gt;
 '''Here is a complete Code Snippit'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Imports System.IO&lt;br /&gt;
Imports System.Xml&lt;br /&gt;
Imports System.Xml.Serialization&lt;br /&gt;
Imports &amp;lt;ReferenceToWebServiceWSDL&amp;gt;&lt;br /&gt;
Imports Connection&lt;br /&gt;
&lt;br /&gt;
Partial Class _Default&lt;br /&gt;
&lt;br /&gt;
    Inherits System.Web.UI.Page&lt;br /&gt;
&lt;br /&gt;
    Dim ws As New USD_WebService&lt;br /&gt;
    Dim sid As String&lt;br /&gt;
    Dim userhandle, username, password As String&lt;br /&gt;
    Dim attrVal(5), attr(0), prop(0) As String&lt;br /&gt;
    Dim requestHandle, requestNumber As String&lt;br /&gt;
    Dim persistent_id As String&lt;br /&gt;
    Dim catAttrib(5) As String&lt;br /&gt;
&lt;br /&gt;
    Dim xmlReturn As String&lt;br /&gt;
    Dim pcatHandle As XmlNodeList&lt;br /&gt;
    Dim xDoc As XmlDocument = New XmlDocument()&lt;br /&gt;
    Dim pcatResult As String&lt;br /&gt;
&lt;br /&gt;
    'Class for handling the button click submit'&lt;br /&gt;
    Protected Sub Submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Submit.Click&lt;br /&gt;
  &lt;br /&gt;
        Dim name = “Username”&lt;br /&gt;
        Dim pass As String = &amp;quot;password&amp;quot;&lt;br /&gt;
       &lt;br /&gt;
        sid = ws.login(name, pass)&lt;br /&gt;
        &lt;br /&gt;
        'get the Handle for the userid'&lt;br /&gt;
    userhandle = ws.getHandleForUserid(sid,name)&lt;br /&gt;
    'Get The Category Attributes'&lt;br /&gt;
     catAttrib = New String(0) {}&lt;br /&gt;
&lt;br /&gt;
    'Category Handle for the incident area'&lt;br /&gt;
     Try&lt;br /&gt;
xReturn = ws.doSelect(sid, &amp;quot;pcat&amp;quot;, &amp;quot;sym = 'HARDWARE.PRINTER.SETUP'&amp;quot;, 1, catAttrib)&lt;br /&gt;
            xDoc.LoadXml(xReturn)&lt;br /&gt;
            xHandle = xDoc.GetElementsByTagName(&amp;quot;Handle&amp;quot;)&lt;br /&gt;
            xResult = xHandle(0).InnerText&lt;br /&gt;
            catHandle = xResult&lt;br /&gt;
        Catch ex As Exception&lt;br /&gt;
            Response.Write(&amp;quot;Exception caught while invoking an XML Web service.&amp;quot;)&lt;br /&gt;
        End Try&lt;br /&gt;
&lt;br /&gt;
  'Priority handle for the ticeket'&lt;br /&gt;
        'sym = priority.Value'&lt;br /&gt;
        '505	0	0	None Priority unassigned'	&lt;br /&gt;
        '500	0	1	5	LOW Priority	&lt;br /&gt;
        '501	0	2	4	MEDIUM-LOW Priority	&lt;br /&gt;
        '502	0	3	3	MEDIUM Priority	&lt;br /&gt;
        '503	0	4	2	MEDIUM-HIGH Priority	&lt;br /&gt;
        '504	0	5	1	HIGH Priority	&lt;br /&gt;
&lt;br /&gt;
        Dim pri As String()&lt;br /&gt;
        pri = New String() {&amp;quot;pri:505&amp;quot;, &amp;quot;pri:504&amp;quot;, &amp;quot;pri:503&amp;quot;, &amp;quot;pri:502&amp;quot;, &amp;quot;pri:501&amp;quot;, &amp;quot;pri:500&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
        'Set the priority number Testing only'&lt;br /&gt;
        priority_number = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        attrib = New String() {&amp;quot;customer&amp;quot;, userhandle, &amp;quot;priority&amp;quot;, &amp;quot;pri:502&amp;quot;, &amp;quot;category&amp;quot;, _ &lt;br /&gt;
                                                                          pcatResult, &amp;quot;description&amp;quot;, &amp;quot;Test&amp;quot;}&lt;br /&gt;
        prop = New String() {&amp;quot;&amp;quot;}&lt;br /&gt;
        attr = New String() {persistent_id}&lt;br /&gt;
        requestHandle = &amp;quot;&amp;quot;&lt;br /&gt;
        requestNumber = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        'Create the ticket'&lt;br /&gt;
        'Including a try catch block for catching an error dealing with additional fields'&lt;br /&gt;
         ws.createRequest(sid, userhandle, attrVal, prop, &amp;quot;&amp;quot;, attr, requestHandle, requestNumber)&lt;br /&gt;
&lt;br /&gt;
        'I need to close the connection.'&lt;br /&gt;
        ws.logout()&lt;br /&gt;
&lt;br /&gt;
    End Sub&lt;br /&gt;
   &lt;br /&gt;
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load&lt;br /&gt;
&lt;br /&gt;
        ws.Url =  _&lt;br /&gt;
           &amp;quot;http://&amp;lt;yourServerName&amp;gt;:8080/axis/services/USD_R11_WebService?wsdl&amp;quot;&lt;br /&gt;
    End Sub&lt;br /&gt;
End Class&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ASP Web Project ==&lt;br /&gt;
Create an ASP .NET Web Project&lt;br /&gt;
Below is a sample ASP Page. Copy and paste the code Between the &amp;lt;Form&amp;gt;&amp;lt;/Form&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'default.aspx'&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;replay&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'Get the User Name and Password'&lt;br /&gt;
&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;username&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;password&amp;quot; id=&amp;quot;password&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Having Fun ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pop the code below in your VB file. &lt;br /&gt;
When the user logs in correctly the form will disapear and s\he will be greeted by there username&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'in your default.aspx.vb file'&lt;br /&gt;
Dim ws As New USD_WebService&lt;br /&gt;
&lt;br /&gt;
'Login'&lt;br /&gt;
ws.login(username.Text, password.Text)&lt;br /&gt;
&lt;br /&gt;
'Just for fun hide input areas'&lt;br /&gt;
username.Visable = false&lt;br /&gt;
password.Visalbe = false&lt;br /&gt;
&lt;br /&gt;
'Say Hello to you user'&lt;br /&gt;
replay.Text = &amp;quot; Welcome &amp;quot; &amp;amp; username.Text&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''If you copy and paste the code, you need to remove the aphostrophy at the end of each comment only. &lt;br /&gt;
To do this just use your find and replace function. MenuBar Item Edit &amp;gt; Find and Replace --&amp;gt; Quck Replace &amp;gt; find What: ' . Next, Replace With   &amp;lt;- test box insert a space. You'll have to do this one-by-one so not to uncomment the whole line.''&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Events_and_Macros&amp;diff=4126</id>
		<title>Events and Macros</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Events_and_Macros&amp;diff=4126"/>
				<updated>2010-11-18T12:50:53Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:Configuration]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Starting with the r11.x releases, events and macros are managed in the web client.  Prior to r11, they were managed in the java client.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
Events are the combination of a condition and one or more actions.  They are attached with tickets via Service Types, Service Contracts, or custom code.  If an event is attached to a ticket, it will trigger after a defined period of time.  When an event is triggered, it's condition is evaluated and will return either True or False.  Any actions associated with the condition evaluating to True or False are then executed.&lt;br /&gt;
&lt;br /&gt;
== Macros ==&lt;br /&gt;
The conditions and actions that are used in defining Events are done using macros.  While condition macros evaluate to either True or False, action macros allow for just about any action possible within Service Desk.  Below are explanations and examples of the two types of condition macros (Condition Macros and Site-Defined Condition Macros) and 4 types of action macros (Action Macros, Attach Event Macros, Multiple Notification Macros, Remote Reference Macro).&lt;br /&gt;
&lt;br /&gt;
=== Site-Defined Condition Macro ===&lt;br /&gt;
Site-Defined Condition Macros are a special kind of condition macro. There are no site-defined condition macros included in a fresh install of Service Desk.  They are created by the client.  While the Site-Defined Condition Macros provide an easy to use interface and offer vast flexibility, they do not offer as much flexibility as Condition Macros.&lt;br /&gt;
&lt;br /&gt;
=== Condition Macro ===&lt;br /&gt;
When a site-defined macro won't do the job, it is time to use Condition Macros.  A fresh install of Service Desk contains quite a few to start with. There are no default capabilities for managing Condition Macros within the administration interface.  Since they are written in Spell code and Spell code is not officially supported by CA, take special caution when working with them.  To add new Condition Macros, see [[How To Manage Spell-Based Macros]].&lt;br /&gt;
&lt;br /&gt;
It is highly recommended that you do not modify ANY of the default Condition Macros. If changes are needed, create a new one based on the original. It is best to reference existing Condition Macros to understand the coding that is needed.&lt;br /&gt;
&lt;br /&gt;
=== Action Macro ===&lt;br /&gt;
Action Macros are typically used to set field values, such as increasing Priority or setting the SLA violation.  However, since they are written in Spell code, they can perform just about any action possible within Service Desk.  A fresh install of Service Desk contains quite a few to start with. There are no default capabilities for managing Action Macros.  To add new Action Macros, see [[How To Manage Spell-Based Macros]].&lt;br /&gt;
&lt;br /&gt;
It is highly recommended that you do not modify ANY of the default Action Macros. If changes are needed, create a new one based on the original. It is best to reference existing Action Macros to understand the coding that is needed.&lt;br /&gt;
&lt;br /&gt;
=== Attach Event Macro ===&lt;br /&gt;
Attach Event Macros are used to attach another event. This allows for complex branching in your conditioning as well as on going processing. &lt;br /&gt;
&lt;br /&gt;
=== Multiple Notification Macro ===&lt;br /&gt;
Multiple Notification Macros are the most commonly used type of macros. They are used to send out notifications. Unlike [[Activity Notifications]], Events combined with Multiple Notification Macros add more flexibility with notification. However, by default, Multiple Notification Macros do not provide HTML email support.&lt;br /&gt;
&lt;br /&gt;
=== Remote Reference Macro ===&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Condition Macros ===&lt;br /&gt;
&lt;br /&gt;
=== Site-Defined Condition Macros ===&lt;br /&gt;
&lt;br /&gt;
=== Action Macros ===&lt;br /&gt;
[[Add_Custom_Activity_Log_Action_Macro|Add Custom Activity Log]]&lt;br /&gt;
&lt;br /&gt;
=== Attach Event Macros ===&lt;br /&gt;
&lt;br /&gt;
=== Multiple Notification Macros ===&lt;br /&gt;
&lt;br /&gt;
=== Remote Reference Macros ===&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Lock_record&amp;diff=4125</id>
		<title>Lock record</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Lock_record&amp;diff=4125"/>
				<updated>2010-11-18T12:50:16Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When an Analyst edits a ticket of any type, it locks that record for a determined period of time to ensure one person's changes don't overwrite another's. While this is a useful feature, it can be problematic when not set properly. If too short, someone might not be done editing the ticket, but if too long, it could remain locked for an extended period of time.&lt;br /&gt;
&lt;br /&gt;
To edit the lock time, edit the %NXROOT%\bopcfg\www\web.cfg file and search for &amp;quot;ExclLockSeconds&amp;quot;. Make sure there is not an exclamation mark preceding it, and put the number of seconds to lock the record after it.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
ExclLockSeconds 900&lt;br /&gt;
&lt;br /&gt;
After setting the variable as desired, you will need to rerun the Configure tool (pdm_configure) and restart services.&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Crystal_Reports&amp;diff=4124</id>
		<title>Crystal Reports</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Crystal_Reports&amp;diff=4124"/>
				<updated>2010-11-18T12:49:40Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:Reporting]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Crystal Formula Examples ==&lt;br /&gt;
'''Analyst''' (Example for Contacts)&lt;br /&gt;
&lt;br /&gt;
   if IsNull ({ca_contact.last_name})&lt;br /&gt;
   then &amp;quot;UNASSIGNED&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
      if IsNull ({ca_contact.first_name})&lt;br /&gt;
      then Uppercase ({ca_contact.last_name})&lt;br /&gt;
      else Uppercase ({ca_contact.last_name} + &amp;quot;, &amp;quot; + {ca_contact.first_name})&lt;br /&gt;
&lt;br /&gt;
'''CloseDate''' (Example for Requests)&lt;br /&gt;
&lt;br /&gt;
''Note: Be sure the u2lpdmtime.dll is avaible for such calls''&lt;br /&gt;
&lt;br /&gt;
   PDMTimeToDateTime ({call_req.close_date})&lt;br /&gt;
&lt;br /&gt;
'''OpenDate''' (Example for Requests)&lt;br /&gt;
&lt;br /&gt;
''Note: Be sure the u2lpdmtime.dll is avaible for such calls''&lt;br /&gt;
&lt;br /&gt;
   PDMTimeToDateTime ({call_req.open_date})&lt;br /&gt;
&lt;br /&gt;
'''TimeOpen''' (Example for Requests which Utilizes 'CloseDate' formula)&lt;br /&gt;
&lt;br /&gt;
''Note: Be sure the u2lpdmtime.dll is avaible for such calls''&lt;br /&gt;
&lt;br /&gt;
   if isnull ({@CloseDate}) &lt;br /&gt;
   then ((DateTimeToPDMTime (CurrentDateTime) - {call_req.open_date})/60/60/24)&lt;br /&gt;
   else ((DateTimeToPDMTime ({@CloseDate}) - {call_req.open_date})/60/60/24)&lt;br /&gt;
&lt;br /&gt;
'''Category''' (Example for Request Area)&lt;br /&gt;
&lt;br /&gt;
   if isnull ({prob_ctg.sym}) OR {prob_ctg.sym} = &amp;quot;&amp;quot;&lt;br /&gt;
   then &amp;quot;Currently no category specified&amp;quot;&lt;br /&gt;
   else {prob_ctg.sym}&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Single_Sign-on&amp;diff=4123</id>
		<title>Single Sign-on</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Single_Sign-on&amp;diff=4123"/>
				<updated>2010-11-18T12:49:09Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:Authentication]]&lt;br /&gt;
[[Category:Integration]]&lt;br /&gt;
[[Category:r11]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This article details the procedures for permitting users to bypass entering their login credentials. &lt;br /&gt;
&lt;br /&gt;
== Configure Service Desk ==&lt;br /&gt;
[[Image:Single Sign-On Screenshot1.png|thumb|r11.x Screenshot - Access Type]]Configure the Access Type to ''Allow External Authentication'' and set the Validation Type to ''OS-Use Operating System Authentication''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Option 1: Configure IIS ==&lt;br /&gt;
[[Image:Single Sign-On Screenshot2.png|thumb|r11.x Screenshot - IIS]]&lt;br /&gt;
#Launch the IIS Manager and expand web sites and locate the CAisd virtual directory.&lt;br /&gt;
#Right-click on CAisd and select Properties&lt;br /&gt;
#Select the Directory Security tab and select the edit button under Authentication and access control.&lt;br /&gt;
#Uncheck Enable Anonymous Access and check Integrated Windows Authentication&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The changes should work immediately. But if they do not, recycle the IIS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Option 2: Configure Tomcat == &lt;br /&gt;
#Download the latest jcifs.jar file from http://jcifs.samba.org/. &lt;br /&gt;
#Place the file in the [[$NX_ROOT]]\bopcfg\www\CATALINA_BASE\webapps\CAisd\WEB-INF\lib directory. &lt;br /&gt;
#Edit the web.xml located at [[$NX_ROOT]]\bopcfg\www\CATALINA_BASE\webapps\CAisd\WEB-INF\  by locating the ''&amp;lt;nowiki&amp;gt;&amp;lt;!-- Add filter here --&amp;gt;&amp;lt;/nowiki&amp;gt;'' line and place the following code directly below it:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;filter&amp;gt; &lt;br /&gt;
&amp;lt;filter-name&amp;gt;NtlmHttpFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
&amp;lt;filter-class&amp;gt;jcifs.http.NtlmHttpFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
&amp;lt;init-param&amp;gt;&lt;br /&gt;
&amp;lt;param-name&amp;gt;jcifs.http.domainController&amp;lt;/param-name&amp;gt; &lt;br /&gt;
&amp;lt;param-value&amp;gt;YOUR DOMAIN&amp;lt;/param-value&amp;gt;&lt;br /&gt;
&amp;lt;/init-param&amp;gt;&lt;br /&gt;
&amp;lt;/filter&amp;gt; &amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''Note: Replace YOUR DOMAIN with your domain name (servicedeskusers.com) or domain controller (dcl).''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;4.  Then locate ''&amp;lt;nowiki&amp;gt;&amp;lt;!-- Add filter-mapping here --&amp;gt;&amp;lt;/nowiki&amp;gt;'', and place the following code directly below it:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
&amp;lt;filter-name&amp;gt;NtlmHttpFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
&amp;lt;/filter-mapping&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;5.  Stop and restart the Tomcat web server by running the '''pdm_tomcat_nxd -c stop''' then '''pdm_tomcat_nxd -c start'''&lt;br /&gt;
&lt;br /&gt;
Additional information for configuring Tomcat using jcifs can be found at http://jcifs.samba.org/src/docs/faq.html#ukhost and http://jcifs.samba.org/src/docs/api/overview-summary.html#scp&lt;br /&gt;
&lt;br /&gt;
== Notice ==&lt;br /&gt;
When running the Service Desk Configuration Utility ([[pdm_configure]]), the above changes will need to be reimplemented as the configuration process will reset them.&lt;br /&gt;
&lt;br /&gt;
[[eIAM]], which [[CA Workflow]] uses for authentication, does not have single sign-on capabilities. As a result, CA Workflow is not capable of single sign-on. However, the the rumor is that CA Workflow version 1.1 which will be packaged with Service Desk r12 will have this capability.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
[[Single Sign-on with Cookies]]&lt;br /&gt;
&lt;br /&gt;
[[LDAP Integration]]&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Command-Line_Interface&amp;diff=4122</id>
		<title>Command-Line Interface</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Command-Line_Interface&amp;diff=4122"/>
				<updated>2010-11-18T12:48:34Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:Integration]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
These are notes I made re using the command line interface with v6, I have no idea if they will relate to r11 but would not expect the command line interface to have changed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Please excuse the format but trying to manage wiki formatting with all the -'s and %'s was too painful.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
The quickest summary of the command can be obtained by using the standard -h help switch&lt;br /&gt;
&lt;br /&gt;
&amp;gt;pdm_text_cmd -h&lt;br /&gt;
pdm_text_cmd: Text API Command Line Interface - Sends text commands to Text API Daemon.&lt;br /&gt;
&lt;br /&gt;
Usage: pdm_text_cmd -t table { -u from_userid | -p from_persid } [-o operation] [-f input_file] [-T timeout] [-h]&lt;br /&gt;
Where:&lt;br /&gt;
  -t = Table to process.&lt;br /&gt;
  -o = Operation to perform. Valid: NEW|UPD|UPDATE|UPDO|UPDATE_ONLY. Default: NEW&lt;br /&gt;
  -f = File to process. Default is to use STDIN.&lt;br /&gt;
  -u = Cmd from userid.&lt;br /&gt;
  -p = Cmd from persid.&lt;br /&gt;
  -T = Time out in seconds.&lt;br /&gt;
  -h = This help.&lt;br /&gt;
&lt;br /&gt;
Table and Operation parameters are case-insensitive.&lt;br /&gt;
Valid Table values are listed in the Options section of the text_api.cfg file.&lt;br /&gt;
&lt;br /&gt;
Valid tables are: ASSET CHANGE CONTACT ISSUE REQUEST&lt;br /&gt;
&lt;br /&gt;
If no parameters are defined in file all text is assumed to be description.&lt;br /&gt;
&lt;br /&gt;
Summary is created as first 60 characters of description if not otherwise set.&lt;br /&gt;
&lt;br /&gt;
Will default assignee where requestor is an analyst.&lt;br /&gt;
&lt;br /&gt;
Parameters can be specified as below in file&lt;br /&gt;
&lt;br /&gt;
&amp;gt;pdm_text_cmd -t REQUEST -u st00002 -f pdm_text_cmd.text (default operation is NEW)&lt;br /&gt;
&lt;br /&gt;
where pdm_text_cmd.text is&lt;br /&gt;
%SUMMARY=My Summary&lt;br /&gt;
%DESCRIPTION=Please fix the problem I've described in the description&lt;br /&gt;
%PRIORITY=3&lt;br /&gt;
%CUSTOMER=mparssey&lt;br /&gt;
%CATEGORY=Hardware&lt;br /&gt;
%ASSIGNEE=agrainger&lt;br /&gt;
&lt;br /&gt;
To update an existing record&lt;br /&gt;
&amp;gt;pdm_text_cmd -t REQUEST -u mparssey -o UPDATE -f change_status.txt&lt;br /&gt;
&lt;br /&gt;
where change_status.txt is&lt;br /&gt;
%SEARCH=REQUEST_ID&lt;br /&gt;
%REQUEST_ID=102953&lt;br /&gt;
%STATUS=Work In Progress&lt;br /&gt;
&lt;br /&gt;
where you can write %SEARCH=keyword1;keyword2;keyword3&lt;br /&gt;
%keyword1=value1&lt;br /&gt;
%keyword2=value2&lt;br /&gt;
%keyword3=value3&lt;br /&gt;
%keyword4=new value1&lt;br /&gt;
%keyword5=new value2&lt;br /&gt;
%keyword6=new value3&lt;br /&gt;
&lt;br /&gt;
You can add multiple requests to a file using %%%%% as the separator.&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Add_Properties_Count_to_Area/Category_List&amp;diff=4121</id>
		<title>Add Properties Count to Area/Category List</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Add_Properties_Count_to_Area/Category_List&amp;diff=4121"/>
				<updated>2010-11-18T12:46:10Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:Change Orders]]&lt;br /&gt;
[[Category:Customizations]]&lt;br /&gt;
[[Category:Incidents]]&lt;br /&gt;
[[Category:Issues]]&lt;br /&gt;
[[Category:Problems]]&lt;br /&gt;
[[Category:r11]]&lt;br /&gt;
[[Category:Requests]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This article contains instructions for adding the number of Properties associated with each Area/Category to the list or Areas/Categories available via the Administration Tab. This is not an update to the hierarchy listings. This simple customizations allows for easily identifying the Areas/Categories that have Properties. &lt;br /&gt;
&lt;br /&gt;
The instructions that follow pertain to r11.x releases only.&lt;br /&gt;
&lt;br /&gt;
== Procedures ==&lt;br /&gt;
=== Step 1. Edit list_pcat.htmpl, list_chgcat.htmpl, and list_isscat.htmpl ===&lt;br /&gt;
Search for the section beginning with the following code...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdm_macro name=lsStart&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For list_pcat.htmpl, add the following line...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdm_macro name=lsCol hdr=&amp;quot;Properties&amp;quot; attr=properties display_attr=length justify=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
For list_chgcat.htmpl and list_isscat.htmpl, add the following line...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdm_macro name=lsCol hdr=&amp;quot;Properties&amp;quot; attr=property_templates display_attr=length justify=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For r11.x releases it is recommended that you edit your pages via the [[Web Screen Painter]]. &lt;br /&gt;
&lt;br /&gt;
=== Step 2. Clear the web cache ===&lt;br /&gt;
The final step is to clear Service Desk's cache. Publish your changes via the [[Web Screen Painter]]. The process of publishing automatically initiates a [[pdm_webcache]].&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=For&amp;diff=4120</id>
		<title>For</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=For&amp;diff=4120"/>
				<updated>2010-11-18T12:44:35Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
A &amp;quot;for&amp;quot; loop performs a set of commands for each iteration of the loop.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
for (''starting number'';''while'';''increment'')&lt;br /&gt;
&lt;br /&gt;
You do not have to specify all (or any) of the three values within the, although not doing so may result in an infinite loop. You must have code within the loop itself to exit if you choose to exclude these values. Also, if you do not specify a value you still must use the semi-colon(;) as a separator.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
*For loop that increments a variable by 1 on each pass&lt;br /&gt;
 int i,count;&lt;br /&gt;
 for (i=0,count=0;i&amp;lt;=4;i++) {&lt;br /&gt;
      count++;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This will increment the count var to 5.&lt;br /&gt;
&lt;br /&gt;
* For loop which logs all the indexes of the msg array which the send_wait function returns&lt;br /&gt;
 int i;&lt;br /&gt;
 send_wait(0, top_object(), &amp;quot;call_attr&amp;quot;, &amp;quot;cnt&amp;quot;, &amp;quot;get_groups_by_persid&amp;quot;, &amp;quot;cnt:776B094702EABB4B87F04A139E72D44B&amp;quot;);&lt;br /&gt;
 for (i=0;i&amp;lt;msg_length();i++) {&lt;br /&gt;
      logf (SIGNIFICANT, &amp;quot;Msg index #%s: %s&amp;quot;, i,msg[i]);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* For loop which does not specify all three values&lt;br /&gt;
 int i;&lt;br /&gt;
 i=5;&lt;br /&gt;
 for (i;;) {&lt;br /&gt;
      if (i&amp;gt;-1) {--i; } else {return;}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This will exit i reaches a value of -1&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Methods_handling&amp;diff=4119</id>
		<title>Methods handling</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Methods_handling&amp;diff=4119"/>
				<updated>2010-11-18T12:44:02Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:Customizations]]&lt;br /&gt;
[[Category:r6]]&lt;br /&gt;
[[Category:r11]]&lt;br /&gt;
[[Category:Spel Code]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
== Method calling ==&lt;br /&gt;
Methods can be called from [[Object_Triggers|triggers]] or using [[Send_wait]] function.&lt;br /&gt;
&lt;br /&gt;
Here is an example of trigger (call method ''convert_request'' with one parameter):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
POST_VALIDATE convert_request( persistent_id ) 96 FILTER(EVENT(&amp;quot;INSERT&amp;quot;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Method definition ==&lt;br /&gt;
You can define new methods on every object. This definition must be in file with SPL extension in [[$NX_ROOT]]/site/mods/majic folder. In one file you can define more than one method and even for more than one class.&lt;br /&gt;
&lt;br /&gt;
Here is the base structure of new method called '''newMethod''' on object '''cr''' with variable number of parameters:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
void cr::newMethod (...)&lt;br /&gt;
{&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Use method definition with ''(...)'' even if no parameters are expected.&lt;br /&gt;
&lt;br /&gt;
=== Parameters handling ===&lt;br /&gt;
Parameters are passed into the method in '''argv''' array. Each parameters are in triplets. Here is the explanation of argv values:&lt;br /&gt;
*argv[0] - number of parameters&lt;br /&gt;
*argv[1] - name of the first parameter&lt;br /&gt;
*argv[2] - previous value of the first parameter&lt;br /&gt;
*argv[3] - actual value of the first parameter&lt;br /&gt;
*argv[4] - name of the second parameter&lt;br /&gt;
*argv[5] - previous value of the second parameter&lt;br /&gt;
*argv[6] - actual value of the second parameter&lt;br /&gt;
and so on&lt;br /&gt;
&lt;br /&gt;
== Overriding methods ==&lt;br /&gt;
If you want to override some built-in method, simply define method with the same name (object::methodName) and write your new body.&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Getenv&amp;diff=4118</id>
		<title>Getenv</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Getenv&amp;diff=4118"/>
				<updated>2010-11-18T12:43:10Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:r6]]&lt;br /&gt;
[[Category:r11]]&lt;br /&gt;
[[Category:Spel Code]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Gets the value of an environment variable&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
getenv (''&amp;quot;string&amp;quot;'')&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
* Getting the value of the PATH environment variable and putting it into the variable &amp;quot;result&amp;quot;.&lt;br /&gt;
 string result;&lt;br /&gt;
 result = getenv(&amp;quot;Path&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
This func will return the string value of the environment variable defined informed in string.&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=While&amp;diff=4117</id>
		<title>While</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=While&amp;diff=4117"/>
				<updated>2010-11-18T12:42:35Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:r6]]&lt;br /&gt;
[[Category:r11]]&lt;br /&gt;
[[Category:Spel Code]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
A &amp;quot;while&amp;quot; loop performs a set of commands for each iteration of the loop.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
while (''condition'')&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
    int i;&lt;br /&gt;
    &lt;br /&gt;
    i = 0;    &lt;br /&gt;
    &lt;br /&gt;
    while( i &amp;lt; 10 ) {&lt;br /&gt;
        &lt;br /&gt;
        printf(&amp;quot;This is a test. Loop %s\n&amp;quot;, i) ;&lt;br /&gt;
        &lt;br /&gt;
        i = i + 1;&lt;br /&gt;
        &lt;br /&gt;
    } ;&lt;br /&gt;
&lt;br /&gt;
This example will iterate the loop, printing the &amp;quot;This is a test. Loop n&amp;quot; message 9 times.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
This is a test. Loop 0&amp;lt;BR&amp;gt;&lt;br /&gt;
This is a test. Loop 1&amp;lt;BR&amp;gt;&lt;br /&gt;
This is a test. Loop 2&amp;lt;BR&amp;gt;&lt;br /&gt;
This is a test. Loop 3&amp;lt;BR&amp;gt;&lt;br /&gt;
This is a test. Loop 4&amp;lt;BR&amp;gt;&lt;br /&gt;
This is a test. Loop 5&amp;lt;BR&amp;gt;&lt;br /&gt;
This is a test. Loop 6&amp;lt;BR&amp;gt;&lt;br /&gt;
This is a test. Loop 7&amp;lt;BR&amp;gt;&lt;br /&gt;
This is a test. Loop 8&amp;lt;BR&amp;gt;&lt;br /&gt;
This is a test. Loop 9&amp;lt;BR&amp;gt;&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Variables_and_Types&amp;diff=4116</id>
		<title>Variables and Types</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Variables_and_Types&amp;diff=4116"/>
				<updated>2010-11-18T12:41:52Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Declaring variables ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
int theInt;&lt;br /&gt;
long theLong;&lt;br /&gt;
string theString;&lt;br /&gt;
object theObject;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Assignment of variables ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
int theInt, anotherInt;&lt;br /&gt;
theInt = 0;&lt;br /&gt;
anotherInt = 10;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Casting ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
string theString;&lt;br /&gt;
theString = &amp;quot;5&amp;quot;;&lt;br /&gt;
int theInt;&lt;br /&gt;
theInt = (int)theString;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NULL ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
object theObject;&lt;br /&gt;
theObject = NULL;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Data_Partitions&amp;diff=4115</id>
		<title>Data Partitions</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Data_Partitions&amp;diff=4115"/>
				<updated>2010-11-18T12:41:18Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:Configuration]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Data Partitions are subsets of the database with restricted access based on their content. A Data Partition restricts access with a defined set of constraints. The Data Partitions are associated with Contacts via their Access Type. For legacy purposes Data Partitions can also be associated with a Contact Record directly, however this is not a recommended method. &lt;br /&gt;
&lt;br /&gt;
== Controlled Tables ==&lt;br /&gt;
Constraints can only be created for tables in the Controlled Tables list. There is no GUI supported method of adding tables to the Controlled Tables list, but the process can be achieved via a data load.&lt;br /&gt;
&lt;br /&gt;
Example load:&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;TABLE Controlled_Table&lt;br /&gt;
   del desc obj_name sym&lt;br /&gt;
   { &amp;quot;0&amp;quot; ,&amp;quot;Activity Log tables&amp;quot; ,&amp;quot;alg&amp;quot; ,&amp;quot;Act_Log&amp;quot; }&lt;br /&gt;
   { &amp;quot;0&amp;quot; ,&amp;quot;Change Activity Log tables&amp;quot; ,&amp;quot;chgalg&amp;quot; ,&amp;quot;Change_Act_Log&amp;quot; }&lt;br /&gt;
   { &amp;quot;0&amp;quot; ,&amp;quot;Issue Activity Log tables&amp;quot; ,&amp;quot;issalg&amp;quot; ,&amp;quot;Issue_Act_Log&amp;quot; }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Constraint Types ==&lt;br /&gt;
* '''Create''' - New records must satisfy this constraint before a save can be completed.&lt;br /&gt;
* '''Defaults''' - Sets default values to be set on an empty field of a new record.&lt;br /&gt;
* '''Delete''' - Specifies what records can be deleted by the user.&lt;br /&gt;
* '''Pre-update''' - Identifies the records that can be updated by the user. Records not satisfying this constraint can only be view as read-only.&lt;br /&gt;
* '''Update''' - Updated records must satisfy this constraint in order to be saved.&lt;br /&gt;
* '''View''' - Identifies the records that can be viewed.&lt;br /&gt;
&lt;br /&gt;
== Example Constraints ==&lt;br /&gt;
{| style=&amp;quot;width:100%;vertical-align:top;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:15%;&amp;quot; | Table&lt;br /&gt;
! style=&amp;quot;width:15%;&amp;quot; | Type&lt;br /&gt;
! style=&amp;quot;width:25%;&amp;quot; | Syntax&lt;br /&gt;
! style=&amp;quot;width:45%;&amp;quot; | Description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Act_Log'''&lt;br /&gt;
| Pre-Update&lt;br /&gt;
| id = 1&lt;br /&gt;
| Prevents the update of Activities in the Request, Incident, and Problem Activity Log.*&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''ca_contact'''&lt;br /&gt;
| Pre-Update&lt;br /&gt;
| id = @root.id&lt;br /&gt;
| Only permit update of your own Contact Record.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''ca_contact'''&lt;br /&gt;
| Pre-Update&lt;br /&gt;
| id = U'00'&lt;br /&gt;
| Prevent updating of any Contact.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''ca_contact'''&lt;br /&gt;
| View&lt;br /&gt;
| last_name NOT LIKE 'KT%'&lt;br /&gt;
| Prevent display of any Groups beginning with the letters 'KT'&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Call_Req'''&lt;br /&gt;
| Create&lt;br /&gt;
| customer = @root.id&lt;br /&gt;
| Allowing only the creation of tickets where you are the End User&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Call_Req'''&lt;br /&gt;
| Default&lt;br /&gt;
| type = 'I'&lt;br /&gt;
| Create an Incident&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Call_Req'''&lt;br /&gt;
| Default&lt;br /&gt;
| category = 'pcat:400001'&lt;br /&gt;
| Set a default Request/Incident/Problem Area&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Call_Req'''&lt;br /&gt;
| Default&lt;br /&gt;
| group = U'807AEA15E8A2CF4ABF9181CBFEA12899'&lt;br /&gt;
| Set a default Group&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Call_Req'''&lt;br /&gt;
| Delete&lt;br /&gt;
| id = 1&lt;br /&gt;
| Prevent the deletion of any tickets&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Call_Req'''&lt;br /&gt;
| Pre-Update&lt;br /&gt;
| customer = @root.id&lt;br /&gt;
| Allowing only the updating of tickets where you are the End User&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Call_Req'''&lt;br /&gt;
| View&lt;br /&gt;
| customer = @root.id&lt;br /&gt;
| Allowing only the viewing of tickets where you are the End User&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Change_Act_Log'''&lt;br /&gt;
| Pre-Update&lt;br /&gt;
| id = 1&lt;br /&gt;
| Prevents the update of Activities in the CO Activity Log.*&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Change_Request'''&lt;br /&gt;
| Create&lt;br /&gt;
| id = 1&lt;br /&gt;
| Prevents the creation of a new Change Order&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Cr_Status'''&lt;br /&gt;
| View&lt;br /&gt;
| code IN ('ACK','OP','RE','WIP')&lt;br /&gt;
| Display a set list of Status Options&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''prob_ctg'''&lt;br /&gt;
| View&lt;br /&gt;
| sym like 'Application'&lt;br /&gt;
| Display only the Application Areas&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Workflow_Task'''&lt;br /&gt;
| Delete&lt;br /&gt;
| task != 'APP'&lt;br /&gt;
| Prevents the deletion of the Approval task.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Workflow_Task'''&lt;br /&gt;
| Delete&lt;br /&gt;
| status = 'WAIT' OR status = 'PEND'&lt;br /&gt;
| Prevents the deletion of completed tasks.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''Workflow_Task'''&lt;br /&gt;
| View&lt;br /&gt;
| status != 'SKIP'&lt;br /&gt;
| Prevents view of the SKIP status.&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| '''ca_contact'''&lt;br /&gt;
| View&lt;br /&gt;
| (last_name NOT LIKE 'Group_Name')&lt;br /&gt;
| when we insert the above to access type; that access type wont be able to see the above group name&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Help:Sandbox&amp;diff=4114</id>
		<title>Help:Sandbox</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Help:Sandbox&amp;diff=4114"/>
				<updated>2010-11-18T12:29:22Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ipbwiki_topiclist forumid=4,5 count=5 /&amp;gt;&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=QREL&amp;diff=4113</id>
		<title>QREL</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=QREL&amp;diff=4113"/>
				<updated>2010-11-18T12:28:44Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:r6]]&lt;br /&gt;
[[Category:r11]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
A QREL attribute is a &amp;quot;Query RELation&amp;quot;. A QREL attribute is also a list of objects defined by a where clause.&lt;br /&gt;
&lt;br /&gt;
'''QREL Syntax'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;children QREL chg DYNAMIC {&lt;br /&gt;
WHERE &amp;quot;parent = ? &amp;quot; ;&lt;br /&gt;
PARAM_NAMES { id } ;&lt;br /&gt;
DOMSET chg_list ;&lt;br /&gt;
} ;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Used to access a list of objects related to the current object using where clause&lt;br /&gt;
Many to One Relationship&amp;lt;br&amp;gt;&lt;br /&gt;
'''Example:''' The relationship of many Child Requests to Parent Request&lt;br /&gt;
&lt;br /&gt;
Indicates a virtual column representing a set of objects selected by the&lt;br /&gt;
where clause on the Advanced tab. It exists only in the Object Engine&lt;br /&gt;
and is not physically stored in the database.&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	<entry>
		<id>http://greggsmith.net/wiki/index.php?title=Maileater&amp;diff=4112</id>
		<title>Maileater</title>
		<link rel="alternate" type="text/html" href="http://greggsmith.net/wiki/index.php?title=Maileater&amp;diff=4112"/>
				<updated>2010-11-18T12:25:08Z</updated>
		
		<summary type="html">&lt;p&gt;FrankTR: reverting vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[Category:Configuration]]&lt;br /&gt;
[[Category:Integration]]&lt;br /&gt;
[[Category:r6]]&lt;br /&gt;
[[Category:r11]]&lt;br /&gt;
{{Global Header}}&lt;br /&gt;
{{Global Announcement}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This article provides details about the maileater functionality. Maileater is a legacy feature used to create and update tickets via an email. It is very limited in its flexibilities and is best for automated ticket creation by enterprise systems that are not web services capabilities. Although it is an aged and outdated practice, many company's rely on email as a source for ticket generation, and thus rely on maileater to automate ticket creation.&lt;br /&gt;
&lt;br /&gt;
== How it Works ==&lt;br /&gt;
Once enabled, Maileater will access the specified email inbox via POP3 or IMAP. All emails in the inbox are processed. Emails that are properly configured and contain the required information will generate new tickets or update existing tickets. An email is sent verifying a successful creation or update. Emails that are properly configured but are lacking required information, such as any required fields, will generate an a failure email. Emails that are improperly configured have no reply email generated. All emails that are processed are deleted from the inbox.&lt;br /&gt;
&lt;br /&gt;
== Enabling maileater ==&lt;br /&gt;
Maileater is enabled via the [[Options_Manager#Email|Options Manager]]. All maileater options are prefixed with the word ''maileater''.&lt;br /&gt;
&lt;br /&gt;
== Understanding text_api ==&lt;br /&gt;
Maileater is driven by the text_api.cfg. All the values that can be set via an email can be found in the [[text_api]]. Additional attributes can be added to the &amp;lt;nowiki&amp;gt;[KEYWORDS]&amp;lt;/nowiki&amp;gt; section of the text_api to allow for setting custom fields or alternate methods of setting default fields. &lt;br /&gt;
&lt;br /&gt;
The sections specific to Maileater are &amp;lt;nowiki&amp;gt;[EMAIL_DEFAULTS]&amp;lt;/nowiki&amp;gt; and &amp;lt;nowiki&amp;gt;[EMAIL_IGNORE_INCOMING]&amp;lt;/nowiki&amp;gt;. &lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[EMAIL_DEFAULTS]&amp;lt;/nowiki&amp;gt; are used to consistently set the same value for all email generated tickets. For example, if you always want a specific initial Priority level, then identify it here. This eliminates the need for having to account for the Priority in the body of the email. However, any values identified in the email take priority over those set in &amp;lt;nowiki&amp;gt;[EMAIL_DEFAULTS]&amp;lt;/nowiki&amp;gt;. In other words, the &amp;lt;nowiki&amp;gt;[EMAIL_DEFAULTS]&amp;lt;/nowiki&amp;gt; is a backup just in case the email does not contain any value for that particular variable.&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[EMAIL_IGNORE_INCOMING]&amp;lt;/nowiki&amp;gt; allows you to identify fields that are not permitted to be set via an email. This can be helpful for maintaining standards.&lt;br /&gt;
&lt;br /&gt;
== Configuring the Email Message ==&lt;br /&gt;
An email message that Maileater is to process must have a precise configuration.&lt;br /&gt;
&lt;br /&gt;
'''Subject Line'''&amp;lt;br&amp;gt;&lt;br /&gt;
The Subject Line must contain either the word REQUEST, CHANGE, or ISSUE. See the text_api.cfg and see how items are all referenced in the same manner. Since the system will set the Affected End User based on the email account sending the email, the -m argument can be used to trump this functionality. &lt;br /&gt;
&lt;br /&gt;
For example, &lt;br /&gt;
If Gregg sent an email with ''REQUEST'' in the subject line, a Request would be created where Gregg is the Affected End User. But if he send an email with ''REQUEST -m gityerfix@servicedeskusers.com'' as the subject, then a Request would be created with Gityerfix as the Affected End User.&lt;br /&gt;
&lt;br /&gt;
'''Body'''&amp;lt;br&amp;gt;&lt;br /&gt;
The message body by default is treated as the ticket Description unless otherwise noted. To set other fields via the email use a format that coincides with the &amp;lt;nowiki&amp;gt;[KEYWORD]&amp;lt;/nowiki&amp;gt; values identified in the text_api similar to this example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;%PRIORITY=1&lt;br /&gt;
%CATEGORY=ServiceDeskUsers&lt;br /&gt;
%IMPACT=5&lt;br /&gt;
%DESCRIPTION=SDU is great&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Handling required fields ==&lt;br /&gt;
There are two ways to handle required fields. &lt;br /&gt;
#Account for them in the email body.&lt;br /&gt;
#Account for them in the text_api.cfg in the &amp;lt;nowiki&amp;gt;[EMAIL_DEFAULTS]&amp;lt;/nowiki&amp;gt; section. &lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
*'''No way of setting the Parent.''' If there is a way of doing this, it is a well guarded secret. &lt;br /&gt;
&lt;br /&gt;
*'''Dependent on intelligence of the sender.''' This means that Service Desk has no way of knowing what the correct values should be if enter incorrectly, and no way way of knowing that multiple emails from an auto-generating system are regarding the same issue.&lt;br /&gt;
&lt;br /&gt;
*'''Only one existence of the user's email.''' If the -m argument does not exist in the subject line of the email, then the FROM ADDRESS is used to determine the End User of the ticket. The system will look for the existence of that email address and the contact record containing that email address becomes the Affected End User. However, if there are multiple instances of the email address, problems can occur. &lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
#The ''best practice'' is to '''restrict the use of Maileater''' to the auto-generation of tickets via systems that do not have web services capabilities. Web Services is a much more flexibly method of automating ticket creation. Web Services is a direct A to B communication, where as Maileater is A to B to C where B is the mail system. Consequently using maileater adds an addition point of failure.&lt;br /&gt;
#'''Promote level 0''' support. While email support is cheaper than phone support, self-help is the absolute cheapest. And in order to promote self-help you have to get the users to utilize the application. Using maileater does not help to promote this directive and only results in users being dependent on an outdated and archaic form of support. &lt;br /&gt;
#If you do elect to utilize Maileater, have a '''dedicated email''' address used exclusively by Maileater. As Maileater processes emails it deletes them from the inbox. For this reason, it is not practical for the Maileater inbox to be used by anything (or anyone) else.&lt;/div&gt;</summary>
		<author><name>FrankTR</name></author>	</entry>

	</feed>