This article describes the Outlook forms cache. This article also describes various forms cache problems that may occur in Outlook 2007. Note
The Outlook forms cache is used for forms that are designed with Outlook 2003 or earlier versions and that are typically published to a forms library. Outlook 2007 also enables you to design forms for Outlook 2003 and earlier versions. In this scenario, the forms cache is used in the same way as the forms cache is used in earlier versions. However, Outlook 2007 does not use the forms cache with the new form regions feature. Outlook 2007 only uses the forms cache in scenarios that involve custom message classes. If you are developing a new custom form for Outlook 2007, we recommend that you use the new form region feature.
Outlook stores a local copy of a custom form in a cache so that Outlook does not have to retrieve the form from the disk every time that an item is opened. When forms are stored in a Microsoft Exchange public folder or in the Organizational Forms library on the Exchange Server computer, Outlook can use the cached version of the form. This helps improve performance on the local computer and on the Exchange Server computer.
Problems may occur with the forms cache. These problems typically occur when you open a new item or an existing item in a folder. You may receive one of the following error messages:
- Message 1
The form you selected could not be displayed. Contact your administrator.
- Message 2
The form required to view this message cannot be displayed. Contact your administrator.
Other times, Outlook may not display an error message. Instead, Outlook may open a default form instead of a custom form.
How Outlook locates forms
This section describes how Outlook locates the form that is required when you open an item. When you first create an item that uses a custom form, the Message Class
field of the item is set to the name of the form. For example, if you have a custom task form that is named "Corporate" in a custom task folder, the message class is IPM.Task.Corporate
When you open the item, Outlook checks the Message Class
field to see what form Outlook must use to display the item. Outlook then searches for the required form. Outlook looks in the following locations in the following order:
If you have another item open that uses the same form, Outlook already has the form in memory. Outlook uses that copy of the form instead of re-loading the form.
- Forms cache
Outlook checks the forms cache on the computer to see whether you have used the form before. If Outlook locates the form in the cache, Outlook loads the form from the cache.
- Current folder
If Outlook does not find the form in the cache, Outlook checks to see whether the form was published to the current folder. Outlook does not search other folders. This includes parent folders. Outlook stores forms that are published to a folder as hidden items. These items cannot be seen in any Outlook views.
- Personal Forms library
If the form is not found in the current folder, Outlook checks the Personal Forms library. The Personal Forms library forms are stored as associated messages in a hidden folder (called Common Views) of the default mail store. The default mail store is the set of folders that contain the Inbox folder that receives incoming mail.
- The Organizational Forms library
If the form is unavailable in the Personal Forms library, and you are using a Microsoft Exchange Server computer that is configured to support an Organizational Forms library, Outlook then checks the Organizational Forms library on the Microsoft Exchange Server computer.
Locate the forms cache
The forms cache is stored in a hidden folder on the hard disk drive. You must change the setting so that Microsoft Windows shows hidden files and system files. These steps vary depending on the version of Windows that you are using. You may locate the forms cache in the following folder:
- Microsoft Windows XP
C:\Documents and Settings\user_name\Local Settings\Application Data\Microsoft\FORMS
- Windows Vista
Because Outlook 2007 supports roaming users, the forms cache location may change. The forms cache location depends on what user is currently logged on to the computer. You cannot configure user settings to indicate where the forms cache is located. Therefore, you cannot directly change the location of the forms cache to a location other than the default location.
Understand the forms cache architecture Important
This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:
How to back up and restore the registry in Windows
The forms cache contains the Frmcache.dat file. The Frmcache.dat file contains summary information and pointers to both the default Outlook forms and any custom forms that you use. Cached copies of custom forms reside in subfolders of the Forms folder.
The subfolders of the Forms folder have random names. However, the names of the subfolders resemble the names of the forms. The actual forms that are stored in these folders are cryptically named. But the forms have a .tmp file name extension. If you do not know the folder that contains the copy of a particular form, you can use the time stamp of the folder or the time stamp of the form to help you locate the form.
Outlook also stores the registry keys that correspond to custom forms that have been cached. The registry keys are at the following location:
In Outlook 2002 and earlier versions, Outlook does not keep track of the place where a form came from when the form is cached. For example, assume that you have two different forms that are published in two different folders, and both forms have the same name. If you access the first folder, Outlook caches the form in that folder. Then, if you access the second folder, Outlook still uses the cached form from the first folder. Outlook does not use the form that is in the second folder. Therefore, every form name or Message Class
field must be unique so that conflicts do not occur when you use forms. This has been the forms cache design since Microsoft Outlook 97 was released.
The forms cache for Outlook 2003 and Outlook 2007 uses a different design. Information about the folder and the forms library is also cached. A security-related issue led to the design change. For example, you may have ten different folders in Outlook 2003. You may publish a form with the same name in each of these ten folders. In earlier versions of Outlook, the form was cached one time, and then Outlook used the same form from the local forms cache every time because all the forms had the same name. However, Outlook 2007 caches the form from each folder.
Because of this change in design, we recommend that you publish forms to the Personal Forms Library instead of to a folder. If you delete an item based on a custom form, and then you open the item in the Deleted Items folder, Outlook cannot locate the custom form. Instead, Outlook uses the default form. If you publish forms to the Personal Forms Library, you can avoid this problem.
Understand and change the forms cache size
By default, Outlook sets a limit of 2048 kilobytes (KB) for the maximum size of the forms cache. To change this setting, follow these steps:
- On the Tools menu, click Options.
- Click the Other tab, and then click Advanced Options.
- Click Custom Forms. Under Maximum space on hard disk, type a number that is larger than 2048, and then click OK.
After you reach the maximum disk space that you set for the forms cache, Outlook purges the oldest unused form from the cache. Note
Outlook stores the size of the forms cache in the Frmcache.dat file. The format of the Frmcache.dat file is undocumented. Direct modification of the Frmcache.dat file is not supported. Therefore, you cannot programmatically change the size of the forms cache. Microsoft does not support direct modifications to any part of the contents of the Forms folder unless such changes are documented by Microsoft or recommended by Microsoft Product Support Services for troubleshooting only. Before you modify the contents of the Forms folder, you must first make a backup copy.
Recover forms that you have accidentally deleted
If you accidentally delete a published form, and you cannot recover that form from the folder that the form was published from, you may be able to recover a copy of the form from the forms cache.
For more information about how to recover a form from the forms cache, click the following article number to view the article in the Microsoft Knowledge Base:
OL2002: Restoring an Outlook form from a cached copy
Troubleshoot the forms cache
If the forms cache does not seem to be functioning correctly, or if you have problems when you open items or when you open custom forms, other factors may be causing the unexpected behavior. Use the following troubleshooting methods before you delete the forms cache.
- Method 1: Verify that items use a one-off form
You can store a form definition in an item instead of in a published location. If you store a form definition in an item, and then you open the item, the form that you use is always the form that is stored in the item. If you change the published version of the form, a one-off item continues to use the older version of the form that you stored in the item. This may appear to be a problem with the forms cache. But this is how the one-off item works.
A form definition that is stored in an item may cause unexpected behavior. It may cause you to incorrectly presume that your problem is related to the forms cache.
For more information about how the one-off item functions, click the following article number to view the article in the Microsoft Knowledge Base:
Description of form definitions and one-off forms in Outlook 2002
- Method 2: Verify that the problem is not memory-related
Outlook may not release a form from memory. This problem may be related to the way that you implement Visual Basic Scripting Edition code in a custom form. If Outlook does not unload the form from memory, you may have to exit and then restart Outlook. This removes the form from memory and forces Outlook to reload the form from the cache, from the forms library, or from a folder.
You must verify that Outlook exits. You can use Microsoft Windows Task Manager to verify that Outlook is not running. However, we recommend that you restart the computer to make sure that the problem is not related to something that occurs in memory.
If Outlook does not exit, this may be the cause of the forms cache problem. If the form contains Visual Basic Scripting Edition code, try to determine whether something in the form prevents Outlook from exiting. Also, disable any COM add-ins or any non-standard Microsoft Exchange extensions. Either of these may contribute to problems.
Clear the forms cache
There are different methods to clear the Outlook forms cache. Each method has advantages and disadvantages. We recommend that you use method 1.
- Method 1
Use the Clear Cache method. To do this, follow these steps:
- On the Tools menu, click Options, and then click the Other tab.
- Click Advanced Options.
- In the Advanced Options box, click Custom Forms.
- In the Custom Forms box, click Manage Forms.
- In the Forms Manager box, click Clear Cache.
- Method 2
Manually rename or manually delete specific components of the cache that may be causing a problem. For example, if you have a problem with a specific form, you can start by deleting the corresponding folder for that cached form. We recommend that you only use this method if you are an advanced user.
- Method 3
Rename the Frmcache.dat file. Do not do this as your first attempt to resolve a problem with the forms cache because the Frmcache.dat file may contain information about other forms. However, if your other efforts to clear the forms cache are not successful, you can rename the Frmcache.dat file. After you rename the Frmcache.dat file, restart Outlook.
- Method 4
Investigate the registry keys. The registry keys are at the following location:
Typically, the registry keys do not play a role in forms cache problems. But they do contain information about cached forms. If all other efforts to correct a problem form are not successful, you can verify that this section of the registry contains information about the form. You can remove the information about the form, and then restart Outlook.
Use the ForceFormReload registry key
When the forms cache seems to cause problems intermittently, and you cannot determine the cause of the problems, you can set the
registry key in Outlook. When the
registry key is enabled, and Outlook encounters an error when Outlook opens an item that is based on a custom form, Outlook automatically clears the cache for this specific form. Then, Outlook tries to open the item again. Although this method does not correct the cause of the forms cache problem, this method does make the problem transparent to people who use custom forms.
To enable the
registry key functionality, follow these steps:
- Start Registry Editor.
- In the registry, click the following key:
- On the Edit menu, click Add Value, and then add the following registry value:
|Value name ||Data type||Value data|
- Exit Registry Editor.
Note This functionality is available in Outlook 2000 and Outlook 2002 if you have the latest service packs installed. This functionality is also available in the original version of Outlook 2003.
For more information about how to obtain the latest service packs, click the following article numbers to view the articles in the Microsoft Knowledge Base:
Error message: "The form you have selected could not be displayed"
OL2002: Error message: The Form you have selected...cannot be displayed, please contact your Administrator
Troubleshoot problems that occur when you open an item that is based on a specific custom form
If a problem occurs when you try to open an item that is based on a specific custom form, the problem may be related to that specific form and not to the forms cache itself. The following methods describe ways to troubleshoot problems with a specific form. You must perform the methods in the order that they are listed.
- Method 1
Disable the custom Visual Basic Scripting Edition code in the form. This may indicate that the problem is related to the Visual Basic Scripting Edition code. To disable the code, hold down the SHIFT key when you open an item. This prevents the Visual Basic Scripting Edition code from running.
- Method 2
Remove all the controls from all the form pages. Custom controls on the form may experience problems initializing and may prevent Outlook from opening a form. Outlook cannot open a form if either of the following conditions is true:
To perform this method, follow these steps:
- The custom controls are not installed on the local computer.
- The licensing registry key is incorrect.
If this method resolves the problem, a problem exists with the controls.
- Open the form in design mode.
- Remove all the controls from all the form pages.
- Republish the form with a different name.
- Try to open a new item that is based on the newly published form.
- Method 3
Remove all the custom fields from a form. Problems may be related to the fields on a form. Fields can contain formulas. These formulas may create circular references that can cause performance problems or other problems that can affect the way that the form opens. This is not common. But if you suspect that a form may be corrupted, remove all the custom fields from the form. Then, publish the form with a different name for testing.