Category Archives: Allgemeines

Alles was sonst nirgends passt.

Social Connections 12 in Vienna

This time Social Connections is hosted in Vienna. The austrian capital is a great place to meet new and old friends. I love the city and the awesome dialect, to listen and practise a little bit, start with the lovely video about the only word you really need to survive in Vienna.

The next two days are packed with informations about IBM Connections and I hope to get in touch with the developer team of Pink to see the next planned features. The agenda promises a good mix for all people interested in IBM Connections, developers, administrators and adoption experts can attend and discuss with speakers, IBM developers, product managers and IBM Business partners.

My sessions

I will do one session with my colleague and mate Nico Meisenzahl about “IBM Connections Admin Blast”. The updated session was born for IBM Connect in February this year and will guide you through around 55 different tips and tasks you should be aware during deploying and administrating IBM Connections and the available addons like Forms/Surveys,Docs and CCM. The session takes place on monday 11:20-12:20 in Breakout 2 (lunch will start around 12:30, so we will take the chance and show all slides without jumping over the last ones and let you have food in time).

My other session is a little bit shorter and is completly new. “Automate IBM Connections deployments” on tuesday 9:40-10:10 in Breakout 1. Klaus Bild an I showed some scripts to do the same during Social Connections 7 in Stockholm, but for me these were complicated and updating requirements and new packages were a lot of work.
The last months I worked with Ansible, which is a perfect match to do automated installations and configurations. Ansible needs just a ssh connection to the servers you want to configure, no special software clients are needed. Agentless on Linux and with the option to do the same with remote powershell on Microsoft Windows.

Ansible

All important tasks are already built in and so you can install software through the tools of the used Linux (apt, dnf, yum…), change security settings, edit ulimits or service configurtions. Installing all Connections prerequisists (Installation Manager, Websphere Application Server, DB2, IBM Httpserver, TDI and all needed os packages) need about 20 minutes on 4 minimal installed Centos VMs on my Notebook. So you can directly start creating databases, update peopledb and finish the last tasks on Websphere.

I think adding more scripts does only need a lot of time during scripting and will need a lot of customization from environment to environment.

Working with Ansible is fun and not really complicated. Ansible has extensions for container management and the Orientme installer is based on it too. So every admin and developer should have a look at it.

SSL0115E: Initialization error, Error validating ASN fields in certificate

Today I got a call that a IBM HTTP Server stopped working after a reboot. The service starts and ends again after some seconds. In the error_log of IBM HTTP we found following messages:

[notice] Bld version: 8.5.5
[notice] Bld date: Oct 30 2014, 11:44:02
[notice] Webserver: IBM_HTTP_Server
[notice] Using config file C:/IBM/HTTPServer/conf/httpd.conf
[notice] IBM_HTTP_Server/8.5.5.4 (Win32) configured -- resuming normal operations
[notice] Server built: Oct 20 2014 10:58:09
[notice] Disabled use of AcceptEx() WinSock2 API
[notice] Parent: Created child process 4004
[crit] Error 10 initializing SSL environment, aborting startup
[error] SSL0115E: Initialization error, Error validating ASN fields in certificate. Configuration Failed
[crit] (OS 1813)The specified resource type cannot be found in the image file.  : master_main: create child process failed. Exiting.
[notice] Parent: Forcing termination of child process 5 

Good source found was:
https://developer.ibm.com/answers/questions/195652/why-is-the-ibm-http-server-8x-version-fails-to-sta.html

In our case the Stashfile was configured with a expiration date. So just open the keyfile, change password and check that the option expiration of stash is deactivated.

Some shortcuts with vim

Many of you know that i like VI/VIM and when i say editor it must be VIM. Often i hear at customer sites or from my colleagues, that they can’t work with vi, that shortcuts are hard to remember or even they can’t save their changes.

When you remember some short commands, you can work very fast and you can edit files through all connections (ssh, x-forward) to a server.

I created a mindmap as preparation for a speedgeeking session, the session wasn’t accepted, but the file is already done. So you can download a cheat-mindmap with a collection of shortcuts.

Navigate in files

Shortcuts in command mode:

  • gg – top of file
  • G – end of file
  • :## – ##=number go to line number
  • 0 – beginning of line
  • $ – end of line

Save and undo

  • :w – save file
  • :wq – save and close
  • :q! – close and do not safe
  • u – Undo

Some additional things

When i need to change Connections URLs within LotusConnections-config.xml after adding the webserver to my ISC, i can do this with one line.

Changing Connections URLs

Checkout LotusConnections-config.xml and edit with vim. You will find several links to your application server hostname with WebSphere ports (e.g. http://washost1.example.com:9081). When you use a large deployment you have about 15 application servers with http and https links, so you need to change 30 different urls.

With vim we can use regular expressions to change the urls. Lets change washost1.example.com:anyport to connections.example.com.

Open LotusConnections-config.xml with vim and stay in command mode. Type

:%s/washost1.example.com:9[0-9]*/connections.example.com/g

lc1

  • :%s is search and replace,
  • first part within / / is text which will be replaced
  • [0-9]* any count of a number
  • g global replace (multiple search text in one line)

lc2

Comment out some lines in httpd.conf

I often test things in my IBM HTTP Server Configuration and when i want to comment out some lines or remove the comment signs there is a easy way with vim.

Open httpd.conf and hit Ctrl+V (enters Visual Block mode),

visualblock

now you can mark some characters with j (moves cursor down) or arrow keys:

mark

Now type a capital i -> Shift+i, the cursor jumps back to the first character you marked and you can add text (e.g. “# “):

addcomment

finish the commands with ESC:

commentout

Remove characters in multiple lines

You can remove the comments with nearly the same command.

Open the file, change to visual block mode (ctrl+v), mark the characters with arrow keys and remove with d.

mark2

commentremove

Customizing IBM Connections Profiles – Add custom field to searchResults

Adding a custom field to IBM Connections Profiles is great documented in “SHOW301: Make Your IBM® Connections Deployment Your Own: Customize It!” the Connect 2014 session of Wannes Rams and Klaus Bild. Thanks to them for this great collection of customizing tipps.

In my case the bundle name is “stoeps” and the custom field i want to add is “twitterId”.

lotusconnections-config.xml

<resources>
    <!-- Custom strings for field labels --> 
    <widgetBundle name="local.stoeps.profiles.strings.uiLabels" prefix="stoeps"/>
</resources>

local.stoeps.profiles.strings.uilabels.properties

# extension property field labels
label.stoeps.twitterId=Twitter Id:

profiles-types.xml

<property>
   <!-- Custom field for Twitter ID -->
   <ref>twitterId</ref>
   <updatability>readwrite</updatability>
   <hidden>false</hidden>
</property>  

profiles-config.xml

Checkout profiles-config.xml and change following points:

<profileDataModels>
    <profileExtensionAttributes>
    ...
        <simpleAttribute extensionId="twitterId" length="180 />
    </profileExtensionAttributes>
</profileDataModels>

Uncomment the extensions templateData:

<template name="businessCardInfo">
  <templateDataModel>
        <!--  include if you render workLocation, organization, department information -->
        <templateData>codes</templateData>
        <!--  include if any only if you render profile extension fields in the template -->
        <templateData>extensions</templateData><!-- activated for twitterId in searchResult -->
        <!--  include if you render secretary name or email in the template -->
        <!--   <templateData>secretary</templateData> -->
        <!--  include if you render manager name or email in the template -->
        <!--  <templateData>manager</templateData> -->  
        <!--  include if you render information dependent upon two users being connected -->
        <!--  <templateData>connection</templateData> -->               
  </templateDataModel>
</template>
<template name="searchResults">
  <templateDataModel>
        <!--  include if you render workLocation, organization, department information -->
        <templateData>codes</templateData>
        <!--  include if any only if you render profile extension fields in the template -->
        <templateData>extensions</templateData><!-- activated for twitterId in searchResult -->
        <!--  include if you render secretary name or email in the template -->
        <!--   <templateData>secretary</templateData> -->
        <!--  include if you render manager name or email in the template -->
        <!--  <templateData>manager</templateData> -->                  
  </templateDataModel>            
</template>
...
<searchLayout>
...     
<!-- custom field in searchResult -->
<extensionAttribute showLabel="false" labelKey="label.stoeps.twitterId" bundleIdRef="stoeps" extensionIdRef="twitterId"/>
</searchLayout>

Now you must add following line to :

profilesEdit.ftl

I added following line within <@util.renderSection sectionLabel=”contactInformation”>:

<@util.renderFormControl ref="twitterId" singleColumnLayout=false nlsBundle="stoeps" nlsKey="label.stoeps.twitterId"/>

profilesDetails.ftl

<#-- Customize start -->
<#-- Adding a field twitter id -->
<@util.renderProperty ref="twitterId" nlsKey="label.stoeps.twitterId" nlsBundle="stoeps" hideIfEmpty=true ;  ref, dataId, dataKey, nlsKey, nlsBundle>
    <@util.renderValue ref=ref renderAs="twitter" />            
        <br/>
</@util.renderProperty>     

<#– Customize end –>

searchResults.ftl

I added following code above the renderProperty of jobResp:

<@util.renderProperty ref="twitterId" nlsKey="label.stoeps.twitterId" nlsBundle="stoeps" hideIfEmpty=true ;  ref, dataId, dataKey, nlsKey, nlsBundle>        
    <div>
         <@util.renderValue ref=ref renderAs="twitter"/>
    </strong>   
    </div>
</@util.renderProperty> 

renderAs comes from commonUtil.ftl, to format a URL to the Twitter Homepage.

commonUtil.ftl

...
<#elseif renderAs = "email">
    <a href="mailto:${value}">${value}</a>
<#-- customize start -->
<#elseif renderAs = "twitter">
    <#-- special rendering for twitter id -->
    <a href="http://twitter.com/${value}" target="_new">@${value}</a>       
<#-- customize end -->
<#elseif renderAs = "blogUrl">
...

Result:

search result

Selection_20140415_11:28:28_001

Profile

Selection_20140415_11:37:41_001

IBM Connect 2014

IBM Connect 2014 is here. I enjoyed the last days very much! Meeting great old and new friends, community members and the IBM Champions family.

I’m very impressed of the news IBM provides us. New IBM Mail and Connections Mail, Connections next and the integration of lots of software within IBM Connections.

Today i will make my session “BP 307 – Practical Solutions for Connections Administrators – Tips and Scripts for Your Daily Business” with the incredible Sharon Belamy. When you’re here in Orlando, we would be happy to see you there:

Find some videos of our demos here: https://www.dropbox.com/sh/2lio4h18rp0r88a/N-Bz9FHXmn