Wednesday, April 4, 2018

IBM Docs 2.0 CR3 iFix 002 is out and about! It fixes the .dotx issue.

After a lenghtly PMR with IBM regarding the fact that .dotx Word template files uploaded into Connections Files does not work when creating documents based on them in IBM Docs 2.0 CRx. (haven´t tested all the CR versions on this. I noticed the error in CR3 iFix001 first)

The error message you get when trying to create a document based on a .dotx template is this:


The workaround when you saw this error message, was to press RELOAD in the browser, and then the IBM Docs Editor appeared (as it should have done the first time instead of giving you that error message)

IBM found the bug and fixed it in the 2.0 CR3 iFix 002 package.

Release Notes:
http://www-01.ibm.com/support/docview.wss?uid=swg22014685

Fix Central link:
http://www.ibm.com/support/fixcentral/swg/quickorder?parent=Collaboration%20Solutions&product=ibm/Lotus/IBM+Docs&release=2.0.0&platform=Windows&function=fixId&fixids=IBMConnectionsDocs_CR3_iFix002&includeSupersedes=0&source=fc

Thursday, March 8, 2018

iOS 11 introduced ".HEIC" image format which you might have problems viewing. Here´s an IBM Connections iOS app workaround.

When iOS11 was introduced, Apple started using the .heic image format. (High Efficiency Image File Format)
When you share a photo from your iOS device into the IBM Connections app, it will upload as a .heic picture.

What other users then can´t do, is actually see this picture. Downloading it to a Mac is OK, but Windows does not support it, and watching .heic in a browser is also not working.

So, while we wait for IBM to fix a .heic ==> .jpg conversion for the IBM Connections app, here´s what you can do:



On your iOS device, navigate to Settings > Camera > Formats
   If “Most Compatible” is not checked, select i.
This will turn your iOS device into a jpg picture taking machine again.

If you also use BOX, then this is the way to go for the BOX app as well.

If you do need to watch a photo in .heic format, there are some converters out there.
Third party HEIC to JPG converter tool, like Joyoshare free HEIC converter, imazing HEIC converter, iMyfone and so on.
After saved as JPG format, you can view your photos from iOS 11 to any other devices easily.



Friday, March 2, 2018

Javascript Customization in IBM Connections to automatically tick off the checkbox "Files can be shared with people external to my organization".

I finally figured it out!!!! OMG, so very happy.

My customers will be happy as well, and that´s the whole point of doing this, right?

Well, previously I have posted a blog entry about the fact that when uploading files into IBM Connections, the users has to manually tick off the checkbox "Files can be shared with people external to my organization". In that previous blog post, I presented a solution where you had to run a change in the Files SQL database.

I also created a PMR on this where the response was that, yes, this is automatically ticked off in the IBM Connections Cloud, but not on on-prem installations. And there was no way of changing this....  IBM Support then said that doing the SQL change is an ok way of doing it, on my own risk....

If the users forget to tick that checkbox when uploading files, there is no way of changing this after the file has been uploaded! And that´s where the real problem lies. Why can´t IBM provide an option to do this after the file has been uploaded? Come on! :-)

Anyway, I did some real debugging using Firefox debugger and the Chrome development tool to figure this one out. I looked at every javascript in the IBM Connections solution, I´ve searched through .jar files and looked at every possible configuration option. And finally, I found the code which ticks off that darn checkbox. This system is Connections 5.5 CR3 with Docs 2.0 CR 3, btw.

Linux is so much easier when it comes to searching through file content, so I went over to a Linux installation and performed the searches there (even though my test server where I can do the changes is on Windows).

So, I found that the checkbox is called "_setExt". In the html source, it looks like this:
<input id="lconn_files_widget_UploadFile_1_setExt" class="lotusCheckbox IECheckbox" name="_setExt" value="true" checked="" type="checkbox">
So, in Linux, I searched every file possible for this, by running the command in the "AppSrv01\InstalledApps\cellname\Files.ear" folder.
grep -Hrn '_setExt'
This produced no result.

I then went into the Common.ear folder, and search through every .jar file.
find . -name "*.jar" -exec zipgrep "_setExt" '{}' \;
 This also produced no result....

I then went into the data/shared/provision/webresources folder and search through every .jar file.
find . -name "*.jar" -exec zipgrep "_setExt" '{}' \;
And there we go! I found a couple of .jar files where the string "_setExt" was found.
I then opened up the jar file "com.ibm.lconn.files.web.resources_3.0.0.20170412-2240.jar" in Winrar, and looked at the javascripts which were relevant, and one particular .js file stood out:


Inside the jar file, it´s under the folders "resources\action" and it´s name is "AbstractShareFile.js".

So, after taking a backup of the "com.ibm.lconn.files.web.resources_3.0.0.20170412-2240.jar" I tested by unzipping the jar file, changed the file "AbstractShareFile.js", and zipped it down again. A restart of the Connections servers was needed, and afterwards, I could actually see that my beautiful checkbox actually was ticked off!!

Here´s the changes I did:


So, I commented out line number 253 and then wrote a new line on line 254 which says:
input.checked = input.defaultChecked = true;
Which gave me the result in the File-upload dialogue box:


 Great!!!!
But, as we all know, if we later on apply a fixpack to our Connections servers, the .jar files might be overwritten. So I figured out how to use the Customization Directory in order to override this javascript file which is inside the .jar file.
First of all, I put the original file "com.ibm.lconn.files.web.resources_3.0.0.20170412-2240.jar" back.


I then reached out to the experts in the IBM Connectuons Skype community, and my fellow IBM Champion Michele Buccarello gave me this link:
https://www.ibm.com/support/knowledgecenter/en/SSYGQH_5.0.0/admin/customize/t_customize_override_js.html


So, in order for me to extract the javascript file from the .jar file, and put it into the correct folder in the Customization directory, I had to look at the top of the file:
dojo.provide("lconn.files.action.AbstractShareFile");
Which meant that under the "data\shared\customization\javascript" directory, I had to create a subfolder structure like this:
"lconn\files\action" and I had to save my modified "AbstractShareFile.js" file there.

I also added at the top of the scriot an alert, which showed me a message box every time the javascript is loaded for the first time:
I then restarted the Common Application in the Websphere Console, and also deleted my browser cache and tried a new file upload.

And this was the response, which shows me that my modified javascript actually gets loaded:



Pressing "OK" gave me the normal file-upload dialogue box, with the checkbox in question actually ticked off!!

And then I naturally removed that alert from the top of the javascript file :-)

I tested doing a file upload by dragging and dropping a file into the browser. This worked fine as well. And also, using the big blue "Share" button in the header also worked.



But hey, hang on. What about when you create documents directly in Connections using the IBM Docs feature? This shows a different dialogue box than the normal "File Upload" one.

Oh, I managed to figure this one out as well!!

The javascript you want is in the "provision\webresources" directory, and is in the "com.ibm.concord.lcfiles.extension.provision_2.0.0.20171030-1520.jar" file.
See under the folder "resources" in the jar file and copy out "global.js"



Save this file into the "data\shared\customization\javascript\concord" folder.
The "concord" folder probably has to be created by you.

Open up global.js and go to line 250 and comment that one out.
Then, on line 251, you can insert this:
inputExt.checked = inputExt.defaultChecked = true;

Save and restart the Common application, and then empty your browsers cache and test it by doing a Document creation by selectin "New" and then select "Document", "Spreadsheet" or "Presentation":
 
What you then see, is that the box "Files can be shared with people external to your organization" is ticked off for you!

The downside now is that you have to copy the global.js out from the correct jar file every time the IBM Docs gets updated with a new CR fix pack.
And the same goes for the "AbstracShareFile.js" when you do a CR update of IBM Connections.

But using the customization\javascript way is easier maintaining than having to replace a javascript file inside of a .jar file every time you do a CR update, right?

Remember, this is for Connections 5.5 CR3 with Docs 2.0 CR 3.
I have not tested this on Connections 6 yet. The line numbers I refeer to might be different for other versions than the system I did this on if you are on other versions of Connections and Docs.

I will post a blog entry when I try this out on Connections 6.x as well.

Tuesday, January 23, 2018

IBM Connections Database performance tuning - Windows scripts

Mostly as a reminder to myself, here´s how I do weekly performance tuning on the Connections databases.

I prefeer working with Linux servers when it comes to IBM Connections and DB2. But customers also use Microsoft Windows. So here´s a Windows DB2 tuning guide for you :-)
Doing the Database Maintenance and performance tuning for the Connections databases on Linux, I usually follow Nico Meisenzahls procedure, which work great on Linux!

But when it comes to DB2 running on Windows servers, the scripts are a bit different when it comes to looping through the databases.

The Wizard contains almost all the scripts you need. The only thing that is missing, is for the IBM Docs, Concord, database.
And, as Nico suggests, the best result from running runstats and reorg is to first run runstats, then reorg and then runstats again. This script takes that under consideration.

The Connections databases are looped through in 2 different manners. First, the database scripts for Activities, Blogs, Communities, Dogear, Dorum, Mobil and Profiles are looped through.
For those databases, the Wizard has 2 sql scripts for, the "runstats.sql" and the "reorg.sql".

But for the remaining databases, PushNotification, Files, Homepage, Metrics and Wikis, the script names are "updatestats.sql" and "reorg.sql". Pluss, the Communities Database has a Calendar, which has its own runstats and reorg files.
This is why the code show 3 different loops, so that the correct scripts for the spesific databases are run.

So, here´s what I use for the Connections databases on Windows:

Notice at the end of the script that I run a DB2 command which calls a  "concord_stats_reorg.txt" file as input. This is the updatestats and reorg script for the IBM Docs database, which is not included in the Wizard db scripts.
At the bottom of this blog entry, you can see the content of this file as well.
(This input file was given to me from my man Nico).

First, I create a script called "databaseMaintenance.bat" and insert the following:


@echo off REM databaseMaintenance.bat REM Needed for variable expansion SETLOCAL ENABLEDELAYEDEXPANSION REM Set Connections Wizard Path, change this to match your environment: set WIZARDPATH=D:\IBM\Wizards REM get certain databases of db2 instance and loop through the list: FOR %%a IN (ACTIVITIES BLOGS DOGEAR FORUM MOBILE PROFILES) DO ( set DATABASES=%%a,!DATABASES! title Starting database %%a RUNSTATS on %date% at %time%... @ECHO Running RUNSTATS on Database %%a DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\runstats.sql title Starting database %%a REORG on %date% at %time%... @ECHO Running REORG on Database %%a DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\reorg.sql title Starting database %%a RUNSTATS on %date% at %time%... @ECHO Running RUNSTATS on Database %%a DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\runstats.sql ) @ECHO Successfully ran maintenance for %DATABASES% REM get certain databases of db2 instance and loop through the list: FOR %%a IN (PUSHNOTIFICATION FILES HOMEPAGE METRICS WIKIS) DO ( set DATABASES=%%a,!DATABASES! title Starting database %%a RUNSTATS on %date% at %time%... @ECHO Running RUNSTATS on Database %%a DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\updatestats.sql title Starting database %%a REORG on %date% at %time%... @ECHO Running REORG on Database %%a DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\reorg.sql title Starting database %%a RUNSTATS on %date% at %time%... @ECHO Running RUNSTATS on Database %%a DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\updatestats.sql ) @ECHO Successfully ran maintenance for %DATABASES% REM get Communities database of db2 instance: FOR %%a IN (COMMUNITIES) DO ( set DATABASES=%%a,!DATABASES! title Starting database %%a RUNSTATS on %date% at %time%... @ECHO Running RUNSTATS on Database %%a DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\calendar-runstats.sql DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\runstats.sql title Starting database %%a REORG on %date% at %time%... @ECHO Running REORG on Database %%a DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\calendar-reorg.sql DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\reorg.sql title Starting database %%a RUNSTATS on %date% at %time%... @ECHO Running RUNSTATS on Database %%a DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\calendar-runstats.sql DB2CMD.EXE -c -w -i DB2 -td@ -vf %WIZARDPATH%\connections.sql\%%a\db2\runstats.sql ) @ECHO Successfully ran maintenance for %DATABASES% REM Running Runstats, Reorg and Runstats on Concord database: title Starting database CONCORD REORG on %date% at %time%... @ECHO Running RUNSTATS on Database CONCORD db2 -tvf D:\scripts\concord_stats_reorg.txt @ECHO Successfully ran maintenance for CONCORD



Remember to change the WIZARDPATH variable to match your location of the Wizard directory.

And here´s the content of the "concord_stats_reorg.txt" input file:


CONNECT TO CONCORD;
RUNSTATS ON TABLE CONCORDDB.ASSOCIATEDWITH WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.CLIPBOARD WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.CUSTOMER_CREDENTIAL WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOCEDITORS WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOCUMENTSESSION WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_ACTIVITY WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_ENTITLEMENT WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_HISTORY WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_RECENTS WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_REFERENCE WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_REVISION WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.HKLMGR WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.HKLMPR WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.HKTASK WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.HKTREG WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.MESSAGE WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.ORG_ENTITLEMENT WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.PRODUCT WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.SUBSCRIBER WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.TASK WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.TASKHISTORY WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.USERPREFERENCE WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.USER_DOC_CACHE WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.USER_ENTITLEMENT WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
FLUSH PACKAGE CACHE DYNAMIC;
COMMIT;
REORG TABLE CONCORDDB.ASSOCIATEDWITH;
REORG TABLE CONCORDDB.CLIPBOARD;
REORG TABLE CONCORDDB.CUSTOMER_CREDENTIAL;
REORG TABLE CONCORDDB.DOCEDITORS;
REORG TABLE CONCORDDB.DOCUMENTSESSION;
REORG TABLE CONCORDDB.DOC_ACTIVITY;
REORG TABLE CONCORDDB.DOC_ENTITLEMENT;
REORG TABLE CONCORDDB.DOC_HISTORY;
REORG TABLE CONCORDDB.DOC_RECENTS;
REORG TABLE CONCORDDB.DOC_REFERENCE;
REORG TABLE CONCORDDB.DOC_REVISION;
REORG TABLE CONCORDDB.HKLMGR;
REORG TABLE CONCORDDB.HKLMPR;
REORG TABLE CONCORDDB.HKTASK;
REORG TABLE CONCORDDB.HKTREG;
REORG TABLE CONCORDDB.MESSAGE;
REORG TABLE CONCORDDB.ORG_ENTITLEMENT;
REORG TABLE CONCORDDB.PRODUCT;
REORG TABLE CONCORDDB.SUBSCRIBER;
REORG TABLE CONCORDDB.TASK;
REORG TABLE CONCORDDB.TASKHISTORY;
REORG TABLE CONCORDDB.USERPREFERENCE;
REORG TABLE CONCORDDB.USER_DOC_CACHE;
REORG TABLE CONCORDDB.USER_ENTITLEMENT;
COMMIT;
REORG INDEXES ALL FOR TABLE CONCORDDB.ASSOCIATEDWITH;
REORG INDEXES ALL FOR TABLE CONCORDDB.CLIPBOARD;
REORG INDEXES ALL FOR TABLE CONCORDDB.CUSTOMER_CREDENTIAL;
REORG INDEXES ALL FOR TABLE CONCORDDB.DOCEDITORS;
REORG INDEXES ALL FOR TABLE CONCORDDB.DOCUMENTSESSION;
REORG INDEXES ALL FOR TABLE CONCORDDB.DOC_ACTIVITY;
REORG INDEXES ALL FOR TABLE CONCORDDB.DOC_ENTITLEMENT;
REORG INDEXES ALL FOR TABLE CONCORDDB.DOC_HISTORY;
REORG INDEXES ALL FOR TABLE CONCORDDB.DOC_RECENTS;
REORG INDEXES ALL FOR TABLE CONCORDDB.DOC_REFERENCE;
REORG INDEXES ALL FOR TABLE CONCORDDB.DOC_REVISION;
REORG INDEXES ALL FOR TABLE CONCORDDB.HKLMGR;
REORG INDEXES ALL FOR TABLE CONCORDDB.HKLMPR;
REORG INDEXES ALL FOR TABLE CONCORDDB.HKTASK;
REORG INDEXES ALL FOR TABLE CONCORDDB.HKTREG;
REORG INDEXES ALL FOR TABLE CONCORDDB.MESSAGE;
REORG INDEXES ALL FOR TABLE CONCORDDB.ORG_ENTITLEMENT;
REORG INDEXES ALL FOR TABLE CONCORDDB.PRODUCT;
REORG INDEXES ALL FOR TABLE CONCORDDB.SUBSCRIBER;
REORG INDEXES ALL FOR TABLE CONCORDDB.TASK;
REORG INDEXES ALL FOR TABLE CONCORDDB.TASKHISTORY;
REORG INDEXES ALL FOR TABLE CONCORDDB.USERPREFERENCE;
REORG INDEXES ALL FOR TABLE CONCORDDB.USER_DOC_CACHE;
REORG INDEXES ALL FOR TABLE CONCORDDB.USER_ENTITLEMENT;
COMMIT;
RUNSTATS ON TABLE CONCORDDB.ASSOCIATEDWITH WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.CLIPBOARD WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.CUSTOMER_CREDENTIAL WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOCEDITORS WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOCUMENTSESSION WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_ACTIVITY WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_ENTITLEMENT WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_HISTORY WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_RECENTS WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_REFERENCE WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.DOC_REVISION WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.HKLMGR WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.HKLMPR WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.HKTASK WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.HKTREG WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.MESSAGE WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.ORG_ENTITLEMENT WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.PRODUCT WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.SUBSCRIBER WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.TASK WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.TASKHISTORY WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.USERPREFERENCE WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.USER_DOC_CACHE WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
RUNSTATS ON TABLE CONCORDDB.USER_ENTITLEMENT WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW WRITE ACCESS;
FLUSH PACKAGE CACHE DYNAMIC;
COMMIT;
CONNECT RESET;


And now, it´s just a matter of creating a Windows Scheduled task to launch this script on a weekly basis. Run this task as the "db2admin" user.

And thanks to my buddy Nico!

Friday, January 12, 2018

I´m selected as an ICS IBM Champion for 2018.

I received some VERY GOOD NEWS in my inbox just now.

Congratulations, you're an IBM Champion!Hello, and welcome! After reviewing and evaluating your contributions to the IBM technology community over the past 12 months, IBM is happy to announce that you have been selected as an IBM Champion for 2018.
I am both humbled and honored. 

First of all, I want to thank all of you who nominated me to become an IBM Champion for 2018!! It´s so nice to be appreciated for my contributions in the ICS Community, and this is a huge feather in my cap and that my contributions and knowledge ain´t all that bad :-D


This year it actually happened, I´m now in an elite group of other great IBM Champions. 

I hope I can live up to my "peers". I´m not sure I can call them my peers yet, but I will try my very best to live up to the same standards as you guys, so that I can in fact call you my peers!

2018 is shaping up to be a great year!