An amazing Experience of my Life: Tracking to Tornagarh Fort

“Climbing is the lazy man’s way to enlightenment. It forces you to pay attention, because if you don’t, you won’t succeed, which is minor — or you may get hurt, which is major. Instead of years of meditation, you have this activity that forces you to relax and monitor your breathing and tread that line between living and dying. When you climb, you always are confronted with the edge. Hey, if it was just like climbing a ladder, we all would have quit a long time ago.” — Duncan Ferguson

Well…., Mountain Climbing is not my hobby nor I have done it before. But I had always a dream to go for a mountain tracking. These tracking are easy to heard or read somewhere, but in reality it requires lots of preparation and dedication. This trip to Tornagarh Fort came from a sudden planning from one of my friend.  Well, the idea looked pretty awesome and exciting to us. So we did a thumps up to achieve a never before experience in our life.

Now came the preparation part. As all of my friends were about to trill a new experience in their life, we all want to make sure that our preparation also didn’t lags behind our excitement. Couple of my friends bought all necessary staffs including food, first aid, torch and other handy items. As we decided to stay a night over there, so the preparation got couple of more additions like tent and other sleeping materials.

The preparation got over. We finally packed our bags with all the staffs we collected. Once the packing got over, we tried a demo to lift the bags. OMG…. We realized that everyone will have to carry at least 12-15 kgs to the top of the mountain. One said –‘It is a onetime activity guys…let’s do it.Common. ‘Climbing mountains with such weights will be tougher. Everyone realized that and made their minds accordingly.

It was also necessary to capture some information prior to the trip, and it is always beneficial to know the place in detail before you actually reach there. Here comes our search partner Google.

It is historically significant as the first most forts to be acquired by Raja Shivaji in 1643, forming the Nucleus of the Maratha Empire (Swarajya Toran). The total height of the Fort is 1403 meters from the sea level. –Source Wikipedia.

I also went through few blogs and sites about the tracking to the fort. Well, I find very exciting information. According to few, this track is very tough and only expert trackers should go for it. Few wrote that accommodation is not good, the climbing is stiff and the fort location is not safe for night stay. Hey…if you are planning for this track…just relax. Don’t confuse as we did. When you complete this article, your confusion will be over.

“Discoveries are often made by not following instructions, by going off the main road, by trying the untried.” — Frank Tyger

As we planned to stay at the fort at night, so we got bit tensed. Also it adds more thrills to our journey. We planned to leave from Pune at 1 pm at the evening the next day, to keep our bikes in the village (Velhe) and start our tracking.

The Journey Day:

All friends gathered at my place in the morning. 7 people, 4 bikes. We bought 2 tents from a dealer who gives tents for rents Rs 400 a day. Our luggage got even heavier with those tents. Finally we start our journey from Pune at 1 pm. The route was

Magarpatta – Katraj – Dalvi Vasti (at Pune Bangalore Highway) – Velhe

We reached the Velhe village by 3.30 pm. The biking experience along the countryside was indeed enjoyable. We found that there was a police chowki nearly at the end of the village from where actually the tracking path to the Fort starts. We kept our bikes beside the police chowki and start our tracking by 4 pm.

Now the real adventure was in front of us and we needed to finish the tracking and reached the top before the sunset. After half an hour of tracking, the tiredness slowly came to everyone’s face. The climate was hot and the first phase of the tracking was bit stiff. We took a rest of 10-15 minutes, had some water and start again. In the way, we met a farmer and eagerly we asked – ‘How much time from here it will take to reach the fort?’ The farmer with a very relaxed face replied ‘2 hours more.’ It seemed he does this activity daily and it’s not at all a big deal for him. We also met couple of trackers who actually climbed up the fort in the night and those guys were really moral boosters for us.

“Over every mountain there is a path, although it may not be seen from the valley.” — Theodore Roethk

A small farmhourse on the way

We climbed on and on. After some time, we reached some point in the mountain, from where the paths looked simple and easy to go. As we move on climbing, the climate becomes cooler and we feel easier and comfortable. By 7 pm we finally reached the fort after nearly 3 hours of journey. It was awesome to see the sunset on our way.

When we reached the top, it was almost dark by that time. We found few villagers and a small temple over there. We asked the villages about the place. They said we can stay there in the temple at night. However we bought the tents so, we decided to stay at our own arrangements.

The climate was pretty cool and wind was blowing at very high-speed at the top. Then we divided into two groups. The one group started to put the tents while I with the other group went for searching woods for a campfire. The wind was blowing so high that we found very difficult to set up our tents and even difficult to put the campfire. However we finally managed to do the both. One of my friend started making omelets and we had a good dinner with those omelets and the food we carried.

The night passed by with gossip and fun with the friends. When we wake up early in the morning, then the real beauty of the fort and the surrounding mountain range catch our eyes. The morning atmosphere was so breathtaking that no one expect us feel that. It was unbelievable, when we discovered that we were actually standing way above the clouds.

A Wild Beauty discovered in the morning


The Clouds viewd from the Fort

We had a small breakfast and then started our backward journey by 7 am in the morning. At that time the climate was nice and cool, and so we find it easy to come down. Again it took 2 and half hours in reach the village. A dog also gave us a nice company.

We came back to Pune through the other road by khanapur and singhgad and reached Pune by 12.30 pm. This road was shorter but not as good and comfortable as the earlier road via Pune – Bangalore Highway. This is how we completed one of our extreme adventures of our life.

“It is not the mountain we conquer but ourselves.” — Edmund Hillary

Few Tips:

  • Plan your trip with all information and arrangements well in advance.
  • It takes nearly 3 hours to climb up to the Fort and 2 and half hours to climb down (including 5-6 breaks of 5 mins each). So plan your timing accordingly.
  • Don’t forget to carry water bottles with you and its bit tricky too. Carrying more than enough water will add weight to your luggage and carrying little water may put you in situations of the shortage of water in the journey. So think twice in this aspect.
  • If you are planning to stay at night, carry sufficient food, torch and other sleeping arrangements.
  • Carry a first aid box because you never know what will happen in the journey. So safety first.
  • Signals of mobile towers are week but present. We managed to make some calls and send messages.
  • Put shoes and jackets and carry some ropes (at some points of the journey, it will come very handy).
  • If you are travelling in rainy seasons, be careful. The path will be very slippery.
  • You can divide the journey into 3 parts of 1 hour each. The starting 1st hour will be to climb the first hill. It is tough and steep. The second phase is easy. Here you can enjoy the real beauties and click as many photographs as you can. The 3rd phase is the toughest and you need to be very careful here. There are some points in this phase, where you need to climb 80-85 degree up. Here your complete concentration and dedication is required.
  • And finally don’t forget your camera to capture the beautiful moments of your journey.


“If you can find a path with no obstacles, it probably doesn’t lead anywhere.” — Frank A. Clark

If you are planning for a trip to this fort, go ahead and enjoy. Also don’t forget to share your part of the story.

© Copyright for all images remains with the photographer.

Please DO NOT distribute, copy, publish or use the images or any part of the images in any way without express permission of the copyright holder.

How to Clear Cache from Oracle Application without Bouncing Listener?

Caching Framework in oracle apps R12 comes with an administration User interface and it is available under the Functional Administrator responsibility. This interface can be used to perform administrative operations including changing the time-out values for cache components, looking at cache usage statistics, and clearing caches.

Here are the steps to clear all Global Cache:

1] Login to Functional Administrator responsibility – then choose Home.

2] Choose the ‘Core Services’ Tab – then the “Caching Framework” Sub-Menu.

3] Proceed to choose ‘Global Configuration’ from the left hand side menu.

4] In the far right choose ‘Clear all Cache’ button.

5] A screen prompts and confirms that the action will clear all cache on the middle tier server – choose Yes. Essentially, this just forces all user sessions to engage and validate – rather than using cached values.

6] A confirmation message is displayed, confirming that all cache has been cleared across middle tiers.

7] Proceed to test and confirm whatever change was made to the preference, profile, etc….

Please note that clearing the OA Framework cache can cause data issues if multiple users are engaged and transacting data in the application at the time cache is cleared. Please use this utility with proper care.

You can also clear cache for specific component. To do that you need to go to Core Services -> Caching Framework -> Tuning. Query the application (for example iProcurement) or by Name or code.  Select the component and clear the cache.

Messages in Oracle Application

What is a message in Oracle Application?

Oracle Application uses the Message Dictionary to store translatable Error and Warning messages that can be used by any programs written in Forms, Reports, Java, or PL/SQL.

These messages mainly provide information about business rule errors, such as missing or incorrect data, and how to resolve them, warn about the consequences of intended actions, inform about the status of an application, pages, or business objects, and indicate that processes and actions are performing or are completed.

By using the messages in the Message Dictionary, you can define standard messages that you can use in all your applications(Oracle Form, Reports, OAF and ADF), provide consistency for messages within and across all your applications, define flexible messages, and change or translate the text of your messages without regenerating or recompiling your application code.

How will you create a Message?

In Application Developer Responsibility, navigate to (N) Application | Messages.

Using that screen, the new messages can be created by entering records. The contents entered in field message text become visible to the end user. The content of the message can optionally have tokens, which act as placeholders for dynamically substituted values at runtime.

You can also create messages from OAF Page. For that-

1] Login to Functional Administrator responsibility – then choose Home.

2] Choose the ‘Core Services’ Tab – then the “Messages” Sub-Menu.

The components of a Message:

Component Name Description
Name Every message must have a unique name. You should include a unique prefix that makes it easier to find your custom messages and that helps to avoid name conflicts with non-custom messages.
Language Select the language that your message is written in.
Application Select the application that the message belongs, this will usually be the custom application.
Current Message Text Message text is required. This is a brief statement of the operation attempted and the problem that occurred as a result, or information that the user needs to know. The maximum field size for messages stored in the Message Dictionary is 240 characters.
Number A unique and persistent message number can be included with each message. When displayed, the number takes the format of (Application ShortnameNumber). If the message does not have a message number, the formatted number is not displayed.
Type The message type indicates which message components are applicable, determines whether implicit logging and incident creation occurs, and determines the logging level if the message is logged.
Maximum Length Maximum number of display characters the translators can use to translate the message.
Description Description of the Message.
Alert Category This will allow user interfaces and other programs to filter exception messages based on category. The types are Product, System, Security and User.
Alert Severity This will allow user interfaces and other programs to filter exception messages based on severity. The types can be: Critical, Error or Warning.
Log Severity This group indicates the Log severity levels like: Unexpected, Error, Exception, Event, Procedure, Statement or Off.

About Tokens:

Tokens are identified in the message text by their use of & and all uppercase letters. The token values are supplied at runtime by the code that raises the message. For example, the following token &FIELD_NAME is replaced by a field when the user receives the error message on their screen:

“A Value must be entered for &FIELD_NAME.

Becomes: “A Value must be entered for PO Number.”.

Table Used by Messages Dictionary:

FND_NEW_MESSAGES stores application messages for Message Dictionary. Each row includes the application to which the message belongs, the language the message is in, the message name, the message text, and the message number. You need one row for each application message in each of the language.

APIs to Set, Retrieve, Clear the messages:

Use the Message Dictionary APIs to retrieve a Message Dictionary message. The PL/SQL methods are in the FND_MESSAGE package and the Java methods are in the messageService package. There are many functions and procedures in the package- FND_MESSAGE. However I have given the details of three most used procedures below.

procedure SET_NAME(APPLICATION in varchar2, NAME in varchar2)

In Database Server, this Sets a message name in the global area without actually retrieving the message from Message Dictionary.

procedure SET_TOKEN(TOKEN     in varchar2,

                        VALUE     in varchar2,

                        TRANSLATE in boolean default false)

This procedure defines a message token with a value. In Database Server, SET_TOKEN adds a token/value pair to the global area without actually doing the substitution. Call FND_MESSAGE.SET_TOKEN once for each token/value pair in a message.

function GET return varchar2

This function gets a translated and token substituted message from the message dictionary database. It returns NULL if the message cannot be found. If this function is called from a stored procedure on the database server side, the message is retrieved from the Message Dictionary table. If the function is called from a form or forms library, the message is retrieved from the messages file on the forms server.

How to use message in PL/SQL Concurrent Program:

fnd_message.set_name ('XXSCM', 'XXSCM_MANDATORY_FIELD');
fnd_message.set_token('FIELD_NAME', 'PO Number');
--Now get the final string
l_message := fnd_message.get;
--Display the message text in output of concurrent program
fnd_file.put_line(fnd_file.OUTPUT, l_message);

How to use message in Oracle Forms:

fnd_message.set_name('XXSCM', 'XXSCM_MANDATORY_FIELD');
fnd_message.set_token('FIELD_NAME', 'PO Number');;

How to use message in OA Framework Controller:

String sReturnMsg = oapagecontext.getMessage("XXSCM", " XXSCM_MANDATORY_FIELD ", new MessageToken[] {new MessageToken(" FIELD_NAME ", "PO Number") });

Example of retrieving message from the Stack:

-- setting INVALID_USER as the current message
fnd_message.set_name('FND', 'INVALID_USER');
-- setting value for token NAME for INVALID_USER message
fnd_message.set_token('NAME', 'TESTUSER');
-- saving the current message onto stack
-- setting LOGIN_FAILED as the current message
fnd_message.set_name('FND', 'LOGIN_FAILED');
-- saving the current message onto stack
-- poping one message out of stack and set it as the current message
-- get the translated and token subsituted LOGIN_FAILED message
-- then clear the current message
msg := fnd_message.get;
-- poping one message out of stack and set it as the current message
-- get the translated and token subsituted INVALID_USER message
-- then clear the message
msg := fnd_message.get;

FNDLOAD for Messages:




FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afmdmsg.lct XXSCM_MANDATORY_FIELD_MSG.ldt

SQL related to Oracle Application Messages:

SELECT m.message_name,
WHERE upper(m.message_text) LIKE upper('%&Enter_Message_Text%')
AND m.language_code  = 'US'

SELECT m.message_name,
WHERE m.message_name LIKE '%&Enter_Message_Name%'
AND m.language_code  = 'US'

Number Formatting in XML Publisher

While designing XML Publisher reports, many a times we need to play with numbers and change their formats as part of the client’s requirements. Here is a brief explanation of couple of techniques that should be used while doing any number format change in XML Publisher.

XML Publisher supports two methods for specifying the number format:

  • Oracle’s format-number function
  • Microsoft Word’s Native number format mask

Now…before going into details please remember few things like:

  • To use the Oracle format mask or the Microsoft format mask, the numbers in your data source (ex XML File) must be in a raw format, with no formatting applied.
  • Use only one of these methods. If the number format mask is specified using both methods, the data will be formatted twice and it may cause unexpected behavior.
  • If you are designing a template to be translatable, using currency in the Microsoft format mask is not recommended unless you want the data reported in the same currency for all translations. Using the MS format mask sets the currency in the template so that it cannot be updated at runtime.

Using the Oracle Format Mask:

To apply the Oracle format mask to a form field:

1. Open the Form Field Options dialog box for the placeholder field.

2. Set the Type to “Regular text”.

3. In the Form Field Help Text field, enter the mask definition according to the following example:


Where fieldname is the XML tag name of the data element you are formatting and 999G999D99 is the mask definition.

Symbol Meaning
0 Digit. Each explicitly set 0 will appear, if no other number occupies the position. Format mask: 00.0000 (Ex: Change 1.234 to 01.2340)
9 Digit. Returns value with the specified number of digits with a leading space if positive or a leading minus if negative. Leading zeros are blank, except for a zero value, which returns a zero for the integer part of the fixed-point number. Format mask: 99.9999 (Ex: Change 1.234 to 1.234)
C Returns the ISO currency symbol in the specified position.
D Determines the placement of the decimal separator. The decimal separator symbol used will be determined at runtime based on template locale. Format mask: 9G999D99 (Ex: Change 1234.56 to 1,234.56( For English locale:) or to 1.234,56 (For German locale))
EEEE Returns a value in scientific notation.
G Determines the placement of the grouping (thousands) separator. The grouping separator symbol used will be determined at runtime based on template locale. Format mask: 9G999D99 (Ex: Change 1234.56 to 1,234.56( For English locale:) or to 1.234,56 (For German locale))
L Returns the local currency symbol in the specified position.
MI Displays negative value with a trailing “-“.
PR Displays negative value enclosed by <>
PT Displays negative value enclosed by ()
S (before number) Displays positive value with a leading “+” and negative values with a leading “-“
S (after number) Displays positive value with a trailing “+” and negative value with a trailing “-“

Using the Microsoft Number Format Mask:

To format numeric values, use Microsoft Word’s field formatting features available from the Text Form Field Options dialog box. The following graphic displays an example:

To apply a number format to a form field:

  1. Go into the Word Properties for the field.
  2. Change the Type drop-down box to Number (it defaults in as Regular Text)
  3. From the Number format drop-down box choose the format you want.

Native XSL format-number function:

You can also use the native XSL format-number function to format numbers. The native XSL format-number function takes the basic format:



number (Required) – Specifies the number to be formatted.

Format (Required)  – Specifies the format pattern. Use the following characters to specify the pattern:

Symbol Meaning
# Denotes a digit. Example: ####
0 Denotes leading and following zeros. Example: 0000.00
. The position of the decimal point Example: ###.##
, The group separator for thousands. Example: ###,###.##
% Displays the number as a percentage. Example: ##%
; Pattern separator. The first pattern will be used for

positive numbers and the second for negative numbers


Decimal format (Optional) – For more information on the decimal format please consult any basic XSLT manual.

Currency Formatting:

This is another feature of XML Publisher that enables you to define specific currency format masks to apply to your published data at runtime.

To utilize currency formatting, you must:

1. Define your currency formats in XML Publisher’s Administration interface.

2. Assign the Currency Format Set as a configuration property at the desired level (site, data definition, or template).

3. Enter the format-currency command in your RTF template to apply the format to the field at runtime.

To use the format-currency command:

In the form field dialog of the field you want to format, enter the following syntax:


For example:


The currency code must correspond to a currency format that is defined in the Currency Format Set to be used with this report. The Currency Format Set can be specified at the site level, data definition level, or template level.

For more information, refer Oracle XML Publisher Administration and Developer’s Guide.

Best Implementation Practices with XML Publisher!


© Best Implementation Practices with Oracle Business Intelligence Publisher  – by Mohan Dutt and Brent Lowe