Saturday, May 15, 2010

ARS: Intermediate: Field Reference in AR System Filter Qualifications: Using TR. and DB.


You can specify a field reference in BMC Remedy AR System filter qualifications in three ways:

field - Filters have the native capacity of checking both the current transaction and then the database values of fields against the conditions in the qualification. i.e., unless restricted using one of TR. or DB. prefixes, Filters check the transaction value of the field in the current transaction first and if that is NULL, then uses the database value.

The value of a field in the current transaction will be NULL if the value has not been modified after the last retrieval. This helps Action Request System in achieving the best performance while transferring data from client to server.

TR.field - If field reference in a Filter is specified like this, the Database value of the field is ignored while evaluating the qualification, even if the value in current Transaction is NULL. As stated earlier, the transaction value of the field remains NULL if the field value has not changed in the current transaction.

This option is often used by AR System Developers to make the Filter perform the actions ONLY IF the field value is modified in the current transaction.

DB. field - If the field is referred with a prefix DB. , the Filter evaluates only the value existing in the Database value while parsing the qualifications. Value in current transaction is ignored irrespective of it is NULL or not.

If you specify only the field without prefixes, the database value is ignored every time if there is a non-NULL value in the current transaction.

I have heard a belief among developers that the usage of TR. or DB. is not recommended. I am not yet sure about the reason why it is not recommended. However, if you use it without properly understanding the meaning of each field reference strategy, you might end up spending some extra time in debugging it. J . Also remember that the prefixes TR. and DB. are limiting a Filter’s native capability to check both transaction and database value in sequence, which may not be desirable always.


Key Words: Remedy AR System Filter Qualifications, Writing Filter Qualifications in BMC Remedy Action Request System Filters, Using TR. and DB. in Filter Qualifications. Field Reference in AR System Filter Qualifications, Field Referencing in ARS, Remedy ARS filter qualifications.


Friday, May 14, 2010

ARS: Intermediate: Writing Better Workflow Qualificaitons


Having an eye on query performance right from the first days of your programming is better. Practice good habits from day one! Thus, later you may not have to pay attention to assure that your code is not the reason for slow performance! I have seen fresh AR System developers writing Workflow without any Run If at all. I have seen them choosing more than necessary Execute On conditions to make sure that the Active Link or Filter will execute in all possible scenarios when they are not sure which conditions shall meet their purpose.

After visiting the production floor of one of the BPO customers in India back in 2007, I felt the 'crime' that a developer does while compromising on application performance is more humanitarian than technical. We spoke to the end users while my team was working on the performance tuning of the application. Most of the BPO agents were complaining that their Performance Appraisals are affected by application slowness. Another group complained that they are not meeting the criteria for performance incentives because the application eats their time. Another group said they started hating their job because their productive hours were spent waiting for the application to respond after every click. They all said one common concern, the application made all of them get lesser incentives, that is application eats all their money and job satisfaction.

Even experienced guys often forget to think about avoiding table scan while writing qualifications.

Some of those to avoid are…

The != Operator

Searches using the != operator check every record to see if the value is NOT contained. Indexes on a field are not used in this case. Searching by what you are looking for gives better performance that what you are not looking for.

Quoting the example given in BMCs documentation: you can rewrite the search qualification ’Status’ != "Closed" to 'Status' < "Closed" to improve the use of an index.

The != operator does not match entries in which the value for the field is NULL. You must explicitly include a test for NULL to find NULL values.

Wildcards in front of search terms

Searches that begin with a leading wildcard (for example, 'Submitter' LIKE

"%John%") does not use the index but scans the database for every record containing the word John. But the search searches with trailing wildcards are valid and use indexes. for example 'Submitter' LIKE “John%" utilizes the indexing.

Poorly written arithmetic operations

Try to use the indexed field on the left side of the equation,

as in the following qualification: 'Create Date' < $TIMESTAMP$ -60*60*24.

Avoid unqualified Run If statements for escalations.

An unqualified Run If statement for an escalation performs an unqualified query to the database table and execute the If actions for every request found in the form. Server performance is especially degraded for unqualified Run If statements in escalations that are set to run at frequent intervals, because the server must search the database every time the escalation is run.

Some of the other query optimization techniques are…

1) Creating effective indices

Index frequently searched(either workflow or by user) fields.

Tip: Too many indices may cause adverse effect hence do indexing with caution.

2) Setting QBE Match to equal or leading

Note: This is done from field properties, ‘QBE Match’ Drop Down

3) Optimizing Menus

Select Refresh ‘On Open’ only when absolutely necessary. Unless you anticipate the data to change so frequently, choose Refresh ‘On Connect’ (this option refreshes menu entries when the form is opened)

For more information, download the ‘Optimizing and Troubleshooting Guide’ from BMC.

I would still say, knowing the performance tuning tips are not compulsory for anyone to do coding in BMC Remedy AR System. But it is vital to be effective in their profession.

Be responsible, do it right!


Thursday, May 6, 2010

ARS: Beginner : Putting Your First Steps in Remedy AR System

For those who are not yet part of an AR System development team but still want to learn Remedy and move closer to or into Remedy AR System development: What are the prerequisites to put your first steps (hands-on) in Remedy?

There are no prerequisites as such! It’s all your willingness and inspiration to read and experiment.

If you are so specific about checking a readiness to do get hands on or if you are someone who doesn’t have the confidence to do it even after doing enough reading, check whether you know the following.

1) Forms

Theoretical understanding of the three main form types, Regular, Display only and Join.

Core fields. (Note: Core fields cannot be deleted; they can be disabled or hidden)

2) Fields

Character fields and Integer to begin with. Rest are nice to haves on your first day.

3) Active Links and Filters.

If you understand why to have Run If, Execute On, Execution Order and Form Name in the workflow.

Familiarity with key Active Link and Filter Actions (If you want to start simplest, go for Set Fields, Push Fields, Change Fields (ALs only), Open Window (ALs only, If you find the field mapping in Open Window confusing you, leave it aside).

Nice to haves at this stage: Understand theoretical basics of Escalations, Workflow Permissions (in Permissions tab), and Understanding of more Active link/Filter actions.

If you have been serious about learning Remedy, I am sure you know much more than this. That means you are more than good to go hands on.

Something to do in the first day:

· Have a very simple logical flow in mind. Today you are going to build that in Action Request System.

· I would ask you to start in your first experiment only with a Regular form.

· Create your Regular form. Core fields are already there. Add a couple of new fields in-line with the flow you have planned. Play around with the fields, add them, align them, realign, use Trim fields (boxes, lines, text etc) to enhance the view. (Let the GUI designer in you enjoy the first hand on the Remedy!)

· If you already possess theoretical understanding of table fields, put one and experiment. If you think it is not too much on the first day.

· Add buttons, tables or so. Write workflow on them as required by the design already have in mind.

If you have done at least 80% of what you wanted to build when you stared, take it as success. Read further and experiment further. There is no limit, go on…

All of BMC’s AR System and ITSM (IT Service Management) documentation are simple and illustrative. You can depend on them to dig a bit deeper even if you do not have a ‘sandpit’ AR System Server at this stage. A few days later when you feel enough confident and have enough time, install your own AR Server and live like a king in your world of Remedy.

Experiment, Try, Practice..Whatever you call, that is what it takes!

Log analysis is a key skill for AR System Developers. Try to enable logs and try to understand them.

Tip: Though not mandatory (technically) at any stage, good if you make it a practice to write change history and help text as applicable, whenever you create and modify new objects. This habit will help later when you start working in large development teams.

I am yet to explore much of AR System and ITSM version 7.5 and above. It seems I have to wait a couple of months to get that natural opportunity or time to do it in away from work. Thus most of the things I write in this blog may be more specific to versions pre 7.5.


Saturday, May 1, 2010

Disclaimer

Disclaimer:

Writer of this blog does not have designated authority on ITSM, Remedy or anything else discussed here.mPlease note that this blog is fully independent and written with the intention of sharing knowledge. The blog is not affiliated to or approved or authorized by BMC Software, blog author's employers, clients or any other entity. All copyrighted content (or such content referenced in the blog) are owned and controlled by relevant copyright owners.