Monday, December 19, 2016

IBM Connections - Force setting the "share with external" option on files.

Open for debate, please comment if you have any insight in why this might not be a good thing to do.


When you upload a file in IBM Connections Cloud, the option "Files can be shared with people external to my organization" is automatically set for you:

Which is a good thing.

In On-Prem versions of IBM Connections (I tested this in Connections 5.5 CR2.), this option is left unchecked, so in order for you to be able to share this file with external users, you have to remember to set this EVERY TIME you upload a file.
Because, if you forget to set it, there is no way of setting this after the file has been uploaded.

Which is a bad thing.

And the only place this option exists, is when you use IBM Connections in a Browser!!
If you upload files in the Windows Desktop Plugin, using the Windows Explorer addition, this option does not even exist!!
See for yourself:

I think the whole "share with external users" is poorly made in IBM Connections. This could have been programmed a whole lot better.

Just the fact that if you forget to select the "Files can be shared with people external to my organization" option, you are not able to set it afterwards, is just incredible....

But, opinions aside, I started looking at possibilities to set this "share with external" option automatically, and so far, this is what I came up with:

First and foremost, you have to set your user, and the other users who should be able to share with external users, to actually be able to do just that. (This is for On-Prem only, of course)

This includes the running profilesAdmin.py wsadmin command
ProfilesService.setRole("ajones277@example.com", EMPLOYEE_EXTENDED)

(See more here: http://www.ibm.com/support/knowledgecenter/SSYGQH_5.5.0/admin/admin/t_admin_profiles_set_roles.html)


So, as we all know, there is a FILES database.
In this database, there is a table called "MEDIA".
This table has a list of all the files that´s been uploaded into IBM Connections.

So I did a test: I uploaded a file, leaving the "Files can be shared with people external to my organization" unchecked.
And then I uploaded the same file with a new name, where I checked the "Files can be shared with people external to my organization" option.

The only difference the 2 files had in the FILES.MEDIA table was this:



So, the column "SHARING_INTENT" is 0 on the file which I did not check the checkbox on, and it´s set to "1" on the file which I selected to share externally.

I then did a test in the Connections gui, where I tried sharing the "unshared" file with an external user. Result was that the external user did not show up in the gui.
I then performed the following SQL query to update the record, setting the "SHARING_INTENT" to the value 1:
update "FILES"."MEDIA" set SHARING_INTENT=1 where LABEL = 'kasper.docx';
And then I tried the same manoeuvre; tried to share the file with an external user, and this time, the external user came up in the type-ahead share box.

Is this enough? Are there other tables that also need to be updated?

I´m not sure, but I will test this on a customer who has been asking for this feature for a long time now.

So, what I´m thinking of doing now, is either running this SQL query as a scheduled script:
Where I always set every file to have the "SHARING_INTENT=1" where the query is:
update "FILES"."MEDIA" set SHARING_INTENT = 1;
commit; 
or, create a TDI job that does this for me.
In TDI I can run the job on all the files that has been uploaded today, for instance, so that not all files are edited every time.
Or, perhaps do a Date-check in SQL:
update "FILES"."MEDIA" set SHARING_INTENT = 1 where CREATE_DATE > (current date); 
commit;

And also, I have created a PMR to ask for this feature. I asked IBM why the Cloud version has this option set automatically, and not the on-prem version. And I also asked about the fact that the Desktop Plugin don´t have this option at all.
I´m eager to learn why.


UPDATE:
IBM Champion, Sharon Bellamy James, reminded me on Skype just now, that if users upload a file into a Community which is set to be shared externally, then this is not an issue. The files then gets automatically ticked with the "shared to eternal users" checkmark.
The issue is where you upload files directly into you own personal "FILES" and then share it to an external user or an "external community".