Speaking at Connect 2014 what an honor

It is an honor and a privilege to have been chosen with my friend and community peer Christoph Stoettner to speak at this years Connect / Lotusphere conference.

This will be the 4th Connect / Lotusphere I have attended but the first I have spoken a full session at – in previous years I have helped run a BOF and have spoken at speedgeeking.

We will be speaking in the Best Practices track, sharing our admin and scripting tips and tricks to help make a Connections Admin’s day a little easier 🙂

Screen Shot 2013-11-26 at 12.58.57The full article can be found here on the IBM social insights blog

See you in Orlando 🙂

ConnCtrl bash script for IBM Connections

I have also blogged this over on the Cube Soft company blog – with my good friend <a href=”http://twitter.com/TimsterC” title=”TimsterC” target=”_blank”>Mr Tim Clark</a> we have created a script for starting and stopping IBM Connections on Red Hat (RHEL)

 

The script has a bunch of variables to allow you to input the path to the WebSphere deployment manager and nodes, and a place to enter the names of your Connections servers.

Please visit Tim’s blog for all the information and to download the script.

Connections 4.0 cr issues when you have a shared data folder not on the WAS server

We have spotted a lovely issue with patching Connections 4 to CR2 and above when using a < connections path > /data/shared folder on anything other than a single WAS node.

For example in a standard one node connections install the < connections path > /data/shared folder is on the same machine as the connections instance .. in a multi-node instance the shared data folder is normally on a san / network share.

In my instance the shared data was on a RHEL nfs share that was mapped to the node machines as a filesystem, we had seen no issue with this at all, until we attempted to update the Connections version 4.0 instance to CR4 – the CR4 updates installed correctly but on starting the connections servers up, the news feed and a lot of the widget data was not displaying correctly – throwing a javascript error!! I was stumped, I had seen this before, this particular instance is owned and run by a non root user, when the instances are started as root the permissions are not set correctly and it throws an error.

This was not the case here. The non root user owned all the files and had started the Connections servers, so it should work. There appeared to be no obvious errors in the SystemOut logs for the servers.

Flummoxed by this – I rolled the patches off, at Connections 4.0 again restarted the servers and it worked correctly.

Convinced there may be an issue in CR4 I decided to attempt CR2, so later on in the week had another attempt at patching. Stuart was also doing some maintenance on another customer machine at the same time so we worked through it together. Once the CR2 patches were installed correctly we saw the same issue. So with Stuart checking the errors thrown and I checking the logs and a fiddler trace we managed to deduce that when the fix packs were applying , the wrong webresources directory was being updated.

Under < connections path > /data/shared/provision/webresources on the local machine – all the files had been updated with the new fix pack files NOT the actual shared data folder on the network share. The WebSphere variable for the instance has the correct folder mapped and all the other files from the /data/shared folder are being served correctly.

The quick resolution to this was to delete all the files under the networked share folder /provision/webresources and copy the files from the local machine /data/shared/provision/webresources – restart the servers and as if by magic it works.

IBM have acknowledged that this is an issue and hopefully we wont see this issue again .. but IF you see something similar and you have a shared folder that is not on your connections machine – check to ensure the correct set of files has been updated.

Yet another one of those *fun* fixes – hope it helps someone else save some pain

Connections 4.x search – well that was a weird problem

If you have migrated or moved an IBM Connections instance from 3.0.1 > 4.x (either 4.0 or 4.5) or moved data between 4.x servers you may have noticed a weird issue with searching, especially around communities.

The reason I have been a bit quiet on the blog of late is because I am working on a few Connections projects many of which have involved migrating data between test and live servers or replicating data between servers. I have come across a few issues relating to search so I thought I would share them to save you guys the pain.

Everyone knows when you migrate or move data between servers you should clear the scheduled tasks and rebuild the search indexes – but in V4.x a new set of search data came in for Community searching – the catalog.

When the search task runs is collects a bunch of information about communities for the lists you see under the my communities tab and public communities – it collects this in the catalog.

The issues I was seeing was that all historical data regarding Community membership and Public communities was not being shown and that is because of the catalog.

There are a couple of places that catalog data is stored and you can check this by looking up the WebSphere variables :

CATALOG_INDEX_DIR
CATALOG_REPLICATION_DIR

Typically CATALOG_INDEX_DIR is stored in < Connections install > /data/local/catalog/index

and CATALOG_REPLICATION_DIR is stored in < Connections install > /data/shared/catalog/indexReplication

there is also a temporary folder in your os tmp directory called indexCreationDir in the case of most linux systems it is /tmp/indexCreationDir

When you run your data migration and delete the search index under < Connections install > data/local/search ( I normally rename the index folder to #index)

also rename or remove the Places folder under < Connections install >/data/local/catalog/index/ and < Connections install > /data/shared/catalog/indexReplication and remove or rename the /tmp/indexCreationDir

once you restart Connections run an index now to rebuild the indexes, seedlist and the catalog data and your search will function as expected.

for example:

execfile(“searchAdmin.py”)

SearchService.indexNow(“activities, blogs, calendar, communities, dogear, files, forums, profiles, status_updates, wikis”)

 

I am sure that our resident Community script guru (Mr Christoph Stoettner) could script clearing these but for now its a manual process – hope this will save you some head aches on upgrades and migrations 🙂

 

 

 

 

 

Sorry for the radio silence ….

I want to apologise for my lack of blogging and tweeting – there has been a lot of ups and downs in my personal life over the last 10 months, serious injury which is still not totally resolved and a bunch of other things that have contributed to not only my lack of blogging – but has stopped me attending and speaking at LUGs.

I would like to think that I may be over the worst of it – I had a fantastic holiday with my daughter Emily in Feb 2013 to Disney World, I am working with some great people (thank you Stuart, Warren and especially Tim who has been awesome), so I now need to give myself a kick up the arse to get back into the swing of things.

I was due to present at BLUG on administering Connections and its associated software – I will get that presentation finished and posted at some point.

I have thrown myself into work and am working on a project that involves my favourite thing – INTEGRATING – Connections, Sametime, Notes and Domino and all the ICS stack pretty much – so that is keeping me busy and I am learning new things all the time.

So .. you should be seeing more of me again dear reader – I am back .. not with a bang, but a little fizz – we’ll work on the bang 🙂

Social Connections V – coming soon

The international and independent IBM Connections user group will be visiting beautiful Zurich, Switzerland on June 28th 2013!

IBM Switzerland has graciously offered us the use of their IBM Client Center and it already promises to be a busy day

To register for this event please visit our registration page here, or use the button below:

Social Connections IV fun in Amsterdam

After months of planning, much panicking by certain members of the SOCCNX team and a small amount of winging it – the 4th Social Connections User Group for IBM Connections Users hit Amsterdam on the 30th of November 2012.

Considering this user group was an idea that Stuart and I had over a coffee in the Uni cafe a couple of years ago, we have gone from 60 attendees at Social Connections I to a massive 203 attendees from 16 countries representing 99 unique organisations at Social Connections IV.

A big thank you to all of our speakers and sponsors we couldn’t hold these events without you. We have had a huge amount of support and encouragement from the Community and the day was amazing. IBM Benelux were fantastic hosts and helped the team out no end.

I am proud to be a member of the organising committee of the only IBM Connections User group.

Our next event will hopefully be in June 2013 in the USA, we are already in the deep planning stage now. We are actively looking for sponsors and as soon as we have confirmed a date and location we will be opening up registration and abstract submission. For more information please check out

Thanks again to everyone who made it such a great day 🙂

Social Connections III – 3 weeks to go

Only a few weeks until the 3rd Social Connections user group, held in the IBM Labs Dublin.

We have a few places left if you are interested in attending this unique user group. We have some fantastic sessions such as:

and many more … the full agenda can be found on the Social Connecitons site here

 

As well as a full agenda planned for the day with two tracks – one for business and one for technical and admin – we have some other plans for the day in store.

If you can join us after the event we have an evening dinner and reception planned for at the Guinness Store House

There will be a tour of the storehouse, information on the history of Guinness and the chance to pull your own pint – followed by dinner and drinks in the fantastic surroundings of Arthur’s Bar.

Arthur's Bar 1 Arthur's Bar 2

Arthur’s Bar: A new edition to GUINNESS STOREHOUSE but as old as Ireland itself. It’s a traditional Irish pub, a place of hospitality. This communal gathering space is somewhere to relax and experience the heart of the Irish community whilst enjoying the breathtaking views of St. James’s Gate Brewery and Dublin city

 

The spaces for this event are limited and will be on a first come first served basis. Please sign up and let us know as soon as you can if you would like to attend.

Looking forward to seeing you on the 22nd of June in Dublin.

Returning user login issues – fun with the connections databases

I recently had an issue with a user having issues logging in to certain applications.

The user could log in to some apps but recieved an error on others – for instance profiles, activities, communities and forums the user was fine.

Each applications database holds information regarding the user login and their external / directory / guid id – this guid is unique to the user – I found after extensive investigation that this user had orphaned entries in the other application DB tables.

The SQL queries and statements used to resolve this were *fun* to work out and they may be slightly different for each user that has this issue, but it should be fairly straight forward to work out once you know what the issue is.

*NOTE* below is the solution that I used to resolve the issue – it will be / may be different for each user with a similar problem. It is advised where possible to test this on a back up of the DB to ensure it resolves the issue. Always back the databases up before making any change.

Firstly look up the user in the profiles database and gather thier login id (prof_uid) and external directory id (prof_guid)

Once you have these you are ready to start the investigation.

In the case of this user the SQL was as follows :

CORRECT GUID / EXT / DIRECTORY ID = C7B75D042B4C7C7B8025791100311ADA

== BLOGS ==

select * from blogs.rolleruser where username =’jsmith’;
select * from blogs.rollerloginname where username like ‘jsmit%’;
get the user id = 62537efa-3959-42a4-84f3-5e1fdc8cfac0
select * from blogs.rollerloginname where userid = ‘62537efa-3959-42a4-84f3-5e1fdc8cfac0’;
delete from blogs.rollerloginname where userid = ‘62537efa-3959-42a4-84f3-5e1fdc8cfac0′;
delete from blogs.rolleruser where username =’jsmith’;

== DOGEAR ==

select * from dogear.personlogin where loginname like ‘jsmit%’;
get the person_id = 436b98eb-59a9-420f-90d6-22b7a4926e00
select * from dogear.personlogin where person_id = ‘436b98eb-59a9-420f-90d6-22b7a4926e00’;
delete from dogear.personlogin where person_id = ‘436b98eb-59a9-420f-90d6-22b7a4926e00′;
select * from dogear.person where person_id=’436b98eb-59a9-420f-90d6-22b7a4926e00′;
delete from dogear.person where person_id=’436b98eb-59a9-420f-90d6-22b7a4926e00’;

== FILES ==

SELECT * FROM FILES.USER_TO_LOGIN where login_id = ‘jsmith’;
delete FROM FILES.USER_TO_LOGIN where login_id = ‘jsmith’;
select * from FILES.LIBRARY where title like ‘John Smit%’;
get label – C53524EEDB0F84E8802578C5002676AD
delete from FILES.LIBRARY where label =’C53524EEDB0F84E8802578C5002676AD’;
SELECT * FROM FILES.”USER” where name = ‘John Smith’;
delete FROM FILES.”USER” where name = ‘John Smith’;

== forums not an issue – has the correct GUID ==

select * from forum.df_memberlogin where loginname like ‘jsmit%’;
get memberid = d1140454-09ac-4484-a50e-ce914e573e7d

== HOMEPAGE ==

select * from homepage.loginname where loginname like ‘jsmit%’;
get person_id = cf48e29d-7d89-4f8a-acf0-47b9a8bcb98a

select * from homepage.loginname where person_id = ‘cf48e29d-7d89-4f8a-acf0-47b9a8bcb98a’;
delete from homepage.loginname where person_id = ‘cf48e29d-7d89-4f8a-acf0-47b9a8bcb98a’;

select * from homepage.person where displayname = ‘John Smith’;
get person_id of the incorrect GUID – db306bce-40cc-413a-b93c-1ad61a24cdae

select * from homepage.hp_ui where person_id in (‘cf48e29d-7d89-4f8a-acf0-47b9a8bcb98a’,’db306bce-40cc-413a-b93c-1ad61a24cdae’);
make note of any person IDs that bring back any entries – cf48e29d-7d89-4f8a-acf0-47b9a8bcb98a
and ui_ids – 45cbd2dc-aefa-46f4-9607-654ddab953d8

select * from homepage.hp_tab_inst where ui_id like ‘%45cbd2dc-aefa-46f4-9607-654ddab953d8’;
make note of full ui_id – 45cbd2dc-aefa-46f4-9607-654ddab953d8
make a note of tab_inst_id b1072db9-c553-4a04-8366-e7d26a415edb b9114d19-4d97-42b0-8760-580cc956abe8

select * from HOMEPAGE.HP_WIDGET_INST where tab_inst_id in (‘b1072db9-c553-4a04-8366-e7d26a415edb’,’b9114d19-4d97-42b0-8760-50cc956abe8′);
delete from HOMEPAGE.HP_WIDGET_INST where tab_inst_id in (‘b1072db9-c553-4a04-8366-e7d26a415edb’,’b9114d19-4d97-42b0-8760-580cc956abe8′);

delete from homepage.hp_tab_inst where ui_id = ’45cbd2dc-aefa-46f4-9607-654ddab953d8′;

delete from homepage.hp_ui where person_id in (‘cf48e29d-7d89-4f8a-acf0-47b9a8bcb98a’);

delete from homepage.person where person_id in (‘db306bce-40cc-413a-b93c-1ad61a24cdae’);

correct person id = e8238bbd-255f-4609-8a54-e28128f3e66b

== Activities is ok – is the correct GUID==

select * from activities.oa_memberlogin where loginname like ‘jsmit%’;
get memberid – CACG7F00000152B3E7EBA823194CED0000C6

SELECT * FROM ACTIVITIES.OA_MEMBERPROFILE where memberid=’CACG7F00000152B3E7EBA823194CED0000C6′;

== Communities is ok has the correct GUID ==

select * from sncomm.memberlogin where loginname like ‘jsmit%’;
get member_uuid – 0e56702f-9f37-4f2c-b295-2dd3250da726

select * from sncomm.memberprofile where display = ‘John Smith’;

== Wikis ==
SELECT * FROM WIKIS.”USER” where name like ‘John%’;
select * from wikis.user_to_login where login_id like ‘jsmit%’;
delete from wikis.user_to_login where login_id = ‘jsmith’;
delete from wikis.user_to_login where login_id = ‘jsmith@org.com’;

==

When these statements had been run the user can log in correctly as the additional orphaned entries have been removed.

Please note that due to the data and the contstraints on the database that there may be additional statements required – the SQL above is a guide on how I resolved the issue.

It was a FUN FUN FUN one to sort out .. I do love a good problem:)