Friday, 30 September 2016

Using Chosen a jQuery Plugin for more User-Friendly Select Boxes in XPages

As everyone knows I'm still a "cheer leader" when it comes to IBM Notes Domino. Although I sometimes have my doubts about the future of XPages given the current IBM Roadmaps hereby nevertheless a blog post on XPages.
Chosen is a jQuery plugin that makes long, unwieldy select boxes much more user-friendly. Chosen is an excellent alternative to Select2. Chosen has some great options as Hide Search on Single Select, Default Text Support, Limit Select Options in Multi-Select and Allow Deselect on Single Selects. It is also very simple to integrate into any XPages Application.
In order to use Chosen the JavaScript and CSS file(s) need to be included on the XPage / Custom Control. The latest version can be downloaded from GitHub: Chosen 1.6.2.

Adding the JS and CSS files
The JavaScript and CSS files must be added to the WebContent Folder in the Package Explorer.
In the example below a Folder Chosen has been added in the WebContent Folder.

Next the JavaScript and CSS files, chosen.jquery.js and chosen.css, must be included on the XPage or Custom Control. In this example I add the files to an XPage.

<script type="text/javascript" src="chosen/chosen.jquery.js"></script>
<link rel="stylesheet" href="chosen/chosen.css" />

Note: Not shown in the picture above is the required file chosen-sprite.png. This file should also be added to the WebContent Folder in the Package Explorer.

Adding the x$ jQuery selector for XPages
Furthermore I use the the great XSnippet by Mark Roden, x$ jQuery selector for XPages, to initialize the plugin and include it on the XPage. The XSnippet can be added to the Script Libraries. In this example the name of the Script Library is JQueryXSnippet.js.

<xp:script src="/JQueryXSnippet.js" clientSide="true"></xp:script>

The script itself can be made up as follows. The name of the id in the script must correspond with the id of the Combo Box / List Box. In the example below I used some extra options.

<xp:scriptBlock id="scriptBlock1">
function() {
x$( "#{id:listBox1}" ).chosen({
disable_search_threshold: 10,
allow_single_deselect: true ,
max_selected_options: 2,
width:"100% !important;"

Remark: When a placeholder is used for a non-multi-value select box such as a Combo Box, an empty tag is required as a first option. One possibility is to generate computed items, including an empty tag, as values for the Combo Box.

var arr = new Array("");
var res = @DbLookup("", "byKeyWord", "Category", 2);
var list = arr.concat(res);
return list;

Responsive design - Percent width
Chosen's width can be set to a percentage of its parent to support responsive design.
The best way to ensure that Chosen is using a percent based width is to add the width declaration into the scriptBlock of the listBox and comboBox, width:"100% !important;".

Basic Setup Combo Box in XPages
For using a place holder it is necessary to add the Attribute data-placeholder in the Properties of the Combo Box.
<div class="col-md-7">
<xp:comboBox id="comboBox1" >
<xp:attr name="data-placeholder" value="Select a category...."></xp:attr>
<xp:this.value><![CDATA[#{javascript:var arr = new Array("");
var res = @DbLookup("", "byKeyWord", "Category", 2);
var list = arr.concat(res);
return list;}]]></xp:this.value>

Basic Setup List Box (multi value)
Chosen also supports multi-value select boxes.

<xp:listBox id="listBox1" multiple="true">
<xp:attr name="data-placeholder" value="Select a category..."></xp:attr>
<xp:this.value><![CDATA[#{javascript: @DbLookup("", "byKeyWord", "Software", 2);}]]></xp:this.value>

Code XPage
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="" xmlns:xc="">
<xp:script src="/JQueryXSnippet.js" clientSide="true"></xp:script>
<script type="text/javascript" src="chosen/chosen.jquery.js"></script>
<link rel="stylesheet" href="chosen/chosen.css" />
<xp:scriptBlock id="scriptBlock2">
function() {
x$( "#{id:comboBox1}" ).chosen({
disable_search_threshold: 10,
allow_single_deselect: true,
width: "100% !important;"
<xp:scriptBlock id="scriptBlock1">
function() {
x$( "#{id:listBox1}" ).chosen({
allow_single_deselect: true ,
max_selected_options: 2,
width:"100% !important;"
<xp:panel xp:key="facetMiddle">
<div class="col-md-7">
<div class="col-md-7">
<xp:comboBox id="comboBox1">
<xp:attr name="data-placeholder" value="Select a category....">
<xp:attr name="no_results_text" value="No results found!">
<xp:this.value><![CDATA[#{javascript:var arr = new Array("");
var res = @DbLookup("", "byKeyWord", "Category", 2);
var list = arr.concat(res);
return list;}]]></xp:this.value>
<xp:listBox id="listBox1" multiple="true">
<xp:attr name="data-placeholder" value="Select a category...">
<xp:this.value><![CDATA[#{javascript: @DbLookup("", "byKeyWord", "Software", 2);}]]></xp:this.value>

For more information about Chosen : Documentation Chosen

Quick IBM Notes Tip: Administrative LotusScript Agent to Update Field Values on Selected Documents in View

Lately I focus particularly on LotusScript, Java and NodeJS and no longer on XPages. XPages has as it looks in all the recent IBM Roadmaps not a real future anymore. More on this subject in my next blog post.
In my daily work I frequently encounter request to customize field values in selected documents. One of the most frequently used administrative LotusScript Agents I use fot this purpose is an Agent from Breaking Par Consulting, Inc. to update Field Values in selected documents in a Notes View.
At the moment the agent is executed the person running the Agent will be prompted for the Field Name, the (New) Field Value and a Field Type. All the selected documents in the Notes View will be updated. As shown in the third image it is also possible to delete a Field with this Agent. The Agent Properties I use for this Agent are Trigger - Action Menu Selection and Target - All Selected Documents.

Sub Initialize
   Dim ws As New NotesUIWorkspace
   Dim session As New NotesSession
   Dim prompt As String
   Dim fieldName As String
   Dim fieldValue As String
   Dim dataTypes As Variant
   Dim thisDataType As String
   Dim fieldValues As Variant
   Dim newFieldValues As Variant
   Dim db As NotesDatabase
   Dim coll As NotesDocumentCollection
   Dim i As Integer
   Dim doc As NotesDocument
   Dim item As NotesItem

prompt = "Please enter the name of the field to be updated"
   fieldName = ws.Prompt(3, "Enter Field Name", prompt, "")
   If fieldName = "" Then Exit Sub
   If Instr(fieldName, " ") <> 0 Then
      prompt = "Error! Field Names can't have spaces!"
      Msgbox prompt, 16, "Error"
      Exit Sub
   End If

prompt = "Please enter the new value. For multiple values, separate with a colon."
   fieldValue = ws.Prompt(3, "Enter Field Value", prompt, "")

Redim dataTypes(5) As String
   dataTypes(0) = "Text"
   dataTypes(1) = "Number"
   dataTypes(2) = "Date"
   dataTypes(3) = "Readers"
   dataTypes(4) = "Authors"
   dataTypes(5) = "DELETE THIS FIELD"
   prompt = "Choose the data type of the value(s)"
   thisDataType = ws.Prompt(4, "Choose Data Type", prompt, dataTypes(0), dataTypes)
   If thisDataType = "" Then Exit Sub

Set db = session.CurrentDatabase
   Set coll = db.UnprocessedDocuments
   fieldValues = Evaluate({@Explode("} & fieldValue & {"; ":")})
   Select Case thisDataType
   Case dataTypes(0) : Redim newFieldValues(Ubound(fieldValues)) As String
   Case dataTypes(1) : Redim newFieldValues(Ubound(fieldValues)) As Double
   Case dataTypes(2) : Redim newFieldValues(Ubound(fieldValues)) As Variant
   Case dataTypes(3) : Redim newFieldValues(Ubound(fieldValues)) As String
   Case dataTypes(4) : Redim newFieldValues(Ubound(fieldValues)) As String
   End Select
For i = Lbound(fieldValues) To Ubound(fieldValues)
      Select Case thisDataType
      Case dataTypes(0) : newFieldValues(i) = Trim(fieldValues(i))
      Case dataTypes(1) : newFieldValues(i) = Val(fieldValues(i))
      Case dataTypes(2) : newFieldValues(i) = Cdat(fieldValues(i))
      Case dataTypes(3) : newFieldValues(i) = Trim(fieldValues(i))
      Case dataTypes(4) : newFieldValues(i) = Trim(fieldValues(i))
      End Select
Set doc = coll.GetFirstDocument
   While Not doc Is Nothing
      If thisDataType = "DELETE THIS FIELD" Then
         If doc.HasItem(fieldName) Then Call doc.RemoveItem(fieldName)
         Call doc.ReplaceItemValue(fieldName, newFieldValues)
         If thisDataType = dataTypes(3) Or thisDataType = dataTypes(4) Then
            Set item = doc.GetFirstItem(fieldName)
            If thisDataType = dataTypes(3) Then item.IsReaders = True
            If thisDataType = dataTypes(4) Then item.IsAuthors = True
         End If
      End If
      Call doc.Save(True, False)
      Set doc = coll.GetNextDocument(doc)
End Sub

As in almost all situations, there are of course other possibilities to update Field Values in all (selected) documents in a Notes View. Below a basic eample I use for updating Field Values in all documents in a specific Notes View.

Sub Initialize  

Dim s As New NotesSession 
Dim db As NotesDatabase 
Dim doc As NotesDocument 
Dim view As NotesView 

Set db = s.CurrentDatabase 
Set view=db.GetView("VIEWNAME")
Set doc = view.GetFirstDocument 
view.AutoUpdate = False

While Not (doc Is Nothing)  
End If 
Call doc.Save(True, False) 
Set doc=view.GetNextDocument(doc)  
End Sub

Monday, 26 September 2016

OpenNTF Contributor Director

Today I received and email from OpenNTF concerning the election for Contributor Directors OpenNTF. As you may now I made me eligible this year for election for OpenNTF Contributor Director. Good news today, I have been elected for the position of Contributor Director OpenNTF for the next year.
I would like to thank all the Contributors who have voted for me. Thank you!!
Also my congratulations to Padraic Edwards and Fredrik Norling!
Along with Padraic Edwards and Fredrik Norling I will do my utmost to contribute as much as possible to OpenNTF, the mission of OpenNTF and to the Community in genreal.
Let's make it a great year!

Friday, 23 September 2016

Installing IBM Client Application Access (ICAA) - Presentation and Video

IBM Client Application Access (formerly known as IBM Notes Browser Plug-in) offers a lightweight solution for accessing your IBM Notes and IBM Domino applications. It also integrates seamlessly with IBM Verse and IBM SmartCloud Notes web for mail. This session will provide an overview of ICAA along with details for installation and configuration.

The video below will guide you through the installation of ICAA on the Windows, Citrix and Mac operating systems, including the directories created as well as additional steps that you may need to complete the installation.

More information on the Open Mic Webcast, including the presentation, full audio and video, can be found at the Webcast document for the event: IBM Client Application Access (ICAA) - 14 September 2016 [presentation, video + audio attached].
See also my previous blog post IBM Client Application Access 1.0.1 (ICAA) Enhancements for more information about the ICAA Client.

Thursday, 22 September 2016

Interim Fix and Workarounds iNotes - Users receive 'Formula Error' when accessing Domino 9.0.1 Fix Pack 7 Server

When an iNotes user opens their mail file on a Domino 9.0.1 Fix Pack 7 server, a "Formula Error" appears. This issue is known to occur on servers with non-English OS Regional Settings.

Diagnosing the problem
1. Upgrade server to 9.0.1FP7
2. iNotes user logs in (using any browser)
3. User is authenticated, opens mail file, and then the "Formula Error" appears.

An Interim Fix for this issue is in progress and will be released shortly (by end of September at the latest). This issue is tracked as SPR MBLTADSK8M.

Option 1
Revert to a prior version Forms9.nsf and Forms9s.nsf (e.g., from 901FP6).

Option 2
Change the decimal separator from a comma to a period in Control Panel -> Clock Region and Language -> Formats -> Additional settings -> Numbers.

Option 3
  1. Change the server's OS Regional Settings to English
  2. Stop Domino 
  3. Set Regional Settings to English as default 
  4. On the Advanced tab, set Regional Settings to English 
  5. Click the setting for "Apply all settings to the current user account and to the default user profile." 
  6. Restart the system 
  7. Start Domino
More info: IBM Technote (troubleshooting)

Wednesday, 21 September 2016

Securing Connections for IBM Traveler Mobile Applications - IBM Verse - IBM Notes Traveler

Yesterday I retweeted the message below, Securing connections for IBM Traveler mobile applications. Below is a summary of the IBM Flash Alert.

In the coming months, IBM will be enhancing the IBM Verse for iOS, IBM Verse for Android, IBM Notes Traveler Companion and IBM Notes Traveler To Do mobile apps to require that a secure connection is used between the mobile app and the endpoint used for connecting to the IBM Traveler server. This article provides the security requirements and step by step instructions for ensuring that your on-premises IBM Traveler environment has adequate connection security in place in order to support these updated apps. If your mobile users connect to IBM SmartCloud Notes for Traveler and the Verse Mobile service, these steps do not apply, since this environment is already prepared for these updates. If you have deployed an IBM Traveler server on your own premises, then please continue reading.
IMPORTANT: You must ensure that your IBM Verse Mobile and Traveler connections are secure and compliant with these requirements by January 1, 2017.

These requirements only apply to the server to which the Verse mobile apps are directly connecting. This may be the IBM Traveler server running on a Domino instance, or some other intermediate reverse proxy, such as an F5 or IBM Mobile Connect. When you enter the host name into your Verse mobile application to connect to your Traveler service, this host name represents the server with which the mobile app is directly connecting, and this is the connection that must be secured.

Mobile apps must connect using HTTPS and not the unsecured HTTP protocol.
The server certificate cannot be expired or invalid.
The server certificate common name (CN) or a name from the server certificate’s Subject Alternate Name (SAN) list must match the hostname of the server. A wildcard certificate is allowed but the domain from the wildcard must match the server’s domain.
The negotiated Transport Layer Security version must be TLS 1.2. Since devices running Android prior to version 4.1 do not support TLS 1.2, they can no longer be supported.
The server certificate must be trusted and either issued by a certificate authority (CA) whose root certificate is incorporated into the device operating system or is a trusted root CA that has been installed by the user or a system administrator on the device.
The negotiated TLS connections cipher suite must support forward secrecy and be one of the following:


The leaf server certificate must be signed with one of the following types of keys:
- Rivest-Shamir-Adleman (RSA) key with a length of at least 2048 bits
- Elliptic-Curve Cryptography (ECC/ECDSA) key with a size of at least 256 bits
The leaf certificate hashing algorithm must be Secure Hash Algorithm 2 (SHA-2) with a digest length of at least 256 (SHA-256 or greater).

Failure to meet all of these requirements may result in your Verse for iOS, Verse for Android, IBM Notes Traveler Companion and IBM Notes Traveler To Do apps being unable to connect to your Traveler servers.

For detailed information: Securing Connections for IBM Traveler Mobile Applications

Monday, 19 September 2016

IBM Verse Offline: Overview and Architecture

This video provides a brief overview and of IBM Verse Offline and a high level view of its architecture.

Resources IBM Verse Offline
- IBM Verse Frequently Asked Questions
- Verse Offline feature capabilities
- Verse Offline use cases
- How is Verse Offline different than Domino Offline Services (DOLS)?

Exciting times ahead! Nominations IBM Social Business (ICS) - OpenNTF Board of Directors

Exiting times again. First it's almost IBM Champions Social Business (ICS) time! Soon the nominations will be opened for IBM Champion Social Business (ICS) 2017. So it's time to think about your nominations!
The IBM Champion program recognizes innovative thought leaders in the technical community. An IBM Champion is an IT professional, business leader, or educator who influences and mentors others to help them make the best use of IBM software, solutions, and services, shares knowledge and expertise, and helps nurture and grow the community.

Contributions can come in a variety of forms, and popular contributions include blogging, speaking at conferences or events, moderating forums, leading user groups, and authoring books or magazines. Educators can also become IBM Champions; for example, academic faculty may become IBM Champions by including IBM products and technologies in course curricula and encouraging students to build skills and expertise in these areas.
Nominations for IBM Champion are open to candidates worldwide, and candidates can be self-nominated or nominated by another individual. IBM employees are not eligible for nomination.

Nominate an IBM Champion : IBM Champion Program
More information about the IBM Champion Program: IBM developerWorks - Champions

Secondly, the elections begin this week for the OpenNTF Member Directors and OpenNTF Contributor Directors. This year I made me eligible for election for OpenNTF Contributor Director. Wishing everyone who is up for election a lot of success!

Saturday, 17 September 2016

Seascape for IBM Notes - Application Archiving for IBM Notes and Domino

At present I am examining different possibilities to carry out a large-scale archiving of several Notes database and archiving some large amounts of inactive data in connection with application modernization. The manner in which this archiving will eventually be implemented is still a point of discussion at this time.
For Application Archiving and archiving inactive data there are basically four main options available as well described in the blog post by Swing Software, VHS tapes and NSF Files - Notes / Domino Application Archiving.

But first the main question, why is Archiving important? There are five main reasons for Archiving in general, system performance, costs, risks, data retention and data migration / application modernization. Detailed information can be found in the blog post Active vs. Inactive Data.

For archiving two essential points are decisive for me, the Notes documents / data need to be kept alive long after the original application has been retired and it also must be possible to use / access the archived documents without any need for a specific architecture or platform (so also IBM Notes independent).
Today I saw this Tweet on Twitter regarding Application Archiving for IBM Notes and Domino by Swing Software.

Reading the Swing Software website regarding Seascape for IBM Notes it seems that with Seascape you no longer need to run IBM Notes or Domino to access Application Views and Documents. You can just use IBM Notes Data without IBM  Notes. The only thing needed is a web browser with a PDF Viewer. Currently for me a very interesting option for Application Archiving for IBM Notes. More information on the Swing Software website, Application Archiving for IBM Notes and Domino. Seascape for Notes will be available in Fall 2016.
Perhaps also an interesting option for IBM Notes users who want to start with Application Archiving in the near future. If anyone has other suggestions or solutions please let me know.
Note: The databases and documents I refer to in this blog post do not need to be migrated to other platforms but only need to be archived.

Friday, 16 September 2016

Quick IBM Notes Tip: LotusScript Function to Send Emails to Users Registered on a Profile Form with Information based on Documents in a View

Yesterday I posted a Tweet on Twitter regarding a LotusScript Function to send emails to users registered on a Profile Form with information based on documents in a View. Based on this Tweet I have had a number of requests to publish this LotusScript function on my blog.
Some remarks concerning the LotusScript function.
The LotusScript function uses a two fields which are present on the Profile form in the specified database (current database).
The first field on the Profile form, NotificationMembersEmail, concerns the persons to whom the Email is sent (Type Names - Editable - Allow multiple values). The second field on the Profile form, Footer, concerns the Email footer (Rich Text - Editable).
The function loops through all the documents in the specified View, retrieves the value of the specified Field Names, creates Email with a Text Line, the Values of Fields and an Email footer and finally sends the Email to the registered persons on the Profile form.
I included the sendEmail function in a Script Library. The function can be called from a sheduled Agent. Below the sendEmail LotusScript function.

Function sendEmail(doc As NotesDocument) As Boolean
Dim s As NotesSession
Dim db As NotesDatabase
Dim vdoc As NotesDocument
Dim pdoc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim view As NotesView
Dim footer As NotesRichTextItem

Set s = New NotesSession
Set db = s.CurrentDatabase
Set view = db.GetView("VIEWNAME")
Set doc = New NotesDocument(db)
Set pdoc = db.Getprofiledocument("ProfileForm")
Set footer = pdoc.GetFirstItem("Footer")

Dim datetim As New NotesDateTime( Now() )

'- prepare mail
If view.EntryCount <> 0 Then
doc.Form = "Memo"

'- Set recipient
doc.Principal = "SOMENAME"
doc.~$AltPrincipal = "SOMENAME"
doc.From = "SOMENAME"
doc.SendTo = pdoc.NotificationMembersEmail
doc.Subject = "TEXTSUBJECT" + " " + CStr(Now())

Set rtitem = New NotesRichTextItem( doc, "Body" )

Call rtitem.AppendText("TEXTLINE EMAIL")
Call rtitem.AddNewLine(1)

'collect all documents in View
Set vdoc = view.GetFirstDocument
Do Until vdoc Is Nothing
Call rtitem.AddNewline(1)
Call rtitem.AppendText(vdoc.FIELDNAME(0))
Call rtitem.AppendText(" - " & vdoc.FIELDNAME2(0))
Set vdoc = view.GetNextDocument(vdoc)

'add eEmail footer profile form
Call rtitem.AddNewline(3)
Call rtitem.AppendRTItem(footer)

Call doc.Send(False)
End If

End Function

The function is easily adjustable to your own insights and needs.

Opening General Session at ICON UK 2016 including Roadmaps for IBM Notes Domino and Session Slides

Below a recording of the Opening General Session at ICON UK 2016 by Teamstudio. The Opening  Session includes the Roadmaps for IBM Notes Domino.

Blog Posts

Icon UK Domino's Roadmaps by Matteo Bisi
ICON UK, some news about IBM Verse On Prem by Matteo Bisi
ICONUK and the State of Domino Web Development by Sean Cull

At the moment that more information is available this will be added in this blog post.

Session Slides

Docker : How to deploy Digital Experience in a Container drinking a cup of coffee
Matteo BisiAndrea Fontana
Docker is one of best technologies available on market to install and run and deploy application fastest , securely like never before.
In this session you will see how to deploy a complete digital experience inside containers that will enable you to deploy a Portal drinking a cup of coffee.
We will start from a deep overview of docker: what is docker , where you can find that, what is a container and why you should use container instead a complete Virtual Machine.
After the overview we will enter inside how install IBM software inside a container using docker files that will run the setup using silent setup script.
At last part we will talk about possible use of this configuration in real work scenario like staging or developement environment or in WebSphere Portal farm setup.

Servlets made easy. Write once and run everywhere.
Frank van der Linden
Since a few years the Domino server is a real Java server. Which give you plenty of new opportunities, such as real servlets. Get and post data to any database via a Java servlet. Develop once, run everywhere. In this session you will learn what are servlets, how to create a servlet as OSGi plugin. Make use of other plugins projects or third party projects and. Run the servlet on a Domino server and other Java servers, like Websphere Liberty Profile, Tomcat and Wildfly. Last but not least, how to deploy the servlet as OSGi plugin or as jar file or update site to the Domino server.
Visit the blog of Frank of the Linden for the demo code!

IBM Connections Adoption Worst Practices
Femke Goedhart
Regardless if you've implemented IBM Connections, are considering it or in the middle of the planning stages - there are wrong (and right) turns to take at every step. Join Femke to learn about misconceptions and tribulations others have faced while striving to become a socially enabled company. Hear about real World examples and often funny anecdotes from the trenches of adoption to show you how NOT to do it and giving you tips on how to do it better along the way.
Walk away with a grasp on what to focus on to make a success out of your IBM Connections environment.

Back from the Dead: When Bad Code Kills a Good Server
Bill Malchisky - Serdar Basegmez 
It's Friday and a new customer calls. Their mission critical app is taking :05 to open documents and the users are quite concerned. Where do you start when handed a 20 year old application you have never seen, on a server you barely know? Join two IBM Champions as they dissect a complex Domino performance problem from both the administration and development side to provide a complete customer solution. The session includes best practices around problem solving techniques and a checklist you can use internally to solve quickly problems you encounter.

REST Assured, Freeing Your Domino Data Has Never Been That Easy!
Serdar Basegmez 
XPages provides a great application development platform, combining the power of the IBM Domino server with a modern Java-based architecture. While this unique combination creates a whole new world of possibilities, we still need more capabilities, especially regarding the ongoing trend where the front-end and the back-end architecture are changing. Your boss and your users expect great user experiences - period. In this new paradigm, you have a new mission: Integrate your existing application data and business logic with a new front-end. Luckily, we have a great gadget hidden in our toolbox: Apache Wink Servlets, which gives you the power to design RESTful services for your Domino applications with only few lines of code. This session will equip you with the skills and techniques to use this hidden gem and help you to understand the advantage of Wink servlets.
Visit the blog of Serdar Basegmez for download the Apache Wink demo and the template plugin.

Migration:Impossible...Not so
Keith Brooks - Bill Malchisky
Leaving a mail system and going to Domino, or Connections Cloud, there are some basic things one must do, and not do. Caution: Worst practices are here! Comparison of two different migrations and how to make sure yours ends up as a completed mission. Including changing Operating Systems, hosted/on premises, project plans and arbitrary deadlines.

Experiences modernizing a IBM Notes application using AngularJS, REST and Nginx
Mark Leussink
Modernization of IBM Notes applications is a topic that is on the map for many IBM customers. With one of my customers, a Norwegian manufacturing company, we started a project last year to modernize a 15 year old business critical Notes application. We decided early on to keep using Domino in the backend, but switch to AngularJS for the frontend. In the session I'll talk about how we approached the project and got to a working prototype. Topics I will cover include responsibilities, development workflow, technical setup and issues we ran into. I'll explain the architecture that we are using, the components involved and how we integrated with IBM Connections and Infor. Keywords for this session: AngularJS, Nginx, REST, IBM Domino, Connections, Infor M3 and Infor Document Management.

Wednesday, 14 September 2016

Quick Notes Tip: Build A Better @Abstract Formula

In certain situations it can be required or necessary to display, for example, the first 120 characters of a (Rich Text) Field in a View Column. For this purpose, assuming the data is text,  it is possible to use, among others, @Abstract (Formula Language).
The basic syntax of the @Abstract Formula is:

@Abstract( [ keywords ] ; size ; beginText ; bodyFields )

Number. The maximum size of the abstracted text. Can be no larger than 64,994 bytes. The number of bytes available for the abstracted text is size - 1; one byte is reserved for internal use.
Text. A comment to insert at the beginning of the returned text, no larger than 10 characters. The size of beginText counts toward the total size of the abstracted text, but its contents are unaffected by @Abstract commands. Specify an empty string ("") if you do not want a comment.
Text or text list. Any number of fields containing the text to abstract. May be text, rich text, or keyword fields. The text within each field is concatenated with spaces in the order specified. If Notes/Domino cannot locate a field by name, it uses the string literal instead. Enclose each field name in quotes and separate multiple names with colons: "Sales":"Figures".

Common problem with the standard use of @Abstract is that the truncation/clipping, based on the size, can be in the middle of a word.
For this there is a simple solution, to which I was pointed by a colleague, by expanding the @Abstract formula so that the truncation / clipping is based on the last word before the last space.
As an additional option an ellipsis can be added after the last word.
The new @Abstract Formula will look like this:

_ellipsis := " ...";
_length := 120;
_range := 10;

_abstract := @Abstract([TextOnly]; _length; ""; "FIELDNAME");

REM {to make sure we don't truncate/clip in the middle of a word,};
REM {get the text up to the last word before the last space};
REM {and append ellipsis ' ...'};

@If( @Length(_abstract) >= (_length - _range);
@LeftBack(_abstract; " ") + _ellipsis;

The result is always good an the truncation/clipping is never in de middle of a word.

It is not possible to use @AbstractSimple because this function only use the parameter (bodyFields) and returns the first 100 characters or first 2 paragraphs of text, whichever is smaller. All newline and tab characters are converted into spaces, and all empty paragraphs (containing only a newline character) are ignored. If the parameter is a single field, a text value is returned. If the parameter is a list of field names, then a text list is returned with each list element containing the abstracted text of the corresponding field in the parameter list.
A simple Notes Tip that I always use when I need to display some text from a Rich Text Field in a View Column.

Upcoming XPages Webinar: XPages and jQuery DataTables - Simplifying View Creation while Maximizing Functionality

On October 11th a very interesting webinar will be organized by T.L.C.C and Team Studio, XPages and jQuery DataTables - Simplifying View creation while maximizing functionality by Michael Smith. The registration for this webinar is available on the T.L.C.C website.

Do you find adding view data to XPages unnecessarily painful? This webinar will focus on unleashing the power of jQuery DataTables within your XPages and demonstrate how to create a scalable infrastructure that minimizes the need for additional views and design changes to XPage design elements by using REST services and a reusable custom control. We will also dig into the api of DataTables and show you how to take advantage of its rich feature set to enhance the UI of your Views and tables within your XPage applications. With XPages and DataTables, adding View data to your XPages can be simple, fast, powerful, and painless!

For more information: XPages Webinar Series with TLCC andTeamstudio

Missed a Webinar? Look here for the recorded webinars.
Below a recording of the webinar from September 8th , Take a Trip Into the Forest - A Java Primer on Maps, Trees and Collections by IBM Champion Howard Greenberg.

Use this link to download the demonstration databases used in the Take a Trip Into the Forest - A Java Primer on Maps, Trees, and Collections session.

Tuesday, 13 September 2016

IBM Domino and IBM Notes 9.0.1 FP7 available for download on IBM Fix Central

Today IBM has released IBM Domino and IBM Notes FP7 on IBM Fix Central.
9.0.1 Fix Pack 7 is a collection of new features and low-risk, high-impact fixes to help customers safely avoid known issues. IBM strongly recommends that customers running Notes/Domino 9.0.1x upgrade to this latest Fix Pack since it adds new features and addresses a small percentage of defects that impact the broadest set of customers. Fix Packs are released periodically to provide a greater level of stability for customer environments. They go through the same level of fix, regression and interoperability testing that occurs with Maintenance Releases. Fix Packs are always cumulative and contain all of the fixes from previous ones. All Fix Packs are language independent and may be applied on any language version of Notes/Domino 9.0.1x.
Notes/Domino 9.0.1 Fix Pack 7 addresses defects in the Client, Server, Notes Browser Plug-in and Domino OpenSocial component.

Important Notes

9.0.1 Fix Pack 7 Fix List descriptions

  • GTONAABGV7 (LO89121) - Client: Fixed a Client crash issue when setting up IMAP
  • SFIK86WR26 (LO52999) - Fixed an issue where launched programs do not get focus (technote 1593140)
  • SSSS9GACRK (LO80115) - Allow "Advanced Menus" option to be controlled via Policy (technote 1990186)
  • +RGAU9XUMQP (LO85491) - Fixed an issue that would cause corrupted attachments when using the Notes API to export data. This was reproducible with the Archiving-API sample code from the API Toolkit. This was a regression in 9.0.1
  • TMDS8U5R2K (LO69308) - Fixed a Notes Client delay issue when performing a copy/paste from IE using a proxy server
  • RREN9DEFWW (LO77885) - Enable location roaming for roaming users
  • FABN9WMMW9 (LO85019) - Addressed a potential Domino server hang condition caused by a deadlock between compact and update tasks. (technote 1979912)
  • FABNA3BQDM (LO86717) - Fixed a potential Domino server crash when DBMT is processing soft deletions.
  • JSSI7PD47Q (LO37811) - Fixed intermittent crash caused by 3rd party doing Ole to LSXBE
  • HSPR9UN6V7 (LO84214) - Fixed a potential Domino Server crash due to a null string passed in to OSGetEnv. This issue commonly would occur if there was no carriage return at the end of Notes.ini file.
  • PALT9ZLMA6 (LO86150) - Fixed DXL Export crash occurring on certain documents with bad data,
  • KBRN9Q7EZW (LO81185) - Fixed a Domino Linux 64-bit server crash or instability caused by duplicate thread ids. This is described in technote 1976013 and previously required a special Domino Linux 64-bit build to be provided. Now applying this Fix Pack on Domino 9.0.1 will address the issue. Customers who previously received the special Domino Linux 64-bit build should uninstall it, re-install 9.0.1 Gold, followed by 9.0.1 FP7 or higher.
  • RDSRAAWQ6U (LO89339) - Updated the time zone table for Libya, Chile and Georgia (Tbilisi)
  • NNAI9FV6KW (LO78889) - Fixed an issue where we now keep the recipient name in the internet style when replying to a message. (technote 1979965)
  • MLEY9R9HWC (LO82956) - Fixed error when using Google Calendar in iNotes
  • KMOAA6LDVX (LO88282) - Fixes iNotes mail or calendar create failure when using Firefox 44/45. (technote 1978919)
  • THIOA56QXD (LO87392) - Fix an issue where the phrase part will remain after closing the namepicker.
  • TOGA9Q3GG5 (LO82425) - Fix a message display issue in IE
  • +CSAO9XJAFD (LO85349) - Fixed the arrow icon of vertical scroll bar. This is a regression in 9.0.1.

Known Issues
If running IBM Traveler or IBM mail support for Microsoft Outlook on Linux 64-bit, you should upgrade those products to the latest releases available prior to upgrading to Domino 9.0.1 FP7. See technote 1990034 for details.
SPR XXLI9RNB7U - Windows Domino Server: JVM version is reverted to 9.0.1 gold's version when un-installing/downgrading from a 9.0.1 Fix Pack to a prior Fix Pack. This will not impact most customers, as downgrading to a prior fix pack is not a common operation. This issue also does not affect future fix pack upgrades. DETAILS: On Windows, the Domino server installer gives you an option to downgrade to either a prior Fix Pack level or to the gold release. If customers want to downgrade to an earlier Fix Pack level, it is recommended that you un-install the Fix Pack, which will leave the server at 9.0.1 gold, then proceed with the Fix Pack install of your choice. This will ensure the correct JVM level is installed. This issue is documented in technote 1980538.

Note: IBM Notes Mac 9.0.1 32-bit is superseded by Mac 9.0.1 64-bit. Customers looking for a Notes Mac 32-bit client fix pack are encouraged instead to download and install Notes 9.0.1 Mac 64-bit. Passport Advantage part numbers can be found in this document: Supportability Q&A about IBM Notes and OS X 10.11.x 

Download : IBM Fix Central

IBM Announcement: Extended Support for IBM Notes Domino 9 - Social Capabilities Improvements from IBM Connections V5.5

The long awaited announcement by IBM has been publised today. And it is good news! IBM Notes and Domino V9.0.1 extends support and enhances its collaboration toolset with social capabilities from IBM Connections V5.5.

IBM(R) Notes(R), IBM Domino(R), IBM Notes Traveler, and IBM Enterprise Integrator extend support for version 9 to September 2021. Support for the following associated entitlements is also extended to September 2021:
• IBM Sametime(R) V9.0 Limited Use
• IBM Domino Designer V9.0.1
• IBM Mobile Connect V6.1.5
• IBM Domino Global Workbench V9.0.1

Additionally, IBM Notes and Domino V9.0.1 features social capabilities improvements from IBM Connections V5.5.

IBM Notes and Domino unifies business messaging, applications, and social
collaboration. Its social capabilities are integrated into user desktops, browsers, or
mobile devices, offering collaborative tools with a single point of access to business
applications, social networks, email, calendars, feeds, and widgets.

Extended support for version 9
Support for IBM Notes and Domino, Traveler, and IBM Enterprise Integrator (formerly Lotus Enterprise Integrator) V9.0.x is extended to September 2021.

New social features
IBM Notes and Domino V9.0.1 now includes social capabilities from IBM Connections V5.5. IBM Connections enhances the social toolset of IBM Notes and Domino V9.0.1, enabling you to quickly locate the people and content you need through integrated access to your collaboration applications.

The IBM Connections V5.5 entitlement included with the licenses in the following list enables IBM Notes and Domino customers to deploy and access the Files and Profiles features of IBM Connections through all clients, browsers, and mobile devices, at no additional charge:

• IBM Domino Enterprise Client access license
• IBM Domino Messaging Client access license
• IBM Domino Collaboration Express(R) license
• IBM Domino Messaging Express license

The updated IBM Connections V5.5 entitlement enables users to access the knowledge of networks of professionals with minimal effort.

The Files feature helps users easily share content with other people and removes the need to send large files through email. Users can socialize content, enabling other users to easily find content, make recommendations, and share with more people.

The Profiles feature helps users find the people they need by searching across the organization's content using tags to identify expertise, current projects, responsibilities,socializing skills, interests, and organizational structure for others to discover and benefit from the information.

For more information: Announcement by IBM

Replay Webinar Take a Trip Into the Forest: A Java Primer on Maps, Trees and Collections

On September 8th a very interesting webinar was organized by T.L.C.C and Team Studio, Take a Trip Into the Forest - A Java Primer on Maps, Trees and Collections by IBM Champion Howard Greenberg.
For those who missed this webinar below the content, slides (MWLUG) and video. As soon as the webinar slides are available I will add them to the blog post

Content Webinar
Wondering how to take advantage of Java and managed beans in XPages? To do this requires knowing how to store data in Java objects and a good understanding of maps, trees, lists, and sets. No, we're not talking about Google Maps or those big green things in forests, but different Java interfaces!

Come learn from Howard Greenberg of TLCC as he discusses different programming models to use when storing application configuration information, speeding up lookups to Domino data and feeding data to repeat and table controls. Learn how to build reports from different data sources. Plus, Howard will also look at working with dates and numbers in Java and Domino. Finally, he will review the Domino Java APIs and an alternative, the OpenNTF Domino API.

Slides MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, Trees, and Collections

Download the sample application: Link Demonstration Databases
Use the link above to download the demonstration databases used in the Take a Trip Into the Forest - A Java Primer on Maps, Trees, and Collections session! See the readme.txt file in the zip file for more information on required OpenNTF projects. (Unzip to the Notes data directory, the databases should be in the mwlug2016 directory in the Notes data directory.)

Monday, 12 September 2016

New Fix Pack available for IBM Mail Support for Microsoft Outlook on IBM Fix Central (IMSMO)

IBM released a new Fix Pack for IBM Mail Support for Microsoft OutlookNew on IBM Fix Central,
Note that if you are running your IMSMO server on Linux 64-bit, then you should upgrade IMSMO to prior to upgrading to Domino 9.0.1 Fix Pack 7 (coming soon). See the technotes below for the IMSMO fix list, download links, and info on the Linux 64-bit issue mentioned above.

Fix List

Please read the technote 1990034 - Upgrade Linux64-based Traveler & IMSMO servers before upgrading to Domino 9.0.1 Fix Pack 7 (or later) to avoid potential crash.
The upcoming Domino 9.0.1 Fix Pack 7 release (scheduled for Sept 2016) will introduce an API signature change that could potentially cause a crash on both Traveler servers (version and earlier) and IMSMO servers (version and earlier) that are running on Linux 64-bit.
If your Traveler or IMSMO servers are running on Linux 64-bit, it is highly recommended that you upgrade to Traveler (or later) and IMSMO (or later) prior to upgrading your Domino server to 9.0.1 FP7 (or later). Linux 64-bit is the only platform impacted by this issue.

Thursday, 8 September 2016

Introducing Box Relay - Developed by IBM and Box - Workflow Made Simple

The past few days I have read a lot of tweets and posts regarding Box Relay.
But what exactly is Box Relay?
Most workflow tools are notoriously difficult to use. Until now. Developed by IBM and Box, Box Relay makes it simple for everyone in your business to build, track and manage their workflows. Drive productivity and standardize processes across your extended enterprise – all with the benefits of Box.

From the Blog: Box Relay is the first solution co-developed by Box and IBM and it's raising the bar for workflow in the cloud. No one has created a tool that is so intuitive to use and that makes it so easy to work with external participants -- and in a way that offers all the integrated benefits of a content management platform. This is just the beginning from Box and IBM. Together, we are uniquely positioned to solve this problem around empowering people to more efficiently manage their workflows, and we will continue to invest in ways that allow people to work smarter and get their work done faster.
Box Relay helps people spend less time on processes so they can focus on the work that really matters.

Very interesting to follow how this solution for workflow in the cloud will continue to develop in the near future.

Learn more about Box Relay : Website Box Relay - Workflow that works for everyone

Wednesday, 7 September 2016

IBM Traveler Server available for download on IBM Fix Central

IBM Traveler server is now available for download at this Fix Central link. A full installation package will be available on Passport Advantage by September 14. This release does not include a database schema update.  See below for the list of APAR fixes included in this release and additional related links. IBM Traveler is a maintenance release that provides APAR fixes for IBM Traveler server.

The information below outlines the changes included.
IBM Traveler includes all APAR fixes delivered in all previous releases up to and including IBM Traveler in addition to the APARs listed here.
Note: IBM Traveler does not include a database schema update. However if updating from a version prior to there will be a schema update. Action may be required if you manually manage your database schema (this is not common). If you use auto schema updates (default behavior) there is no action required. See Updating the Enterprise Database for more information.
Important: IBM Traveler or later is required if upgrading a Domino server on Linux 64-bit to 9.0.1 FP7 or later. See this technote for details.

For more information: Traveler Server Release Notes
Download IBM Fix Central: Windows / Linux

Sunday, 4 September 2016

September A Significant and Interesting IBM Notes Domino and XPages Month

September will be a very significant and interesting IBM Notes Domino and XPages month. First ICON UK 2016 will take place, the official IBM announcement regarding he lifecycle policy for IBM Notes and Domino 9.0.x will be made by IBM, Notes Domino Fix Pack 7 will be released and finally the IBM Champions Nominations for Social Business will be opened again.

ICON UK 2016
ICON UK is an annual event in London for all users of IBM software to meet, learn and network. The 2016 event will take place on the 15 and 16 of September.
Over these two days, attendees can join sessions from four topic streams: The Developer’s Cubicle, The Administrator’s Clipboard, The Manager’s Meeting and Out of the Box Ideas.
In the Developer's Cubicle you will find sessions on XPages, Java, Plugins and enough state of the art content for everyone from beginner to expert.
On the Administrator's clipboard you will find topics that make ICS Admins excited. On-Prem, hybrid and cloud admin topics flourish!
In the Manager’s Meeting track, you’ll find sessions on business cases, adoption stories, best practices and more.
ICON UK attendees hear and learn from world-renowned experts on cutting edge topics. Seek them out over coffee or lunch and grill them on their chosen topics to learn even more. Our speakers are just like you; they are from our own ICS community and have been there, done that and got the tee-shirt. They give their time to speak at ICON UK for free and will be more than happy to talk to you and try to answer your questions.
For more information and registration see the ICON UK 2016 Site.

IBM Announcement Lifecycle Policy for IBM Notes and Domino 9.0.x
There will be an official announcement by IBM in September 2016 with an update to the lifecycle policy for IBM Notes and Domino 9.0.x.
IBM remains committed to Notes and Domino and has recently released additional functionality, including IBM Client Application Access and IBM mail support for Microsoft Outlook.  IBM also plans to release IBM Verse On-Premises later this year.

IBM Champions Nominations Social Business
September - October is IBM Champion Season for Social Business ! Nominations will soon be open!
The IBM Champion program recognizes innovative thought leaders in the technical community -- and rewards these contributors by amplifying their voice and increasing their sphere of influence. An IBM Champion is an IT professional, business leader, developer, or educator who influences and mentors others to help them make best use of IBM software, solutions, and services.
For more information see the IBM Champions Site on IBM developerWorks.

IBM Notes Domino Fix Pack 7
Currently IBM Notes Domino Fix Pack 7 is in Stage 3: Gold Candidate. For more information see the current Fix List.