Apologies for the long delay in my update, but even a Dr. Debug needs some vacation days.

But I am back now and I have an awesome, thrilling topic to tell you about.

Do you know Process Designer on Cloud? Not yet? Well, then this may be of interest for you.

As you may know, more and more tools are moved to the Cloud rather than running it on premise. It makes it easier for the users because they don't have to take care of such things like fix installation, upgrades etc.

Blueworks Live (BWL) is the cloud based version of the Process Designer (PD) modeling tool. The application is designed to help organizations discover and document their business processes, business decisions and policies in a collaborative manner. It is designed to be simple and intuitive to use, while still having the capabilities to implement more complex models. Blueworks Live adheres to the BPMN 2.0 standard developed and maintained by BPMN.org.

I was curious about how it works, so I decided to test it.

Creating a BWL account is very simple. You can use the BWL login page (https://www.blueworkslive.com/login) for creating your own test account. This account is valid for a test period of 30 days and is a fully operational version of a BWL account. After the test period you can go ahead with a licensed BWL version or further use the FREE version but with limited functionality.

From the login page click on the 'Don't have an account ? Sign up now' link on lower right hand corner.

This will open a Sign up window as shown above with an online-form you have to fill out. Please take care that the information entered are correct, especially the email address because all further information for your test account are sent to that address! So you should not use a dummy email address here.

After you have confirmed the business conditions and sent off the form you will receive an email from the BWL team in your email account. You have to simple click on the contained web link for activating your BWL account.

You will be redirected to following web page for your first login. Please configure the language you want to use for your BWL sessions and also create a personal password for subsequent logins:

The login will be made with your userID (your email address) and that password. For security reasons the password shouldn't be shorter than 8 character and should contain numbers and letters.

After you have successfully logged in you can start with your work immediately.

By the way: Since you have created that BWL account, you are the administrator of it. You can manage the account, e.g. manage access right to that account as well as being the contact for questions about the licensing after the free trial period.

BWL was designed for users to collaborate with other users on common projects. So the next step would be to invite other users to be a member of your BWL account. This activity can only be done by an account administrator.

When you are logged in to a BWL account as an administrator you will have an option to invite other users by clicking on a link in lower right hand corner:

To invite other users you only have to add the correct email address of the new user to the form (this will be the login userID for the new user) and the user type. Depending on the picked user type this user can participate in more or less team activities in that BWL account. I will explain the differences of available user types in a separate post soon. Editor is the type with most user rights besides an account administrator.

On the BWL administration page the administrator can see that a new user was invited to attend the BWL account.

If the full name is still being displayed as 'Invited User', this means the user has not yet logged in.

The invited user will get an email from the BWL team containing the login information. Keep in mind that email is only valid for 24 hours. After that time period it will be cancelled and a login using the provided link will fail.

After clicking on the link you will get nearly the same login mask you have seen when creating the BWL account. Fill in your full name (this will change the name from 'invited user' to the correct user name), language and your personal password.

After clicking on 'Login' you are added to the BWL account as an additional user and you can start with your work as well.

And now you can enjoy the wonderful world of Blueworks Live in the Cloud!

And if this does not help, take two of these and call me in the morning.

You ever wondered how to reset a BPM system to a state earlier in time? You ever wanted to know if it is possible to clean up a BPM system to revert back to the state which it had after the first installation?

Today I will give you the answers to those questions.

First of all in order to tell what you need to do to clean up a system or revert back to an earlier state you need to understand what modifications are done when you run the system over time.

Guess what, the first thing of cause is

Data in the database

Whenever a process instance is touched (be it started, run, terminated or whatever you do with your instances), data is being inserted or updated in the database. This is the same independent of whether you are running BPMN applications or BPEL applications. Both a heavily using the database to store a consistent state of what you are doing.
When transactions are run against the database we also store

Data in the transaction logs

The transaction service writes information to a transaction log for every global transaction that involves two or more resources, or that is distributed across multiple servers. The transaction logs normally reside in the file system if you did not change the default configuration.

Besides the data mentioned above we now have a slight difference between the usage of only Standard applications (BPMN) or Advanced applications (BPEL, SCA). For Standard the above two points are everything which is touched at product runtime and everything you need to be aware of. For Advanced there is one more thing.

Data in the config directory in the BPM’s profile directory

Once you install an application containing advanced content an EAR file will be deployed. Along with the EAR installation this EAR is extracted, mapped to the cluster or server which should run the application and resources are automatically created in the background (i.e. bus destinations). All this touches files in the <Dmgr root>/config directory and are synchronized from the Deployment Manager to the nodeagents.

If you are aware of all these changes it makes things much more clear if you are thinking about a cleanup or restore.

But of cause we do not want to make things too easy. So just for the complete picture which is especially important for the restore scenario you need to be aware of another fact which holds true for all BPM releases. There are not only modifications at runtime but you may trigger modifications manually. This is

Changes to the installation binaries

So far we only talked about modifications in the profile directory. But what happens when I install an iFix or fixpack and want to revert to a state before that iFix or fixpack install?

In case of an iFix or fixpack install the following data may be modified

-Files in <BPM Install root>

And as you are installing the iFix or Fixpack with Installation Manager we also need to take care of

Changes to the Installation Manager

When installing iFixes or Fixpacks these changes are tracked in the agent data of Installation Manager. If you are fixing the Installation Manager itself you also are modifying the <Installation Manager install root>.

Hey, you got it. Now it’s becoming pretty obvious.

I want to revert back to a state earlier in time

With the above details at hand you have a time-synch database backup, a file system backup of your complete BPM install directories and profiles on all machines and a backup of the Installation manager install root and agent data. Don’t you? J

Then you can go ahead. Stop the BPM servers and database. Revert back to your above backups and start the database and servers again.

And now you are back in the past .

I want to clean up my systems from everything I did since the initial installation

There you go. Keep in mind things are getting more complex if you are running BPM Advanced applications.

For BPM Standard

You do not need to have a backup from that state. As you know from above facts for standard we only have changed content in the database and in the tranlogs so you can do the following

-Drop all tables in the BPM databases

-Recreate the tables and reinitialize default content in the databases. Refer to John’s dwAnswers post for details about reinitializing the databases.

For BPM advanced you NEED a backup of the filesystem. As you remember your config files have changed and dropping and recreating the tables as for BPM Standard is not enough. So for Advanced take the steps as described under “I want to revert back to a state earlier in time”.

So what did you get out of this? Right! – I need to take backups to be safe. Go ahead and always have time synch backups of the following at hand to be able to deal with any unexpected situations:

-<BPM install root>

-<BPM profile root>

-<Installation manager install root>

-<Installation manager agent data>

-BPM databases

And if you don’t have backups, take two of these and call me in the morning.

Today I would like to present you a neat way how to start a Document Viewer in your BPM Coach in maximized mode. Per default, the Document Viewer is displayed quite small and to extend it, one has to click the button to maximize it.

That can sometimes be a bit inconvenient.

Hence I thought I would share with you the steps to take to start it maximized by default.

First of all, you will have to create a custom Coach View. In my case I named it Custom Document Viewer.

Now, access the "view" Event Handler as shown above.

Append the following line of code at the end of the code on the right hand side:

iframeElement.style.height = window.innerHeight - 100 + 'px';

This will load the Document Viewer in maximized mode when your coach is being loaded:

That's basically it. Now your Document Viewer will be maximized and your users won't have to click the maximize button anymore.

Quite convenient.

And if this does not help, take two of these and call me in the morning.

If you ever wondered how you can use server variables used in your BPM processes inside of your client-side coach this quick-tip is for you. At least when you’re using BPM 8.5.5 or higher.

First of all let's clarify some things to make sure we are on the same side: We have to divide between server-side JavaScript which runs on the BPM Process Server / Process Center and client-side JavaScript code which runs in the actual browser e.g. when using a coach.

Since those are 2 different JavaScript Engines one cannot easily access the other one’s variables or information. In BPM 8.5.5 a new feature was introduced that tackles this problem. It is called substitution.

Using substitution you can easily access server-side variables and render them into your client-side coach using custom html.

And here is how it works:

Set up a variable for your BPD (server-side) that will be used as an input for your human service.

Don’t forget to map the variable from your BPD as an input variable to your coach within your human service. In the sample the BPD variable is called “BPDtext” and contains the value: “This is a text saved in a server variable within your BPD”.

Don’t forget to create your input variable (in this case I called it BPDInput), this is where the value from the calling BPD gets passed to.

Within the human service create a coach with a custom html snippet. And here the magic happens.

Within the custom html’s HTML section you can access the server-side variable using doubled curly brackets: {{tw.local.BPDInput}} will render your server-side variable into your html code when the parser passes it.

Now this also means that this variable will only be renderedonce when the page loads. So this will not dynamically update itself when it’s changed. In order to change the variable a new html rendering operation would have to be triggered.

You can see the result in the last screenshot.

I hope this will help you developing your Coaches in the future. And if it does not - take two of these and call me in the morning.

The other day I was asked by a colleague: Where do we get the IID for BPM on Cloud?

To get IID for BPM on Cloud, you will have to get in touch with the Operations team. You can do so by opening a PMR.

The operations team will enable the IID tool download in the InfoSys instance of BPM on Cloud (BPMoC). In the BPMoC portal, where in the DEV environment's Process Center you had previously seen one link to download PD, you should now also see a link to download IID.

After downloading IID, you will install it to your local machine.

In addition you will need the latest auth plugin. (This is also the same plugin you use in PD, as seen in your <PD_Install_Dir>\teamworks\eclipse\plugins directory)

This authentication plug-in (this jar) is to be copied into the following directory: <IID_Install_Dir>/dropins/plugins
Note: This directory might not exist on your system. If it does not, create the directory and then put the JAR file in the dropins/plugins directory.

After the plug-in has been copied into the IID installation, restart IID.

You will tell your IID how to communicate with the Process Center so that you can work with process applications and create Advanced Integration Services

The IID download from the BPM on Cloud portal does not include the Unit Test Environment (UTE) for IID.
If you want to install IID plus the UTE, then you can obtain this from your IBM Passport Advantage account.http://www-01.ibm.com/software/passportadvantage/pao_customer.html
The UTE is a small local Process Server server which does not communicate with the Process Center.

I hope this will help you getting IID on BPMoC. If it does not, take two of these and call me in the morning.

Last week I stumbled across an interesting question in BPM. As it took me some time to figure out why BPM was behaving the way it did, I thouhgt I'd share my findings with you, as it may help you some day as well.

The scenario was the following:
I was using a Human Service (HS) with a Coach that consisted of a Document List and a Document Viewer. My BPM version was 8.5.5 but the exposed behavior is the same in 8.5.0.1 and 8.5.6 as well.

Here is my HS and the Document List Configuration:

As you can see, I used a custom Search Service. My goal was to filter the document list based on the Content Type of the documents stored. I wanted to accomplish that my filter looked up the ContentType in a local variable, so I could simply change the value of the variable without touching my search criteria to adapt my searches.

To do so, I added a search criterion in the Search Service by browsing the Content Filters tab and clicking the "Add Search Criterion..." button:

This will add a new criteria. As I wanted to check for the Mime Type, I selected Mime Type in the first field, and selected "is equal to" in the second field:

In the third field as a first test I wrote "application/pdf" (without the quotes) to see, if it would work:

I ran the HS and it did work:

Now I wanted to use a variable instead of hardcoding the MimeType in my Search Criteria. So I created a new Local Input variable named "ContentType" and set it's default value to "application/pdf":

And I adapted my Search Criteria by entering the name of my variable (tw.local.ContentType) into the third field:

The other day I came accross an interesting new problem while working with BPM in the SmartCloud Orchestrator (SCO). It was in a multi-staging environment and my client was trying to export a change made in their test environment to import it in their production environment.

When you are trying to export your freshly developed code from a test system and import it on a production system you would usually create a snapshot on test, export it and import it on production. Pretty much straight forward, no magic.

Now if the Process Application or the Toolkit that you are trying to export/import has dependecies on theSCOrchestrator_Scripting_Utilities_Toolkit (SCOSUTK) and SCOrchestrator_Support_IaaS_Toolkit (SCOIAAS) (both shipped with SCO) and these Toolkits are already present in production, you may receive a notification during the import stating that these Toolkits already exist and will not be imported.

If you confirm this with 'OK' you may receive the following error message indicating the import failed:

Now, what went wrong?
In the installation guide for SCO IF0004 and IF0005 some of the manual steps described can lead to this problem.

For the mentioned toolkits SCOrchestrator_Scripting_Utilities_Toolkit (SCOSUTK) and SCOrchestrator_Support_IaaS_Toolkit (SCOIAAS) you have to update the dependencies and you need to create a new snapshot.
By doing this on both systems (test and production) individually, the internal Snapshot ID will differ in both environments due to the algorithm that is used to create these IDs. Although the Snapshot-Name as well as the acronym are identically on both systems, the import process will not identify them being the same due to the different IDs. Which does make sense.

Hence, a correct approach in a multi-staging environment is to perform these actions (updating the dependencies and creating a new snapshot) on one system and then export/import these to the other systems. Do not perform these steps on the target environment as this will lead to the above error.

If you encounter this issue, and the above steps did not help, take two of these and call me in the morning.
Yours truly,
Dr. D

The patient needs to report an urgent issue to IBM BPM Support and wants to provide valuable information that expedites the resolution right from scratch.

Diagnosis

For Dr. Debug and the IBM Support team it is of utmost importance to have as much information as possible in order for being able to diagnose the problem. Remember: You might know pretty much all about the error and the environment, the steps to recreate and what was done prior to the error. But this is all unknown and new to the support folks.

Potential treatments

Should you require Support's assistance, the following steps may help you providing some basic information that should help Support to start investigating your problem.

Ask yourself: What steps do I take in order for the error to occur? What are the symptoms? What was the expected result? Was it working before? Have I changed anything before the problem occurred for the first time?
Note the answers to these questions and provide them to the support folks.

Provide as many screenshots as possible. The more detailed the better. If you know how to recreate the problem, take a screenshot for each step. It will make Support's life easier. It will enable them to understand and see what you are referring to. Or even better: Record a quick video of how you recreate the problem.

Gather your versioninfo output. It gives an excellent overview of the patients healthstatus and previous treatments if you will. Sort of like: Who is the patient? How old is the patient? What previous issues did the patient have? What Support can pull from these information is which ifixes were installed yet, which exact version are you running? Is there a known issue that has already been fixed and the iFix was not yet installed on this system?

Now, you might be asking yourself: OK, how do I gather the versioninfo? That is fairly easy:
Just open a command prompt and run the following command from <install_root>/bin :

In BPM v7.5.X:versionInfo -maintenancenPackages > versioninfo.txt

In BPM v8.X:versionInfo -fixpacks -ifixes > versioninfo.txt

or:

versioninfo -long > versioninfo.txt

This will redirect the output of the versioninfo command to a textfile in the bin directory. You can also specify any other custom path for the output if you wish.

Gather information about the underlying database, the OS and hardware specifications that might help.

Does the patient have a fever? Is the patient sneezing or coughing? In other words: Do you see any errors in the logs?
First thing to look at is the SystemOut.log file which you will find under:

<install_root>/profiles/profile_name/logs/server_name

These logs are created per profile and server. Note the timestamp of the occurence of the issue before sending the logs to IBM Support. That will expedite their review of the log files.
If you spot an exception in the logs, you can try to search for potential known issues and how to address them. Good resources are dwAnswers, the BPM Fixlists, Technotes or sometimes even Google. In some cases the solution is already available.

Taking a blood sample to gain further details and insight. Now we do not poke into our workstation with a needle, but we use traces. There are traces for almost anything. The tricky part is to define the correct one. IBM Support will provide you with the trace string to use. At the bottom of this Technote you will find links to component-specific diagnostic information. Most of those include component specific traces you may use.
To set the trace string IBM Support or the Technote provided, follow these steps:

- Log on to your WAS Administrative Console
- Expand the Troubleshooting section
- Select Logs and Trace
- Select the application server to be traces and click on the Diagnostric Trace link
- Select the Runtime tab
- Click on Change Log Detail Levels under the Additional Properties section on the right hand side panel
- Under Trace Specification enter the trace string
- Click Apply and OK. Then Save your configuration.

The trace will be saved in a file named trace.log by default. Do not forget to note the timestamp and provide the trace.log, SystemOut.log and timestamp to IBM Support. Follow these steps or the steps listed in this technote to get your traces set up.
You can also gather traces in a static manner. The difference is that you need to restart BPM when using static tracing. And that usually mean high impact.
Please keep in mind that our patient is temporarily limited in his actions while the trace is enabled, meaning that you may encounter performance degradation while the trace is enabled. Remember to remove the trace string once you are done.

Upload all the data and information you gathered to your PMR.

Be proud of yourself, you helped IBM Support a lot to expedite the resolution of your problem.

Reward yourself with a nice cup of coffee or tea.

In general it is quite handy when all the information Support needs is available right from the beginning. If anything is missing, do not worry. Support will let you know what they need in addition to what you have provided.

And if this article does not help, take two of these and call me in the morning.
Yours,
Dr. Debug

Some of you may have already encountered such a situation. You get your morning coffee, boot up your workstation, you start your IBM Integration Designer (IID) and bang - there it is. A crash notification. What a good start in your day.
Right after you started the application, it crashes and presents you an Eclipse pop-up window like the following:

Java was started but returned exit code=1

If you have not encountered this yet - Congratulations! I would still recommend reading this post, maybe some days you will need this .

So, what's next?

Step 1:Prepare yourself for some debug fun. If your coffee is gone, I recommend getting another one, then continuing with the below steps. If you still have coffee left, move right on to the next step.

Step 2: Did this installation ever work or did you just install it? If this error shows up after a new installation of the Eclipse based product (here IID), check out the installation logs to make sure it was installed without any exceptions. To do so, have a look at the IBM Installation Manager log files under <Installation_Manager_Install_Dir>/logs

In my case:

Open the index.xml file and review all logs linked in there for any exceptions or failures during the installation.

Failed or partially failed installations may cause such statup issues.

Step 3: Did anybody mess with your Eclipse startup parameters? If this is not a new installation and the exception happened all of a sudden, maybe some JVM arguments were changed and are hence causing this crash. Always a good candidate is the -Xmx value, which specifies the maximum memory allocation pool for the Java Virtual Machine (JVM). A lot of users still think: The more, the better! Unfortunately they overtune the JVM and the memory allocation is simply too large for the JVM to be successfully created. If changes were made to the JVM settings, please revert those changes back to the default values (you can for example compare them to a working or untouched system). Then try to launch your Eclipse based application again.

Step 4: Create Javacore log files to gain more insight into the root cause of the crash. As Eclipse is still in the start-up process when the crash occurs, the JVM errors cannot be written to the Eclipse error logs under <workspace_root>/.metadata/.log
Hence we need another way to get more information about the root cause. Open your eclipse.ini file (located in the <install_root> directory) and add the following line under -vmargs opt:

-Xdump:java:events=vmstop

This should enforce the creation of a javacore.txt file in case of a JVM crash. In our case here, you will find it in the IID root directory after the next restart.