Wednesday, August 27, 2008

Outlook Forms 10 - Installing Forms On Exchange

Issue:
Install forms so that they are available to all the company employees.

Quick:
Hide reply forms Properties tab, check box "Use Form only for responses"
Install forms in the reverse order in which they are used - Tools, Forms, Publish Form. Create new actions on Actions tab for using reply forms.

Visual/Learning:
T0 setup custom reply actions for a form, the reply forms have to already be installed. So I install the forms in reverse order.

Open up each of the 3 reply froms. On the (Properties) tab of the form select the check box "Use form only for responses". This check box will hide the form in the library.



This box should be checked on all three of the response forms.

On the "Check Request" form this box is not checked because this is the one that will get selected from the library to start off the process.

After this box is checked on the "Check Request Not-Approved" and "Check Request Finance Response" forms, I can install these two forms on the Exchange server.

Open the "Check Request Not-Approved" form.
On the Tools menu select Forms, "Publish Form".


In the drop down box select "Organization Forms Library".
Note here that you can only install forms in the "Organization Forms Library" if you have permissions to do so.

Give the form a name such as CheckNotApproved, and click Publish


Do the same thing for with the "Check Request Finance Response" form

The other two forms require actions to be added so that they will call these response forms.

Open the "Check Request Approved" form. When the Finance department gets this form they will need to respond with the "Check Request Finance Response Form". To make this work I will create a custom action on the (Actions) tab.

Click on the New button on the bottom left. This will bring up a "Form Action Properties" box. Give the action a name in this case "Finance Response". Click on the "Forms name" drop down and select "Forms...". This will bring up another "Chose Form" window.

In this new window select "Organization Forms Library". Because I have already installed the reply form, I now see CheckReqFinanceResp in the list. Select this form and click on open. This takes me back to the "Form Action Properties" window and the "Form name" box has the form I picked. Now select the "Address form like a" area and pick "Reply to All" from the drop down box. I select this because I want everyone involved to know that the process is complete (Manager, Requester, and the other Finance person). I also select to "open the form" so that information from Finance can be entered on the form before sending.
Click OK on this page and then publish this reply form to the Organization Library just as I did with the previous 2 reply forms.

Now I am ready to configure and install the main "Check Request" form.

Open the form and under (Actions) tab create two new actions. Here you can see I have already created the new actions of "Approved" and "Not-Approved".
Below are the setting from the Approved action. This will open the CheckApproved form from the Organiztional Forms library. This form is set to Reply. This form will go back to the requester becuase of this Reply setting. This form will also go to Finance because several steps back on the "Check Request Reply" form, I set the CC field to automatically populate with the "Finance Check Approval" email group.
Lastly this action is set to "prompt the user to open or send". I could also set this to "Send the form immediatly" since there no input required by the manager on this form.


For the "Not-Approved" action I again select the form from the organization library and configure it to address the message like a "Reply". In this case the message will only go back to the requester because I did not automatically populate any of the email address fields on the "Check Request Not-Approved" form. Here I set the action to "Open the form" so that the manager has a chance to enter information about why the request was rejected.

At this point I should have a completely working process.

Go To Outlook Forms 11

Go to Outlook Forms Index

38 comments:

Anonymous said...

I've found that your directions are extremely helpful! I do have a couple of questions because i'm creating a form that is a little different.

1. Employee fills out a request form that goes to manager

2. Manager gets Read Only form. On the "Read Page" I created a frame box for the mananger to check "Approved" or "Not Approved"

3. How do I get it so that all the manager has to do is check a box and the "Approved" or "Not Approved" form goes back to employee?

I may have missed something?
Thanks so much!

Jimmy said...

You do not need to create a frame box for approved or not approved. the buttons are automatically added to the managers read form in the toolbar area (because you have created custom actions on the actions tab). By setting the action to "send the form immediately" the reply will be sent without opening up on the managers window. The down side is that there is no feedback to the manager that it worked or not.

Anonymous said...

Thank You! Very helpful site... especially for someone who knows nothing about outlook!

Anonymous said...

How can I get the user defined fields to be parsed to the message box of the message form or can I build user defined fields to be within the message box, the reason being another application only reads the message(body text) to get the required info. By using P2..P3, it is not read by the other tool. Is this feasible even?

Jimmy said...

You would need to put some code in the form to copy your input fields to the message field. I plan on putting some example up at some point but you can probably get some help at www.outlookcode.com on how to do this.

Anonymous said...

Great info, well done! Quick Question, how can you Approve the original message you created by replying with a meeting request instead of a message (so that a global exchange calender is automatically updated via a room or equipment mailbox). This way users can see what people/equipment/rooms are unavailable? It seems to only allow a custom action from a message based oft rather than a meeting request based oft.

Anonymous said...

Hi Jimmy;
Great stuff!
I have a problem with the form I'm making, though. I'd appreciate your help:

User selects published request form, fills in fields, sends form to manager for approval.

Manager receives read version of the request form. Manager clicks "Approve."
This should forward a form-indicating that the request is approved-to the department that will do the work. I get "Operation Failed" message, though.

The approval form is published as a hidden form, its Form Action Properties under the (action)tab in the request form are:
enabled,
"formname,"
IPM.Note."formname"
Attach original message
Forward
Send the form immediately.

The only difference I can see between what you show in the tutorial and what I am doing here, is that I would like to forward the form to a 3rd party, instead of replying to the requestor.

What do you think I'm doing wrong?

Jimmy said...

For testing turn off "send the form immediately" and check that the correct address is being populated and validated in the approval form.

Anonymous said...

Hi Jimmy!

Thanks a lot for this great tutorial. I have a question though, I am trying to make our vacation form to be approved by two persons, one for the Supervisor, and one for the Manager.

After the supervisor approves the request, I want also a copy for the Manager for him to approve, after the Manager approval or dis-approval, I want the user to be notified that the request has been approved or not, and then I want also a copy of the request form to be sent to the Secretary if the request is approved by the manager.

And one thing, if the supervisor dis-approve the request, I want also the requester to be notified that the request was not approved without notifying the manger and the secretary.

Thanks.
Geoff

Jimmy said...

I am thinking 5 forms to do this. The original request and 4 hidden reply forms.
You may have to do some script coding as well.
Original form manually addressed to the Supervisor (You could code this based on AD Org Structure if you wanted assuming that the data is in AD and always up to date)
The name of the original requestor should be captured in one of the data fields of the Form.
2 Reply forms for the Supervisor.
Approval Form manually addressed to the Manager (Again you could code this based on AD or fields on the form)
Dis-Approval form would just do the reply action back to the requestor.
2 Reply forms for the Manager.
Dis-Approval form here is just a message back to the name in the requestor data field.
Approval form also would use the name in the requestor field, and if you want to insure that a secretary is notified you would probably need a required field on this form where the name is entered.

Anonymous said...

Hi Jimmy!

Thanks for your inputs, I already created 5 forms as per your suggestions, but the hard part is I'm having some issues capturing the name of the original requestor, because when the manager approves or dis-approve, the form will bounce back to the supervisor. I was thinking of putting Cc or Bcc field for the requestor, but I think scripting or visual basic macro would do this but I don't have any idea of what to put in.

We have the Active Directory and Global Address List, all I'm wanted is a button that would link me to the Global Address List in Outlook and capture the name of the requestor, just like the To, Cc or Bcc fileds.

Do you know any sites that has script or visual basic macro example that are related to my issue?

Thanks again.
Geoff

Jimmy said...

Jimmy said...
Below is some code I used to add a managers name to a field from the Global Address List. Just create a button and change this line:
Sub cmdManagerName_Click (put your button name in here).

Other idea would be to move the CC field onto your form and rename the button.

Or you could use the send event as a trigger to capture the sender name into a field.
Hope this helps


'=======================================================================
'THE FOLLOWING COMMAND BUTTON SELECITON CALLS THE FINDADDRESS SUBROUTINE
'WITH THE NAME OF THE FIELD TO PLACE THE ADDRESS INTO(ManagerName),
'THE NAME TO PUT ON THE ADDRESS BOOK DIALOG BOX,
'AND THE TEXT TO PUT ON THE BUTTON FOR SELECTING THE ADDRESS FROM THE ADDRESS BOOK
'==========================================================================
Sub cmdManagerName_Click
FindAddress "ManagerName", "Find Manager Name", "Manager"
End Sub
'====================================
'CALL SUB TO FIND MANAGER NAME IN GAL
'====================================

'=====================================================
'SUB FindAddress
'THIS SUB TAKES THE OUTLOOK FIELD TO STORE THE RETURNED VALUE,
'THE CAPTION FOR THE DIALOG BOX
'THE TEXT FOR THE BUTTON IN THE DIALOG BOX
'AND THEN DISPLAYS THE ADDRESS BOOK DIALOG BOX BY USING CDO.
'=====================================================
Sub FindAddress(FieldName, Caption, ButtonText)
On Error Resume Next
Set oCDOSession = application.CreateObject("MAPI.Session") 'GET CDO SESSION GOING
oCDOSession.Logon "", "", False, False, 0 'USE CURRENT ACCOUNT FOR LOGON
txtCaption = Caption 'STORE CAPTION INFO
if not err then 'IF NO ERROR THEN OPEN DIALOG BOX
set orecip = oCDOSession.addressbook (Nothing, txtCaption, True, True, 1, ButtonText, "", "", 0)
end if
if not err then 'IF NO ERROR SET VALUE OF PASSED FIELD TO SELECTED GAL NAME
item.userproperties.find(FieldName).value = orecip(1).Name
end if
oCDOSession.logoff 'LOGOFF CDO SESSION
oCDOSession = Nothing 'SET CDO TO NOTHING NOT SURE WHY WE DO THIS
End Sub
'=========================================
'SUB FindAddress USES CDO TO GET GAL
'=========================================

Anonymous said...

Thanks a lot Jimmmy!

The script you've shared works well on the forms I'm working on.

I would like also to share the following scripts to automatically capture the name of the requester:

---
Function Item_Open()
If item.size = 0 then ' if on compose side
item.userproperties.find("txtPersonRequestingOffset").value=Application.GetNameSpace("MAPI").CurrentUser
End if
End Function
---

The following script will capture the value of the ("txtPersonRequestingOffset") text box, and return it back to the requester when approved, will also send a Cc to our secretary.

---
Function Item_Open()
Item.To = Item.GetInspector.ModifiedFormPages("Offsetting Request").txtPersonRequestingOffset.value
Item.Cc = "our_secretary@mycompany.com"
End Function
---

I have now a completely working vacation request with two approving persons.

Thanks to you for the great tutorial.

Geoff

Jimmy said...

Wonderful, glad it works and thanks for the code snipet.

Jimmy

Anonymous said...

Hi Jimmy, thanks for the perfect tutorial in Outlook forms!

Question to Geoff:

>I have now a completely working >vacation request with two >approving persons.

Are you willing to post your solution, as I'm actualy working on the same (just started my FIRST Outlook form last week)?

Juergen

Karola said...

Hello Jimmy, thanks a lot for your Tutorial. I tried your instructions with a simplified version of the form but basically the main steps.

I publish it in a Folder (Inbox) (I'm not allowed yet to publish in my companie's folder but when i send it to myself i see that i still send and receive the IPM.Note insted of IPM.Note.FormularX which is the class of my new form. I´m using Outlook 2003 and really stuck on this thing.

I also tried to publish it in my personal folder but with the same result.

Lots of thanks in advance.

Karola

Jimmy said...

Karola,
You should publish to the "Personal Forms Library" and not to a folder.

Anonymous said...

hi jimmy. I have a command button that should execute a specific action and i'm using this code:

item.actions("Received").execute

so i sent the email and when the receiver tries to click on the command button, it does nothing. however, the button of custom action in the menu works perfectly fine. any advice?

Jimmy said...

I do not have access to a test machine at this time. Try looking on outlookcode.com

Anonymous said...

hi jimmy,

i have the custom forms published in my personal libraries and I have a button in Word that is supposed to launch/open the form. how do I do it?

Jimmy said...

Not sure what you mean about the button in Word. With the form in your personal forms librarary, you should be able to open it from the outlook forms menu Tools, form, choose forms, in drop down box select personal forms library and then your form.

Anonymous said...

Hello! Thanks so much for your clear instructions - easiest to follow that I've been able to find. One question regarding publishing - I'm using 2007, and Organizational Forms doesn't appear as one of my options. Am I missing something? Is this a permissions type issue?

thanks for your help!

Jimmy said...

The library has to be setup on the server and you will also need permissions to publish. One of my tip is about setting up the Library.

Jimmy

Anonymous said...

Hi Jimmy, these instructions have been SO helpful! I ran into only one issue: I used the 2nd tab as in your example to store my custom form objects, leaving the message tab alone. When someone replies to the form, we see the form data, but anything in the standard message tab doesn't appear anymore. I assume I've done something wrong on the Actions settings, but don't know what. Any direction would be much appreciated!

Jimmy said...

Sorry life is busy, usually you do not want the message tab to show, only the form fields. If you want the message tab to show you need to set it as visible. You will then have two tabs on the email (one for the message and one for the form). Another option would be to move the message box onto the form tab so that you see all the information on one page.

Vinod said...

Hi,
I have came to this tutorial site on search of outlook forms. I have started following your tutorial stuck at the 9 page.
1. I created a form which is user going to send
2. I save as approve & not approve form and make to fields "read only"
3. I have 3 levels, Requisitioned by Recommended by ,Approved by.
4. For Date i want to put calender button so user can select the date.
5. I have 3 forms now one is user sends, second Approve and third Not Approved
now explain me how to assign the forms to sent out from the user. one more thing can i retrieve the user info in text field's depend on the user who sending the form

Jimmy said...

Not sure what you are asking:
"explain me how to assign the forms to sent out from the user"
The forms are installed on the Exchange server Org Forms Library, or in the personal forms library and selected from there.

"can i retrieve the user info in text field's"
Yes

GoodGravey said...

Thanks for all the info. This is a slightly different problem.

I have an Organisational form that users complete and it gets sent to a central mailbox. All that works fine.

But specific users then open that email form, click on a "response" tab to change the page on the form, complete it and click on a "send" commandbutton on that page.

The form is controlled by VBScript rather than VBA.

I want the form to be:

sent back to all (item.replyall doesn't seem to work);
insert "Response:" into the subject line if it is not already there;
save itself so that a database can pick up all the records in the form.

I can do the insert and save without any hassle. But I just cannot get the gosh-darned thing to reply to all.

Any help?

EatTheWhales said...

Hi Jimmy, and thanks alot for a great tutorial!

I have, however, a small problem: I can't figure out how to set a fixed size for my form window (so that the form opens with the same width and height for all users). Outlook seems to remember the width/height of the window that the user had on his screen when he last composed or read an email. So the size of the form changes depending on the users "settings".

The form i have made is a simple "while You were out"-message, with separate write- and read views, and with some check-boxes and text fields. The size issue concerns both the sender and the reader of the message.

What could be the trick to fix this?

Hal

Debbie Werbeloff said...

Hi Jimmy

I have created a bunch of different forms and reply form using your (great) tutorial - thanks! One of the forms has a manager approval form which is automatically routed back to the sender and to HR. Everything was working fine until recently when a problem started for some users with the form - after the manager approves and clicks "send" the form gets stuck in the outbox and doesn't sent.
I've tried clearing the cache, deleting the form and reposting a clean form, with no success. Any ideas what could be causing the problem, or more importantly, how to solve it?

Thanks
Debbie

Unknown said...

Hi Jimmy

I have a certification form with attachments. These are sent to Supervisor for Approval.
The form when received by the Supervisor presents tabs and actions for rejection or approval.
I pass the attachments to the approval form with VBS. The person sending the timesheets email address also goes to the approval form along. I do not seem however to get the date of the original form with attachments to transfer onto the Approval form for governance. The approval form would then have name of person seeking approval, date of request. The date of request(just the sent date) I am unable to copy or move across to the approval form any hints would be helpful.

thanks
Ron

Jimmy said...

Ron,
Not sure I have a clear vision of what you are doing. Is there a reason you are sending along an attachement instead of putting all of the fields in the outlook form? What about capturing the date when the form is first sent and saving that to an Outlook field?

Stacie Rowland said...

I am posting a generic form that employees fill out and send to a generic email box. I would like to post a link to the form in our company's intranet. So far, I have created the form, saved it to our file server and posted it to Personal Forms Library. Everything looks good when I go to Choose Form and select the one I created but when I try to link to it via the intranet, the form does not show up correctly (a blank email message pulls up instead of the form I created). I don't understand why I can open and view the correct form in Outlook but not via the intranet. Can you help pleeease??

Jimmy said...

Sounds like you need to be posting to the organization forms library instaed of personal forms.

Unknown said...

Jimmy, If I do not want to automate the CC field to automatically populate. Is there a way I can be prompted to specify who the form is sent to?

Jimmy said...

Sure you can add some code to the form that will do that.

Debbie Werbeloff said...

hello Jimmy

Hope you're still there :)
We have been happily using forms created according to your instructions, with great success. Now we are upgrading to Office 2010 and the forms don't work. The first form opens fine but does not have the tabs for approval. AS far as I can see everything is created, set up and published in the organization library fine. Any ideas what has to be done in 2010 to get the forms working?

Thanks
Debbie

Michael said...

Hi Jimmy,

Thanks a lot for a great tutorial! I have a problem getting the forms out to the entire organization however. I am not allowed to publish in the organizational forms library, so as a work around I thought I'd publish the forms in a public mail folder (after testing the routing in personal forms library, which works fine). Publishing the forms in the public mail folder works fine, the problems comes when I want to link the main request form to the reply forms for the manager and finance(under actions tab on the main form "creates form of type"). I can only look in form regions, standard forms library, personal forms library and organizational forms library and I can NOT browse to find my published forms on the public mail folder.

Do you know a way around this? I though about letting everybody publish the forms in their own personal forms library, but that seems an impossible task with 80 people...

Hope you give me advice...

Kind regards,

Michael