Skip to Content
Author's profile photo Dirk Lehmann

The one with the customized Alloy workflow UI

In Volker Drees‘ recent blog How to set up an easy Material Master creation Workflow for Duet or Alloy you’ve seen how to create a custom SAP Business Workflow that exposes its user decisions to Duet or Alloy.
Let’s expand this scenario for Alloy and create a customized Notes form, that’s able to display the master material data.

Customized Alloy Master Material Workflow

After you’ve implemented the steps Volker describes in this great How to set up an easy Material Master creation Workflow for Duet or Alloy, your SAP Business Workflow will expose 5 material values (ZMaterialNumber, ZMaterialText, ZMaterialSizeDimensions, ZMaterialEAN, ZMaterialEANCategory) to Alloy.

You can see those 5 values (in the Document properties) coming along with your user decision Note, that asks the Lotus Notes user to Approve or Reject the newly created material.
Document properties
Those 5 values are now prefixed with WorkflowContainer00, but as you can see in the screenshot above, they’re all there. So let’s expose those values to the user…

Please note, that we’ll use slightly different material values in this example than Volker used. We’ll use ZMaterialNumber, ZMaterialText, ZMaterialGroup, ZMaterialNetWeight, ZMaterialWeightUnit as example values.

First let’s try to understand how Lotus Notes and Lotus Domino handle generic workflow Notes coming from SAP. You might have already seen the Alloy workflow configuration on Lotus Domino.
Alloy workflow configuration on Lotus Domino
The magic happens in those two values at the bottom: Bound item type and Form name. Those values tell Lotus Domino, that if there’s an Alloy Note coming in that contains a field called BoundItemType with the value Alloy.MaterialWorkflow.ApproverTask use the (hidden) Lotus Notes form ERPApprovalForm to display this Note. (Keep in mind the BoundItemType value. We’ll need that later…)

Knowing that, let’s open Domino Designer and have a look at this ERPApprovalForm.
You’ll find this form in the master mail template of your Domino Server which has been merged with the Alloy mail template.

Please note: Changing the Lotus Domino master mail template can cause severe problems on your Lotus Domino and Lotus Notes system.

ERPApprovalWorkflow in Lotus Domino Designer

The default ERPApprovalForm is quiet simple. It contains a header, a comment section and a body.

We could now simply add some fields into this form, which would display our custom material values. But with that ERPApprovalForm would loose its generic character, as ERPApprovalForm would always try to display material values, even if you’re using ERPApprovalForm in some totally different workflow as well.

A better way to handle this is to embed a computed Subform into ERPApprovalForm. Let ERPApprovalForm compute (based on the field BoundItemType) during runtime which concrete Subform it should embed.

Click on menu Create -> Resource -> Insert Subform…
Create new SubformCreate new Subform

Check the box Insert Subform based on formula and click OK

In the value field of the Subform enter BoundItemType and save the form
ERPApprovalWorkflow with embedded Subform

This will cause Lotus Domino to check the value of a field BoundItemType (which is contained in every Alloy workflow Note) and use the values’ name to determine which Subform should be embedded. So if the value of BoundItemType is myForm, Lotus Domino will try to embed a Subform called myForm.

Having explained that, we know now what to do next: create a Subform which will display our material values.

In the Shared Code part of your mail database you can find a Subform section containing all existing Subforms of the corresponding database. Go there and hit the button New Subform.
Lotus Domino Designer Navigation

As explained above ERPApprovalWorkflow form will seek for a Subform that name matches the value of the BoundItemType field. Remember what I said earlier? Keep the BoundItemType value in mind, as we now need it as name for our new Subform.
Subform name

Create a table in that Subform that we can use to display our custom material values.
Lotus Domino Designer Table for Material Subform
The last row of the above given table might surprise you. This row should later contain the name of the user that requested the approval for the new material. We’ll have a look into this later…
First make sure that the material fields contain the corresponding custom material values.

Make sure the material fields are of type Text and their value is getting Computed.
Lotus Domino Designer Text Field

Now look into the SAP Business Workflow Builder (Transaction: swdd) to see the custom material fields again.

SAP Business Workflow Builder

As seen at the very beginning of this blog, the workflow container elements will arrive in Lotus Notes with a prefix called: WorkflowContainer00.
Lotus Domino Designer Field Names
For each of your material fields, enter the workflow container name (which will arrive in Lotus Notes) in the corresponding value field.
This will fill the table fields during runtime with the values of the corresponding custom workflow container fields.

Save the new subform and you’re done.


But wait what about this requester field we put in addition to our table?

As said above, the intension of that field is to display the workflow initiator name (the name of the person who requested the material approval).
As this person most probably will also be have a Lotus Domino user account, and maybe even a Lotus Sametime account, let’s not only display the persons name in that field, but show also his/her Lotus Sametime status.

To achieve this Lotus Sametime integration make sure the field is of type Names and the fields value is getting Computed.
Lotus Domino Designer Names Field

Now go to the second tab and make sure the box Show online status is checked.
Lotus Domino Designer Names Field for Lotus Sametime

But what should we enter in the fields’ value? Where do we get the requesters’ name from?

The requester name is also part of the Notes document send by Alloy. The field is called RequesterName but it contains the SAP username of the requester and not the full qualified Lotus Domino username we require for Lotus Sametime integration.
So we need to map the SAP username to the Lotus Domino user somehow.

The following script will do this mapping for us in a very simple manner. (Note the limitation comments in the script)

Place this script in the Queryopen event of your material Subform
Lotus Domino Designer Subform - Lotus Script

The script will try to lookup the SAP username in the Lotus Domino Directory and map it to the requesters’ Lotus Domino username.

The requesters’ Lotus Domino username will be added as a new field to the Notes document called RequesterName. Therefore add RequesterName as field value to the tables’ Requester field.
Names Field Value for Lotus Sametime

Lotus Script:


Save the Subform and you’re done!

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.