ITG Plus: Tips & Tricks

A definitive resource for for ITG developers. Check out the nitty gritties of ITG in simple words and learn them through simple examples.

My Photo
Name:
Location: India

A software professional from India with 16+ years of IT experience. Worked on diverse technologies from various vendors, such as Microsoft technologies, IBM groupware, Project and Portfolio Management, Database Systems, Configuration Management, Document Management etc. In my leisure time, I like to share ideas. Hence this blog. Find out more about me. Important note: Ideas and opinion expressed in this blog are strictly my personal opinion and in no way represent the viewpoint of my employer and vice-versa. All content here must be seen in my individual capacity.

Wednesday, November 16, 2005

Notification Delays

Its raining outside and I am waiting for a notification from ITG. I performed an action on a request and it was expected to send me a confirmation. What's going on?!?

Did you ever feel that email notifications were not being sent in time by ITG? I did. And I researched why. Turned out it was a setting in server.conf. The settings is named
EMAIL_NOTIFICATION_CHECK_INTERVAL. It specifies, in seconds, how often the service responsible for sending email notifications should run. If it is set to 600, the service would run every 10 minutes. So even if you perform an action 'now' and you expect a notification 'immediately', it would do so only when the scheduler runs next.

Now that was very simple a reason, isn't it!!!


Well, one more tip before I leave for the day. Wanna turn off notifications from an ITG server altogether?

Open server.conf and set the parameter com.kintana.core.server.TURN_ON_NOTIFICATIONS to false. Run /bin/kUpdateHtml.sh and re-start the ITG server. Bingo! No more notifs from ITG. About the time you start carrying your PDA to dinner with you!

-- Ranjeet Rain

Saturday, November 12, 2005

Retrieving a list of fields

One of the first things I wanted to do when i was learning ITG configuration was: I wanted a list of all the fields that a request type had, along with its properties. You bet its much easy to debug an object if you have all the property values etc associated with it. Given that ITG doesn't feature a full scale development environment, it would be kinda cool if you can have a list of fields along with its attribute in an Excel sheet, right? Well, I didn't really get down to creating an Excel sheet to fetch the details, but I did write this query that serves as a Q&D (quick and dirty) tool for my purpose. Just type in this query in SQL runner right from within Workbench and replace the request type name with the one you want.



SELECT f.section_id "Section ID", s.section_name "Section name",
f.prompt "Field prompt", f.description "Description",
f.parameter_token "Token", v.validation_name "Associated validation",
f.enabled_flag "Is enabled", f.display_flag "Is displayed",
f.searchable_flag "Is searchable", f.required_flag "Is required",
f.parameter_set_field_id,
f.ROW_NUMBER "Row", f.column_number "Column",
f.batch_number "Batch", f.parameter_column_number "Parameter"
FROM knta_parameter_set_fields f, knta_validations v, knta_sections s
WHERE f.parameter_set_context_id IN (
SELECT parameter_set_context_id PCS_ID
FROM knta_parameter_set_contexts PSC
WHERE context_value IN (
SELECT TO_CHAR (request_type_id)
FROM kcrt_request_types
WHERE request_type_name IN
('&REQUEST_TYPE_NAME_HERE')
UNION
SELECT TO_CHAR (request_header_type_id)
FROM kcrt_request_types
WHERE request_type_name IN
('&REQUEST_TYPE_NAME_HERE')))
AND f.validation_id = v.validation_id
AND f.section_id = s.section_id
ORDER BY 1, 12, 13



As you can see, its not a lot of work. A rather simple query. In fact, if you study the KNTA_Parameter_Set_Fields table, you will find it rather interesting. I did some analysis and was surprised to know how simple it was to do various things I would have liked to do.


-- Ranjeet Rain

Friday, November 11, 2005

ITG Shortcuts

Did you ever feel bugged with the way 3 windows keep sitting heavily on your head when you have to work with Workbench? Are you among the people who like to keep the number of open windows to minimum? Or do you feel tired of finding your most used ITG commands buried under a menu hierarchy? Are you tired of too much scrolling or collapsing/expanding menus? Read on, I got some tricks up my sleeves...

You can open Workbench directly, i.e. without logging into ITG HTML interface first. Yes, that true. And simple too! Do this.

  • Create a bookmark and add it to your web browser favorites. Name it Launch Workbench.

  • Make it point to http://<your_server>/itg/web/knta/global/Workbench.jsp?FROM_LINK=Y

  • Now you can just type "Launch Workbench" in your web broser and launch workbench without firstly logging into HTML interface. Of course you will have to authenticate yourself if not already done.

Do you want something similar for creating a new request as well? It would be kinda cool to just type something like CreReq in web browser and get the Create New Request screen, isn't it? Not a problem. I'll tell you the trick for that as well.

  • Create a bookmark and add it to your web browser favorites. Name it CreReq.

  • Make it point to javascript:function
    l(){window.open('/itg/web/knta/crt/RequestCreateList.jsp?NAV_MENU_LINK=Y', '',
    '');} l()

  • Now you can just type "CreReq" in your web broser and quickly create a new request. Of course you should try this ONLY from a window in which you are already running a valid ITG session.

In fact you could use these methods for creating a lot of other shortcuts. Watch out this space for more on this.



-- Ranjeet Rain

Tuesday, November 08, 2005

New to ITG? Read on!

A lot of people join ITG domain everyday. They have many questions they find difficult to find answers of. Here at this page I will touch upon some things a person new to this technology domain or a person planning to join this technology domain should know.

Every person coming to ITG Domain gets an opportunity to enjoy his/her share of fun learning it. That, this is an uncoventional technology domain is not a secret. In fact, I would fall short of calling it a technology domain. This is more like a modelling tool, to translate business processes into data collection forms to help enhance visibility into buisnesses thus making decision making at higher level easier.

A person joining this technology with no prior IT experince has a different set of problems learning this tool from the ones transitioning from another domain. The former has to learn entirely new concepts making the grasp difficult and the later has to potentially unlearn some concepts in order to learn new ways of doing things. Regardless of which category you fall under, I have some tips for you here at this page.

One thing that you should be clear about is -- IT Governance Center is NOT about software development. It is a form of concept selling. Don't expect ITG to turn a business into a billion dollar corporation overnight. It is but a mere tool that can enhance visibilty and control over operations in a business, thus, potentially increasing profits and making the organization benefit from the investment.

If you are learning ITG Center, from the perspective of facing the real life challenges, i.e. doing actual development (configuration in ITG terminology), you should know primarily about Workflows, Request types, Portlets and Reports. Most important skills to have are:

Very clear understanding of Workflow configuration:

  • What is a decision step?
  • What is an execution step?
  • What is a transition?
  • How to work with Timeouts?
  • How to configure notifications?

Very clear understanding of Request Type configuration:

  • Identify correctly the need to customize a Request Header Type.
  • What are validations? How to make use of validations optimally?
  • Laying out fields on a Request Type for optimal visual ergonomics
  • Using Field attributes to control appearance and editability of user input
  • Using Tokens to access runtime data

General Skills:

  • Configuring Data sources
  • Configuring Portlets
  • Configuring Reports
  • Understanding ITG base schema
  • Understanding ITG RML schema

Among the above mentioned categories, the first two list basic skill. Everyone joining this domain must posses these skills. The 3rd category lists slightly higher level of skills that one may do without in his first couple of weeks/months of working with this tool. But ultimately everyone should target to have these skill in a longer-run. A category of even higher level skills to have would be:

  • Integration of ITG with other tools
  • Data export/import/migration
  • Back-end operations/Open Interface
These are some of the skills one can do absolutely without in first six months. But as one moves along, in due course these skills would be required.

Here I will stop delving further deep into these topics individually. But yes, I will be talking about them all, in due course. Watch out this space.

Happy learning!

-- Ranjeet Rain



Monday, November 07, 2005

Setting the search flag

Recently, I encountered a problem where I needed to make all the fields that were used in request types searchable. By default we don't make all fields searchable. We use our judgement, unless otherwise governed by a Requirement Specification Document, to mark the fields as searchable. Considering that there were many request types and number of fields per request type were large, I didn't think it was a great solution to do all the work manually. A little bit of thinking and I came up with this SQL procedure that would mark all the visible fields on a request type as searchable.





CREATE OR REPLACE PROCEDURE <procedure_name>IS
BEGIN
For i
in
(select PARAMETER_SET_FIELD_ID, DISPLAY_FLAG from knta_parameter_set_fields a where parameter_set_context_id
IN
(Select parameter_set_context_id
from knta_parameter_set_contexts
where context_value
IN
(SELECT TO_CHAR(REQUEST_TYPE_ID) FROM KCRT_REQUEST_TYPES WHERE REQUEST_TYPE_NAME IN('<Request_Type_Name>')
)
)
)

LOOP
update knta_parameter_set_fields set SEARCHABLE_FLAG = i.DISPLAY_FLAG WHERE
parameter_set_field_ID =
i.PARAMETER_SET_FIELD_ID
;
END
LOOP;
commit;




EXCEPTION

WHEN others
then
rollback;
dbms_output.put_line (
'Update of the Field Security Tables
Failed :'
sqlcode':'sqlerrm
);
END
<procedure_name>;
/


Notice that the name of the request type to work on is hardcoded in the procedure. One enhancement I would suggest is -- make the procedure accept the name of the request type to set the flag in. The script is straight-forward, so I will not include an explanation. Hopefully, you can use it.

- Ranjeet Rain

Hello IT Governance World

Hi there,

Recently I underwent a "technology-change" operation. Earlier I was into Lotus Domino. Now I am required to work in IT Governance Center domain. I am happy to report that the operation was successful and all my organs are back to working like before.

Now everyday I come across a new idea or a new challenge in my new technology domain, I feel the urge of sharing it with others who might need a solution to a similar problem. I am against reinventing the wheel. So here I am, with a blog. Here you can find my two cents of worth on things I have. You may or may not always agree with me, and I assume that. Nonetheless, hope you will benefit from the effort.

Ranjeet Rain



PS: I really really wished to have http://itgcentral.blogspot.com But some gentleman has "reserved" that URL. He signed up in november 2004 but never posted to the blog till this date. I hope to get that address if somehow his membership expires. Or may be he volunteers to give me away that URL.