Thanks, Bruce

October 2, 2013 – 9:37 am

Thank you Bruce for all you have done for the (Lotus) Notes community and for giving OpenNTF to us in 2001.

Bruce-Elgort-in-a-Clark-class

I remember that day back in 2007 in Dublin, when I first met you in person at ILUG. We have met a few times on other events since then, and I hope to (perhaps) see you as a speaker at the EntwicklerCamp conference in 2014.

Good luck to you for all your future plans!!

Toolbars are missing after upgrading to Notes 9

October 2, 2013 – 6:20 am

After you have successfully upgraded your client to IBM Notes 9, you will no longer see any toolbar when using the IBM Social Theme.

toolbar1

You might also have checked “File\Preferences\Toolbars” and found all your toolbars there: all of them enabled and visible.

In IBM Notes 9, there is a new setting that is activated by default: “Show Toolbars Only When Editing”

toolbar2

Uncheck it and your toolbars will re-appear, yeah!

 

I am invited! The IBM Leadership Alliance Conference

September 19, 2013 – 12:27 pm

A couple of days ago, I received a mail asking me to join Alistair Rennie (General Manager, IBM Collaboration Solutions ) at the sixth annual IBM Leadership Alliance conference, October 23rd – 25th, at the Fairmont Copley Plaza, Boston, Massachusetts.

The conference has it’s focus on IBM’s newest collaboration capabilities and solutions. IBM will share the latest on  strategy and technical direction, from Application Development and Social Integration, to Mobility and Messaging & Collaboration. Content shared during this meeting will include IBM confidential information that will be governed by the terms of the confidentiality agreement between IBM and each attendee. So do not expect any post about what will be presented at this invitation only event.

Hotel and flight is already booked. Public transportation seems to be fairly easy in Boston. And the hotel and venue is close to Boston Logan International Airport
scheduleBoston
ScheduleBoston1

I’ll be doing a webinar in October

August 29, 2013 – 4:21 pm

Howard Greenberg from TLCC invited me to present a webinar in October.  I’m looking forward to working with Howard. So, if you do not have / had the opportunity to attend a LUG near your location and you want to know, how to find the bottlenecks in your XPages and make them lightning fast, you are invited to our webinartlccwebinar

SlideDeck from my MWLUG Presentation

August 22, 2013 – 11:03 pm

Here are the slides from my MWLUG presentation on XPages performance optimization. The session was held at the Crowne Plaza Hotel in Indianapolis, IN, USA.

Thanks to all who attended. And also a big thank you for the feedback you gave.

The plain simple guide to conferences

August 14, 2013 – 5:19 pm

Anyone wanting to know more about IBM  Notes / Domino, or is interested in learning about current or recent developments, can use conferences ( such as MWLUG, ICONUK , BLUG, Connect ( a.k.a.Lotusphere), AdminCamp, Entwicklercamp, dominopoint, SNouG, DanNotes …) to gain a lot of knowledge in a short amount of time.

In addition to the educational opportunities, conferences provide a great chance to do some in-depth networking.
Because most experts attend conferences, they’re great occasions to both meet and introduce yourself to the forerunners in the field. Although it’s smart to attend a conferences that are held in your area, for networking purposes you should also attend those that are offered out of town.
You’ll be able to spread the name of your business further and get to know experts and insiders that you might not ordinarily get to meet.

Conferences have become some of the best platforms to learn new and innovative techniques and discover what is happening worldwide in the world of IBM Notes / Domino. As the goal of client satisfaction and meeting client deliverables in an efficient manner is paramount, being on the cutting edge of new techniques can only improve your business.

Attending a conference can be an overwhelming but exciting experience. So, before you go, take a moment to read these tips to make your conference experience even better.

Before the Conference

Before you go to a conference, it’s a great idea to set both general and specific goals for yourself, and come up with a plan on how to follow them while you’re there. Most goals fall into the following categories:

  • Finding better and newer ways to undergo specific tasks and determining the best ways to accomplish these new techniques.
  • Discovering the answers to certain problems or queries that you need to be solved.
  • Learning about topics that can help you perform better.
  • Uncovering the ways IBM Notes / Domino can help benefit you and your company.

After you’ve determined your goals, ascertain the sessions that are the most related to helping you accomplish them. Use the online agenda to plan your first and second choices for each available time slot. See if you can learn what the goals of each of the sessions are, (don’t forget to pay attention to whom the speaker is), and use that to help you make your decisions.

If you use advanced planning, you’ll be able to enter the conference less flustered and time-crunched, and thus have more time available for networking opportunities. And of course, don’t forget to bring your list of goals and your pre-determined agenda with you to the conference.

While at the Conference

The most important thing you can do at a conference is to make the most of all available opportunities.

  • Attend all of your conference sessions and make notes on the speakers’ presentations.
  • Go to all of the networking events available. These events are often filled with other marketers and have a tendency to be very lively, so they’re definitely worth your time.
  • Introduce yourself to co-attendees and share your experiences and knowledge with your co-attendees.

After the Conference

After the conference is over, there are a few things you should do before you move on with your everyday life.

  • Organize the notes you’ve taken, and extract any information that you deem to be important. Keep this knowledge handy so you don’t forget about it.
  • If you’ve made any contacts that you clicked with at the conference, be sure to follow up with them so you don’t lose any of the progress made with your networking goals.
  • Prioritize the information you’ve learned. It’s not always possible to implement all the new strategies you’ve learned immediately, so organize them according to your order of importance.
  • Utilize the information that you’ve learned.

See you in Indianapolis, Brighton, Gelsenkirchen, Milano, Frankfurt and Zürich !!

MWLUG and ICONUK

August 12, 2013 – 8:41 pm

MWLUG is just around the corner. I’m very happy to have the chance to hop over the pond to attend this conference. And I’m very thankful to the organizers for being selected as a speaker.

Same for ICONUK ( t.c.f.k.a.UKLUG ) where I also will be speaking about how you can improve performance of your XPages application.

Looking forward to meeting the usual suspect as well as new members of the community.

And for the records, here is my flight schedule for the next weeks.

mwlug_iconuk

Anyone to bet on lost luggage or missed flights ?? …

Get Version Info for a .DLL using Java (JNA)

August 10, 2013 – 2:25 pm

I want to get the version info for an .DLL via Java.

The scenario is that I have a file on my local system and if the version on the server is newer then the one on my system I need to download the file from the server

Java Native Access (JNA) provides Java programs easy access to native shared libraries without using the Java Native Interface. JNA’s design aims to provide native access in a natural way with a minimum of effort.

jna

You need to download the jna.jar and platform.jar from here to run the following code:

package de.eknori.jna;
 
import com.sun.jna.Library;
import com.sun.jna.Memory;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.W32APIOptions;
import java.io.IOException;
 
/**
 * @author Ulrich
 * 
 */
public class FileVersionInfo {
	interface Version extends Library {
		Version INSTANCE = (Version) Native.loadLibrary("Version",
				Version.class, W32APIOptions.UNICODE_OPTIONS);
 
		public int GetFileVersionInfoSizeW(String lptstrFilename, int dwDummy);
 
		public boolean GetFileVersionInfoW(String lptstrFilename, int dwHandle,
				int dwLen, Pointer lpData);
 
		public int VerQueryValueW(Pointer pBlock, String lpSubBlock,
				PointerByReference lplpBuffer, IntByReference puLen);
	}
 
	/**
	 * 
	 */
	public static class VS_FIXEDFILEINFO extends com.sun.jna.Structure {
		public int dwSignature;
		public int dwStrucVersion;
		public int dwFileVersionMS;
		public int dwFileVersionLS;
		public int dwProductVersionMS;
		public int dwProductVersionLS;
		public int dwFileFlagsMask;
		public int dwFileFlags;
		public int dwFileOS;
		public int dwFileType;
		public int dwFileSubtype;
		public int dwFileDateMS;
		public int dwFileDateLS;
 
		public VS_FIXEDFILEINFO(com.sun.jna.Pointer p) {
			super(p);
		}
	}
 
	private String sFileName;
	private String sVersionNumber;
 
	/**
	 * 
	 */
	public FileVersionInfo() {
	}
 
	/**
	 * 
	 */
	public FileVersionInfo(String fname) {
		this.sFileName = fname;
	}
 
	/**
	 *
	 */
	private void _getVersion() {
 
		int versionlength = Version.INSTANCE.GetFileVersionInfoSizeW(
				this.sFileName, 0);
 
		byte[] bufferarray = new byte[versionlength];
		Pointer lpData = new Memory(bufferarray.length);
 
		PointerByReference lplpBuffer = new PointerByReference();
		IntByReference puLen = new IntByReference();
 
		@SuppressWarnings("unused")
		boolean FileInfoResult = Version.INSTANCE.GetFileVersionInfoW(
				this.sFileName, 0, versionlength, lpData);
 
		@SuppressWarnings("unused")
		int verQueryVal = Version.INSTANCE.VerQueryValueW(lpData, "\\",
				lplpBuffer, puLen);
 
		VS_FIXEDFILEINFO lplpBufStructure = new VS_FIXEDFILEINFO(
				lplpBuffer.getValue());
		lplpBufStructure.read();
		StringBuilder sb = new StringBuilder();
		sb.append((short) (lplpBufStructure.dwFileVersionMS >> 16));
		sb.append(".");
		sb.append((short) (lplpBufStructure.dwFileVersionMS & 0xffff));
		sb.append(".");
		sb.append((short) (lplpBufStructure.dwFileVersionLS >> 16));
		sb.append(".");
		sb.append((short) (lplpBufStructure.dwFileVersionLS & 0xffff));
		this.sVersionNumber = sb.toString();
	}
 
	/**
	 * 
	 */
	public void setFileName(String fname) {
		this.sFileName = fname;
	}
 
	/**
	 * 
	 */
	public String getVersionNumber() {
		this._getVersion();
		return sVersionNumber;
	}
 
	/**
	 * 
	 */
	public static void main(String[] args) throws IOException {
		// FileVersionInfo fv = new FileVersionInfo();
		// fv.setFileName("c:\\tools\\sample.dll");
		FileVersionInfo fv = new FileVersionInfo("c:\\tools\\sample.dll");
		System.out.println(fv.getVersionNumber());
 
	}
}

[XSnippet] – IBM Notes Traveler Administration REST API Test (SSL)

August 3, 2013 – 11:46 am

[XSnippets] – IBM Notes Traveler Administration REST API Test

August 3, 2013 – 6:58 am

I could not get the example in the IBM Notes Traveler Administration API to work. So I wrote my own test code.

The code connects on http port 80 to the Traveler Server ( 9.0.0.1 is needed !), does a basic authentication and prints the result of the GET request to the console.

You need to download HttpClient 4.2.5 from http://hc.apache.org/downloads.cgi and configure the build path to use the jars from the download.

 

Manage OutOfOffice with IBM Notes Traveler 9.0.0.1

July 30, 2013 – 3:38 pm

IBM Notes Traveler now supports “Out of office” functionality on Android and iOS devices. This allows you to configure a variety of settings that determine how IBM Notes Traveler responds when you receive mail while away from the office.

LNTOOO

By the way: The German translation is HORRIBLE!!!

To use this feature, you have to install and configure IBM Notes Traveler Companion.

Read more about other features added to IBM Notes Traveler here

 

Wer weitere Fehler findet darf sie behalten …

July 30, 2013 – 7:00 am

Aus Fehlern lernt man, daher ist einer nicht genug. …

kununu

Problem running Shared VMs on Windows 2008 R2 in WMware Workstation 9.0.2

July 28, 2013 – 9:14 am

UPDATE: SOLVED THE PUZZLE !!

After I had removed “127.0.0.1 localhost” from the Windows hosts file, everything works fine now

I have installed WMware Workstation 9.0.2 on a Windows 2008 R2 Server. Everything works fine, except I cannot enable sharing of VMs in the configuration.

The WMware Workstation server service starts, but dies after a few seconds. I have already searched the usual sources for a solution. ( replacing datasources.xml, re-installing the software after removing all previously installed components and cleaning the registry … ) I also made sure that the HTTPS port is not in use. Nothing helped.

I installed the software on a VM running Windows 2008 R2 and it worked immediately. I replaced the files on the physical machine with the ones from the VM. Same issue …

I really cannot figure out, what is going wrong. From the log I can see, that the service dies, while the software continues logging on the VM with the working setup.

vmware-log

Here is some more information from the log. Perhaps someone can tell, what is going on …


2013-07-28T09:47:02.376+02:00 [02172 info 'Proxysvc'] Proxy config filepath is C:\ProgramData\VMware\hostd\proxy.xml
2013-07-28T09:47:02.376+02:00 [02172 trivia 'TCP'] getaddrinfo((null), 9443, &hints, &result) returns {[::]:9443, 0.0.0.0:9443}
2013-07-28T09:47:02.376+02:00 [02172 info 'TCP'] WSASocket(23, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED)returns 904
2013-07-28T09:47:02.376+02:00 [02172 info 'TCP'] CreateIoCompletionPort(handle=904, _iocp=28, key=1, NULL)
2013-07-28T09:47:02.376+02:00 [03116 info 'Default'] Thread attached
2013-07-28T09:47:02.376+02:00 [03116 info 'ThreadPool'] Thread enlisted
2013-07-28T09:47:02.376+02:00 [02172 trivia 'TCP'] bind(socket=904, addr=[::]:9443, len=28)
2013-07-28T09:47:02.376+02:00 [02172 trivia 'TCP'] listen(904, SOMAXCONN)
2013-07-28T09:47:02.376+02:00 [02172 info 'TCP'] WSASocket(2, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED)returns 908
2013-07-28T09:47:02.376+02:00 [02172 info 'TCP'] CreateIoCompletionPort(handle=908, _iocp=28, key=1, NULL)
2013-07-28T09:47:02.376+02:00 [02172 trivia 'TCP'] bind(socket=908, addr=0.0.0.0:9443, len=16)
2013-07-28T09:47:02.376+02:00 [02172 trivia 'TCP'] listen(908, SOMAXCONN)
2013-07-28T09:47:02.376+02:00 [02172 info 'Proxysvc'] Plugin initialized
2013-07-28T09:47:02.376+02:00 [02172 info 'Nfc'] Startup breakpoint disabled
2013-07-28T09:47:02.376+02:00 [02172 info 'Nfc'] Mockup false
2013-07-28T09:47:02.376+02:00 [02172 info 'Nfc'] File Services initialized fmgr([class NfcSvc::NfcFileManager:0231E1D8])
2013-07-28T09:47:02.376+02:00 [02172 info 'NfcManager'] [NfcManagerImpl] NfcManagerImpl created
2013-07-28T09:47:02.392+02:00 [02172 info 'Ovfmgrsvc'] Plugin initialized
2013-07-28T09:47:02.392+02:00 [02172 info 'Statssvc'] Initializing statssvc plugin
2013-07-28T09:47:02.392+02:00 [02172 info 'vim.PerformanceManager'] Collection interval is 20 sec
2013-07-28T09:47:02.392+02:00 [02172 error 'vim.PerformanceManager'] Stats Depot has future timestamps. Discarding old statistics information
2013-07-28T09:47:02.392+02:00 [02172 warning 'vim.PerformanceManager'] Reverting to default stats configuration
2013-07-28T09:47:02.439+02:00 [02172 info 'SupportsvcPlugin'] Plugin initialized
2013-07-28T09:47:02.439+02:00 [02172 info 'VcsvcPlugin'] Plugin initialized
2013-07-28T09:47:02.439+02:00 [02172 info 'ha-host'] About:(vim.AboutInfo) {
--> dynamicType = ,
--> name = "VMware Workstation",
--> fullName = "VMware Workstation build-1031769",
--> vendor = "VMware, Inc.",
--> version = "9.0.2",
--> build = "1031769",
--> localeVersion = ,
--> localeBuild = ,
--> osType = "win32-x86",
--> productLineId = "ws",
--> apiType = "HostAgent",
--> apiVersion = "5.1",
--> instanceUuid = ,
--> licenseProductName = "VMware Workstation",
--> licenseProductVersion = "9.0",
--> }
2013-07-28T09:47:02.439+02:00 [02172 info 'ha-host'] Initialized StoragerRM/Vmsvc powering-on interceptor
2013-07-28T09:47:02.470+02:00 [02172 info 'HostsvcPlugin'] Plugin started
2013-07-28T09:47:02.470+02:00 [02172 info 'HttpSvc.HTTPService'] Using default for nonChunkingAgents: 'VMware VI Client|VMware-client|VMware-client/3.*'
2013-07-28T09:47:02.470+02:00 [02172 info 'HttpSvc.HTTPService'] Using default for agentsNeedingContentLength: 'VMware-client'
2013-07-28T09:47:02.470+02:00 [02172 info 'HttpSvc.HTTPService'] Max buffered response size is 104857600 bytes
2013-07-28T09:47:02.470+02:00 [02172 warning 'WelcomePageCustomizer'] Error loading OEM link information. The system cannot find the path specified.
2013-07-28T09:47:02.470+02:00 [02172 verbose 'WelcomePageCustomizer'] Created customizer with oem file '/etc/vmware/oem.xml' and dynDataUrl '/dyndata.js'.
2013-07-28T09:47:02.470+02:00 [02172 info 'HTTP server'] HTTP server created with docroots C:\Program Files (x86)\VMware\VMware Workstation\hostd/extensions/;C:\Program Files (x86)\VMware\VMware Workstation\hostd/vimLocale/;C:\Program Files (x86)\VMware\VMware Workstation\hostd/coreLocale/;C:\Program Files (x86)\VMware\VMware Workstation\hostd/docroot/, chunked responses enabled: true
2013-07-28T09:47:02.470+02:00 [02172 info 'Solo'] soapPort: 8307
2013-07-28T09:47:02.470+02:00 [02172 trivia 'TCP'] getaddrinfo(localhost, 8307, &hints, &result) returns {127.0.0.1:8307, 127.0.0.1:8307}
2013-07-28T09:47:02.470+02:00 [02172 info 'TCP'] WSASocket(2, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED)returns 920
2013-07-28T09:47:02.470+02:00 [02172 info 'TCP'] CreateIoCompletionPort(handle=920, _iocp=28, key=1, NULL)
2013-07-28T09:47:02.470+02:00 [02172 trivia 'TCP'] bind(socket=920, addr=127.0.0.1:8307, len=16)
2013-07-28T09:47:02.470+02:00 [02172 trivia 'TCP'] listen(920, SOMAXCONN)
2013-07-28T09:47:02.470+02:00 [02172 verbose 'TCP'] closesocket(920)
2013-07-28T09:47:02.470+02:00 [02172 info 'Default'] Win32 service stopped
2013-07-28T09:47:02.470+02:00 [02172 info 'Default'] Thread detached

 

[Follow up] – Unable to load text filter library: … IBMLotusDominokvfilter.dll

July 28, 2013 – 6:03 am

I was able to solve the issue. As I wrote in the recent article, it had to do with the M$ C++ Redistributable packages. Either a conflict or something was missing or a configuration problem. Using sxstrace is not of much help. If you are not familiar with this stuff, you will only get a bunch of information, but you would not know, what to do with it. And I doubt, that someone with no deep knowledge of M$ programming will find the cause in the trace file.

What I did was to delete/ uninstall ALL C++ redistributable packages before running setup.

( CAUTION : This can/ will cause issues with other applications ).

I then ran the Domino 9.0.0 setup. At the very end of the setup process, the installer installs the correct vcredist packages.

vcredist

I guess that my first attempt to fix the issue by reinstalling Domino failed, because the files where already in place and were not reinstalled during installation

Unable to load text filter library: … \IBM\Lotus\Domino\kvfilter.dll

July 27, 2013 – 4:13 pm

Since I’m running Domino 9 64bit on Windows 2008 R2 64bit, I see the following error on the console:

unableToLoad

It does not seem to have any impact on the running server. Just wonder if this is a known issue and one can simply ignore the message.The file in question is on the server.

I have already posted a question in the IBM Notes 9 Forum; nobody seems to know an answer; or nobody cares .

The Windows enetlog shows the following error:

sideBySide

SideBySide errors are typically caused by the current Microsoft Visual C++ version not being backward compatible with the application that failed. The Event ID 33 error message is typically: Activation context generation failed for “program name”..Please use sxstrace.exe for detailed diagnosis. There are other similar SideBySide errors with the same problem of backward compatibility.

If the software works OK then you don’t have to fix it but if it does not or you want to get rid of this error here are two possible Fixes:

1) Reinstall Domino. Often the installation package will have the version of Microsoft Visual C++ that it uses and will install it. – did not help
2) Try to figure out what Microsoft Visual C++ Redistributable Package version (available versions are: 2003, 2005, 2008, & 2010) the application needs (most likely the one that came out prior to the date that the application software was created; check the dates of the files in the package). . These are available through Microsoft’s Downloads.

Well, I’ve tried a couple of them and also installed the exact version that is used on another server that does not show the message, but still no success.

Maybe some day in the future someone at IBM will see the exact same message on the console and fix the issue.  In the meantime … …

 

 

Weird error installing VMWare Server 2.0.2 on Windows 2008 R2

July 27, 2013 – 11:49 am

I know, VMWare Server is outdated an I better should use ESXi or at least VMWare Workstation. Indeed, the plan was to replace the VMWare Server installation with WMWare Workstation 9.0.2 and enable the sharing of virtual machines.

To install WMWare Workstation, you have to uninstall the VMWare Server fist. “There can only be one” (virtualization system). After installing the Workstation, everything worked fine. Except the sharing. I was not able to run the Workstation Server service, and after a lot of attempts to solve the issue, I finally gave up; for now.

Next I wanted to reinstall the VMWare server. After the installer started, I got an error message and the installation finished unsuccessfully.

VMInstallFault

I asked Google for advice and found some hints to unreg and register the Windows Installer. This did not help.

Next I looked into the event log and found the following entry

VMInstallFault1

Drive “E” by the way is the DVD drive of the system. …

For any unknown reason, the installer tried to install some bits and pieces onto the DVD. This obviously is a futile attempt.

To solve the issue, I assigned an other drive letter to the DVD device. The installer now ran without any issues; there was not even a  volume “E” in the system any longer.

 

amazon.com / amazon.de

July 15, 2013 – 6:39 am

We are living in a global village. When it comes to travel, we book a flight and within a day we are able to get to almost every corner of our planet. The internet gives us every information we need with just a couple of mouse clicks. We have “friends” on facebook and a blog post goes around the digital world in seconds.

We sell, buy, exchange goods and ship them to other countries; no big deal is this.

eBooks eliminate the need to wait  for the printed copy; it gives you also the good feeling to be part of the “Green Planet” initiative. How easy it is to order an ebook.

Ehm, wait … What about Amazon??

For about 1 year, I have 100$ on my amazon.com account. The money came from a gift card. And for about 1 year, I am not able to order anything from amazon.com and use the money for payment.

giftcard

Today I started a new attempt. I thought that ordering an ebook would be ok. There is no shipping cost, no tax etc. So I tried to order

giftcard1

Oh, did I mention, that I am located in Germany? Amazon does know and instead of letting me order an eBook it just gives me a hint that I should order from amazon.de.

That would not be a problem, if I only could use my amazon.com giftcard on amazon.de.But the giftcard is not accessible from my amazon.de account. According to amazon, shifting the money from one account to another ( for the same user ) is not possible. I cannot even give away the money for charity or just move the money from my account to another account.

And if I see this correct, I am not even able to place an order for a friend in USA and use his address for delivery.
AMAZON, this is anoying!! In Germany I would take you to court for taking the money and not providing a benefit. …

 

Hacking Notes Applications with hidden design

July 13, 2013 – 4:37 pm

I was kindly asked by an IBM representative to remove the blog post:

Ulrich – would you please take down this blog post? …

I haven’t had a chance to look at post in the DP forum but have made the dev team aware of the issue.
I am not sure what we can do to resolve but would appreciate if we could handle outside of a public venue.
Thanks, …

Arbeiterkammer Österreich – “Drum prüfe, wer der Firma Geld gibt”

June 2, 2013 – 6:25 am

Die “never ending story” geht weiter.
lexaAK620

[FollowUp] jQuery Mobile Seems incompatible with XPages in Domino 9.0

April 21, 2013 – 11:18 am

This is a follow up on an article, David Leedy wrote yesterday

I recently ran into an issue with Domino 9 and jQuery Mobile. I had to completely deactivate Dojo. Otherwise the mobile components did not render. But doing so, I would lost all of the XPages functions like partial refresh et al. On friday, my colleague at BCC asked a question on StackOverflow regarding a problem with jQuery Mobile. He finally got it working by ACTIVATING Dojo in the application.

Over the weekend, I tried to find out, what was going on. Here are my findings

In our project we are using jQuery 1.9.1 + jQuery Mobile 1.3.1 and the application needs to work even on Domino 8.5.1. This part works. No problem here.

There is a difference in the development platform. While my colleague uses IBMNotes/Domino 8.5.3, I use IBM Notes/Domino 9.

ND 8.5.3 comes with Dojo 1.5.1 and ND 9 has Dojo 1.8.1 as its default. Should not make any difference …

The first hint came from Mark Roden

markr

jQuery Mobile uses attributes like data-role=”page” and if Mark was right, using a different namespace , changing the attributes to data-bcc-role=” … should fix the issue. To make a long story short; it does not.

Next, I installed the application on ND 8.5.1 FP3 and it worked as expected. The only thing that did nor work was pagers in views and other events.
This is caused by the createForm=”false” entry in the page root. This setting was recommended bay several members of the community; so I just folowed their recommendation.

To make events work, you have to put a xp:form tag around your view control. Tim Tripcony posted an interesting entry on StackOverflow. I recommend, that you read this article.

After adding the tag to the controls, everything worked just fine.

Next was to upgrade the server step by step to release 9. Everything worked fine until I upgraded the server to version 9. I then moved the dojo-xxx folders from the previous installations to the IBM\Lotus\Domino\data\domino\js folder. Next I configured the server to use a specific Dojo version by editing the xsp.properties file in IBM\Lotus\Domino\data\properties.

With xsp.client.script.dojo.version=1.5.1 my application started to work on ND9 without any issue. Here is an overview of which version of Dojo and Domino worked, which had issues and which combinations did not work at all.

dominoDojo

But configuring the whole server to use a different Dojo version is not a good idea. In ND 9, you can also set the dojo version in xsp.properties in the application.

So my workaround for now is to set the dojo version to 1.5.1 in the application. ND9 has Dojo 1.5.2 installed in the IBM\Lotus\Domino\data\domino\js folder, but using this version, events are not triggerd. You will see the following error in WebInspector console in Safari.

dojo152