Sunday, October 25, 2009

10 Things I Wish I Knew About ITSM when i got started

When someone gets started with ITSM,there are a few points/concepts which if clear would make life much easy :-).There are couple of reasons for this -something which you think is a 'customization' that needs to be built,might be already existing in some form or the other or even there could be some existing functionality that would help you to build your customization very easily or even understanding them would help you to know in detail about how the product behaves

The points below were consolidated so that it can benefit everyone who works on BMC Remedy ITSM.

1.Multi-tenancy
In the BMC Remedy ITSM applications, the multi-tenancy feature is available for Data segregation based on company. Access to data is controlled by a user’s access to a company.
(reading up a little bit about field 112 would be helpful as-well).
This feature is enabled from Application Administration Console>Custom Configuration>Foundation>Advanced Options>System Configuration Settings-System Settings

2.Restricted and Unrestricted access
This is related to multi-tenancy & for restricting data access of individuals to only companies that are relevant for them.Unrestricted users can access data for all companies based on there application permissions (Say a Global Support Manager).This is configured from People form’s Login/Access Tab.Check “Unrestricted Access” for granting such an access to a user.For restricting access to specific companies, add them into “Access Restrictions” Table

3.ITSM in a DSO environment

ITSM Installer now provides more support for DSO (7.5.xx onwards).Another good thing about the installer is that it is consolidated (ServiceDesk,Change Management & Asset Management) & runs on multiple platforms (InstallAnywhere based).Enable user defined prefix from SYS:System Settings.The 'Custom prefixes' are one of the most important aspects of a DSO enabled environment for ITSM.Update SHR:SchemaNames in the other server for appropriate application prefix (user defined prefix).Update field default for field ID 1 to match the prefix setup in above step.For additional information,refer ITSM-DSO-Enablement.doc

4.ITSM plug-ins
Another common query is regarding the plugins used by ITSM.Below is a list of few important ones
4.1ARDBC Plugin : Provides Overview console functionality, a view of work assigned across multiple applications. Query on the Vendor form triggers the plug-in

4.2Command Automation Interface (CAI) – libcaieventcmd/caiventcmd.dll :Primarily used by Requestor Console ,SRMS,TMS etc. CAI subsystem provides a common infrastructure that can be shared across applications for integration. It is a filter API plug-in

DVF Plug-ins ( These are for data visualization to provide graphical representation of data)

1.Task Viewer – Provides a graphical representation of tasks, task groups and their sequencing
2.Change/Release Calendar – Provides a calendar representation of changes/releases within the Organization.This is very important for scheduling changes /releases. Similar to outlook calendar view

5.Approval mapping & Integration with approval server

in ITSM,there is tight integration with approval server.Applications like change management have this integration because critical changes done to the production infrastructure needs to be following the approval process of the enterprise so that sufficient "what-if" scenarios can be thought about & appropriate sign-offs can be obtained.

Approval Mappings for Change Management Application is done from Application Administration Console>Custom Configuration>Change Management>Approval> Approval Mappings

Approval Process Configuration is done from Application Administration console>Custom Configuration>Foundation>Advanced Options>Approval Process Configuration

The approval processes that are configured can be based on CI (Configuration Item) and IA (Impacted Area)

Approval Rules involved in these processes can be viewed/customized from the form AP:Administration console

6.Risk Management


Risk assessment within change management helps to achieve greater productivity by combining qualitative and quantitative criteria for assessing the risk level associated with a change.The computed risk value can be selected, based on answers to a series of predefined questions.Derived risk factors are based on the historical performance of different aspects of a change. For all configured derived risks, a cumulative performance rating is stored

7.Release Manifest
The Release manifest defines the content of the Release.The manifest can consist of Activities and/or Change Requests.Manifest is used to provide a consolidated view needed to drive completion of the Changes and the Activities required to Close the Release.

Milestones are used to provide grouping mechanism to identify key points within in the Release process.

8.ITSM Notifications
Notifications are very important from the application's perspective because they keep key people informed

You can customize an individual’s notification preferences. Notification preferences vary by module

User Level - General preferences - They are configured in Notifications tab in people form
Configurable from the Notification tab of Application Rules

Notifications are Message Tag/Event DrivenYou can customize your own notification messages from the SYS:Notification Messages form. The SYS:Notification Messages form contains the notification text for each event.

Notification Message Tag is used by the notification workflow to identify the specific message to be sent. Each notification event can be associated with several notification messages.
formed on what is going on.

9.Impact Analysis
Change Impact Management: Thre are ways of Automated, intelligent and accurate change impact assessment to pro-actively determine impact to Services and mitigate risk of implementing a Change Request .When touching a CI it is difficult to understand the impact of the change: Atrium Impact Simulator -Provides “what if” CI impact analysis for ITSM applications.Higher level of service assurance can be provided before planning or approving changes to the production environment.This will reduce possible change collisions-(using Collision Detection functionality)

10.Integration with external apps – Web service & interface forms
Integration with external apps can be esility done with Web service & interface forms
Web services allow third-party integration tools to create, modify and query requests

They are built on top of Application Interface forms which has the Ability to Create requests, specify templates and associations.We can query and modify relationships and work info entries etc associated with a request

e.g. for a webservice is RMS_ReleaseInterface_Create_WS


Wednesday, October 7, 2009

Changing the State of a Remedy Deployable Application Programmatically to “Production”

Recently there was a query on changing the deployable application state to ‘Production” programmatically (using Driver script/API etc)

The challenge was that there was a new Deployable application “My Deployable App” that was made by a colleague which he was deploying using the rik loadapp command with in a batch file. He was also importing ARX records corresponding to the roles to group mapping for his new application into the "Roles" from. The application & roles got created and mappings with group was also correct, but the application State was “Maintenance” and he wanted to set it to “Production” automatically without any user intervention or without using Developer Studio



Solution:
By default, deployable applications are imported in the Maintenance state. When an application is in the Maintenance state, only members of the Administrator group have permissions to use it. This is AR System behaviour by design,but ARsystem does allow you to change it using API calls (which Devstudio does when you change the dropdown value)

To change the state of the application, we can use driver command “sas” which stands for set application status. Below is a useful driver script snippet to change the status of the deployable application to “Production”

init
sas
My Deployable Application
Production
term
q

There is also a “gas” command that stands for get application status which can be used to retrieve the status of a deployable application

Monday, March 30, 2009

"Service Call" feature in Remedy 7.5

Service Call is one of the cool features of ARSystem available from the 7.1.00 release itself. It allows applications to execute workflows asynchronously (without getting/updating/deleting requests).

Okay, but what is the big deal in that? Let me explain…Imagine you have some filters which you wish should get fired as soon as some of your activelinks get executed. but for your filter to get fired, usually you need to perform some get/update/delete operations on some requests(to make the execution options “Modify”/”Submit”/”Delete”/”GetEntry” trigger the filter)….The Service Call can be your best friend in such a situation.

Let me explain with a more practical example. Imagine, on your “Window Loaded” there are some 10 odd activelinks which do some setfield action in which the data source is some other forms. The server roundtrips for each of these setfield actions can result in some delay over a big WAN. You can use a service call to optimize this situation. Get all your values in one single “Service Call”.

So how can you do all that?..very simple..as the concept of “Callback” ,it is the same here..(Of course I know you have coded in a lot of programming languages).The Activelink which gets called on your “Window Loaded” event notifies a filter which gets fired on “Service” action


The activelink can perform this notification by invoking the Service action. It needs to give an input mapping and an output mapping. The values that are specified in the input mapping gets passed to the filter. In turn the output mapping receives the values that the filter reads and keeps in the transaction.


So in short,the flow is like this

Activelink -> Notify Filter (using Service Action) and pass the required values (Input Mapping)

Filter – Perform the actual operation (do all the required setfields)

Filter - >Pass back the values to the Activelink as mentioned in the output mapping (similar to callback)

There are options to dynamically specify the server name and the form name at runtime as well. The good part is that the service action can be invoked from Activelinks, Filters and Escalations

The Service active link action executes an internal AR System service or an
external web service. ARServiceEntry C API function implements the Service active link action

More details on this feature can be obtained from BMC Remedy Action Request System 7.5.00
Workflow Objects Guide,BMC Remedy Action Request System
Version 7.1.00 – whats new pdf and the C API Reference guide .I am intentionally not duplicating the same data here as I am sure you will be having those pdfs. Searching for “Service Action” will take you to the description.
I found the Service Call functionality very usefull and was able to leverage it for improving application perfomance across WAN

Sunday, March 9, 2008

How do i convert my email account(with a lot of storage space :-P ) as a filesystem like the GMail Drive?

Well,many people thought about doing this from the very day they saw the below line at the gmail homepage
"Lots of space Over 2757.272164 megabytes (and counting) of free storage so you'll never need to delete another message."
Now that the gmail storage has multiplied( 6501.217310 ...),the interest of people has also grown towards the concept.Many competitors also started providing huge email storage. One significant point to note is that you can convert any email account into a file system.Think about it for a while...Think about SMTP,MIME,IMAP & POP3 ..if you are familiar with those,you got the answer!!!.

Wait,think about what happens when you send an email to your self with a file as an attachment.
of course i agree that there will be an attachment size limitation.Suppose if a software automatically splits your file and sends multiple mails to your own account and retrieves them in a nice fashion and displays it to you in an explorer like window or like a FS mounted to your *nix box ???gotcha..cool idea!!!

It all started when Richard Jones thought about a Gmail Filesystem and implemented it in Python.It is a mountable Linux filesystem which uses your Gmail account as its storage medium. it uses the FUSE userland filesystem infrastructure to help provide the filesystem, and libgmail to communicate with Gmail.
A lot of other libraries and applications also came up on similar lines.Let me list out a few of them here.It will definitely benefit you if you are a developer.

libgmail - A Python based API for Gmail Access
gmail.py - A Python API for Gmail Access.
libgmailer - A Php-based API for the Gmail Access. Requires the php CURL extension.
Gmail API - A .Net Library for Gmail Access
jGmail API - A Java based Library for Gmail Access

The discussion wont be complete with out mentioning GMail Drive Shell Extension by bjarke.
It creates a virtual filesystem on top of your Google Gmail account and enables you to save and retrieve files stored on your Gmail account directly from inside Windows Explorer. GMail Drive literally adds a new drive to your computer under the My Computer folder, where you can create new folders, copy and drag'n'drop files to it.
If you are a windows C++ developer,he has some C++ source code and code snippets for various programming libraries for you.Have a look at http://www.viksoe.dk/
It is also nice to have a look at the gVault,a java implementation of a Gmail based cryptographic network file system.It was designed by a few guys from University of California, Irviney, Brigham Young Universityz, University of Bologna, Italy.They have also provided a nice pdf explaining their design & implemenation http://www.ics.uci.edu/~rjammala/gVault.pdf
Even i have come up with a generalized design & implementation of a mail file system utilizing any email account that supports IMAP & SMTP.It is basically is a windows shell name space extension allowing the users to have a virtual drive. It appears as a local hard disk drive & enables the user to use the standard Windows desktop file copy and paste commands to transfer files.When the user creates a new file inside the Virtual Drive(when he does a copy & paste), it generates an e-mail and sends it to the users inbox. The e-mail appears in the normal Inbox folder when using the normal webmail interface, and the file is attached as an e-mail attachment. The subject line will be having a special keyword "[MAILDRIVE]" for optimizing search. It periodically checks the mail account to see if new files have arrived and to rebuild the virtual drive's directory structures.It also provides access to the virtual drive from multiple systems simultaneously providing functionalities of a fileserver.The meta data about each file is also maintained inside the email.

Friday, March 7, 2008

how do i combine multiple pdf files into one?

Well,for combining multiple pdf files into one,as usual there are two approaches that i can suggest
1.The easy way in which you don't have to worry about too much of internal details
There is a nice little utility called pdftk (the pdf toolkit) which allows you to manipulate pdf files in a variety of ways(like merging files,repairing corrupted pdfs,update pdf meta data etc).
You can download the utility from the url http://www.pdfhacks.com/pdftk/#packages
download is available for windows also.For ubuntu,you can also use apt to get it installed
from your terminal,type sudo apt-get install gs pdftk.Once it is installed you can issue the command as shown in the below example
jobinwl@jobinwl-laptop:/media/sda1/videooutput/pscan$ pdftk 1.pdf 2.pdf 3.pdf 4. pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf 11.pdf 12.pdf 13.pdf 14.pdf 15.pdf 16.p df 17.pdf 18.pdf 19.pdf 20.pdf 21.pdf cat output /home/jobinwl/Desktop/full.pdf
it will combine all the pdfs into one single file called full.pdf

2.The programmatic way in which you have a full control over the process
Let us see how to make a little utility program to get this done.Since pdf files are involved,we will be using the iText java library(assuming we are making it in java,there is also a .Net implementation of the same called iTextSharp). i am sure you must have heard about iText...it is an awesome java library that helps you to do a lot of pdf related operations like dynamic pdf creation or manipulation
source code is available here :http://docs.google.com/Doc?id=dr47ftb_2gsmgm5zs

Thursday, March 6, 2008

How do i reduce the size of my executable?

One of my firends asked this question to me over email.I thought it would be great to answer it here so that it will help many others with similar queries.
The size of an executable depends on a lot of factors like the compiler,linker & libraries that you use,the operating system on which these tools run,the format of the binary(say exe,dll or PE (Portable Executable) in general for windows,ELF for *nix etc).Most compilers provide you "compiler switches" which helps you to specify a lot of settings like even howmuch debugging info you want to keep in the final executable. The structure of PE & ELF binaries are described here Now let us deal with some scenareos
1.Imagine you want an "easy solution" to compress the executable with out worrying much about the internal structure of an executable. Great,have a look UPX (Ultimate Packer for eXecutables).A great opensource tool avilable at http://upx.sourceforge.net/ .It helps to compress many executable formats.(works with windows,linux etc).Just download the utility & run it along with your executable name and approptiate switches.I will give you an example below. Assume you have a 32 bit exe called myprog.exe on a windows machine & you have UPX,run it as shown below C:\Jobin\Personal\setups\upx302w\upx302w>upx- 9 -o Compressed.exe myprog.exe
Ultimate Packer for eXecutables
Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007
UPX 3.02w Markus Oberhumer, Laszlo Molnar & John Reiser Dec 16th 2007
File size Ratio Format Name
-------------------- ------ ----------- -----------
2720039 -> 2565927 94.33% win32/pe Compressed.exe
Packed 1 file.

2. Imagine your compiler is VC++ 6.0, and you want to use appropriate compiler switches and libraries to get your executable size less.
Well, this is the programmers way...great to know you are interested in reading this.If you remember those good old days when you worked on Turbo C/C++, you had something called as memory models(Tiny,Small,Medium etc).Also think about those 64K segments(CS,DS etc)...those near, far & huge pointers??? Remembering them?If you remember them, then you know how to play around with the compiler switches & memory models. otherwise let me take you to a crisp document which explains it step by step. Just have a look at http://www.hailstorm.net/papers/smallwin32.htm#smallapps

3.I want to still reduce the size of my executable verymuch,can you tell me any other way?
Well,As i mentioned earlier,your executable size is dependent on your compiler,linker,libraries etc.so to have the least size,you need to stay more closer to the CPU :-P
Imagine you wanted to print out the letter "A" from your program..you write the code as below
#include "stdio.h"
int main(void)
{
printf("A");
return 0;
}
Compile it & look at its size..huge??? that is exactly what I was telling you
insted,go to your command prompt and do as shown below
H:\>debug-a 100
138C:0100 mov ah,02
138C:0102 mov dl,41
138C:0104 int 21
138C:0106 int 20
138C:0108
-g
A
Program terminated normally
-r cx
CX 0000:08
-n out.com
-w
Writing 00008 bytes
-q
H:\>dir *.com
Volume in drive H is users Volume Serial Number is 0002-6F60
Directory of H:\
03/07/2008 12:32 PM 8 OUT.COM
1 File(s) 8 bytes 0 Dir(s) 881,819,648 bytes free
H:\>out
A
H:\>
Got it? Just in 8 bytes you printed out "A"...gr8!!! so if you want smaller sized exe,write your code in Assembly. I am sure it can be a debatable suggestion .You may ask me who the hell writes code in asm today??? all I have to say is that any someone might ,depending on their needs. If you decided to try your hands on assembly, you may find NASM handy and open source .Have more queries???shoot a mail to me or post a comment,i will be happy to help you out..have a good day!!!

Inaugural post...walking backwards in space-time

Destiny, If such a thing exists, takes us to where ever we are destined to be!!!

In this little space down here, I am going to write on what ever that i am interested in, aspiring for and working on. I love to colaborate and share thoughts and ideas to the very community which inspired me and motivated me to work on making these digital creatures do amazing things...I am dedicating this blog to all those great minds ,who had spent their entire life for transforming computing into what it is today .I still remember those days when I sat in front of a green monitor with a blinking A:\> after to booting DOS from a 5.25" floppy & putting another working disk to do some GW BASIC programs. Kudos to all of you and your great efforts because of which I have ubuntu running on my PC and i am able to publish this post now...