Alfresco discussion and collaboration. Stick around a few hours after asking a question.
Official support for Enterprise subscribers: support.alfresco.com.
Join in the conversation by getting an IRC client and connecting to #alfresco at Freenode. Our you can use the IRC web chat.
More information about the channel is in the wiki.
More help is available in this list of resources.
2017-10-16 06:58:38 GMT <yreg> Morning everyone !
2017-10-16 07:00:33 GMT <twen> hi yreg
2017-10-16 07:02:32 GMT <yreg> Holà twen
2017-10-16 07:02:37 GMT <yreg> how it goes ?
2017-10-16 07:04:07 GMT <twen> I'm fine thanks :)
2017-10-16 08:05:14 GMT <yreg> fcorti, Morning !
2017-10-16 08:05:29 GMT <yreg> Any idea when tickets will be available ?
2017-10-16 08:05:57 GMT <fcorti> morning yreg
2017-10-16 08:07:54 GMT <fcorti> Kristen is dealing with it and the VAT and probably this week is the right one
2017-10-16 08:08:21 GMT <yreg> Cool
2017-10-16 08:08:30 GMT <fcorti> yep
2017-10-16 08:09:28 GMT <yreg> will there be any other practical informations about logistics ?
2017-10-16 08:11:31 GMT <fcorti> Do you mean hotels?
2017-10-16 08:11:47 GMT <yreg> even though such information is easily available online, having a list of nearby hotels / attractions can be also interesting for people
2017-10-16 08:11:55 GMT <fcorti> yep
2017-10-16 08:12:10 GMT <fcorti> KRisten is defining also the latest details on this
2017-10-16 08:13:06 GMT <yreg> I do not know if We (as OOTB) can suggest/organize after-conf event/trip for socializing while enjoying the city of Lisbon
2017-10-16 08:14:54 GMT <fcorti> good point... there is a party confirmed for day 1.
2017-10-16 08:15:13 GMT <fcorti> Kristen is waiting to check the sponsorship to confirm the welcome party on day 0
2017-10-16 08:15:35 GMT <fcorti> all the rest is not defined yet
2017-10-16 08:18:14 GMT <DarkStar1> Morning good folk. I trust we all had a good weekend.
2017-10-16 08:53:54 GMT <qwebirc51417> hi,
2017-10-16 09:17:18 GMT <shazada> Hi All good morning.
2017-10-16 09:17:44 GMT <shazada> I'm a bit stuck with the Alfresco ownership puzzle.
2017-10-16 09:18:26 GMT <shazada> Previously Alfresco would set the owner in the cm:owner field. Now since 5.x it seems to take the creator instead if the property is empty
2017-10-16 09:19:07 GMT <shazada> So it seams you can't really 'trust' the cm:owner property cause it's not being set anymore.
2017-10-16 09:19:16 GMT <shazada> Anyone have any thoughts about this?
2017-10-16 09:19:19 GMT <yreg> shazada, AFAIK it has been like that since the concept was introduced
2017-10-16 09:19:21 GMT <hi-ko> shazada: this is the default behavior since a long time
2017-10-16 09:19:59 GMT <shazada> I'm pretty sure in 4.2 cm:owner was always set with the user.
2017-10-16 09:20:02 GMT <hi-ko> shazada: it's not what many users expect but default.
2017-10-16 09:20:04 GMT <yreg> If cm:owner is set, that would be the owner of the document, in case that metadata does not exist the system falls back to the creator to determine ownership
2017-10-16 09:20:11 GMT <shazada> And if you removed that property the user couldn't delete the doc anymore
2017-10-16 09:20:33 GMT <yreg> shazada, not aware of that
2017-10-16 09:20:44 GMT <hi-ko> no - you need to set owner to system to remove delete permissions for the creator
2017-10-16 09:20:54 GMT <shazada> Okay thanks. didn't new this wasy by default and not a change since 5.x
2017-10-16 09:20:54 GMT <yreg> usually a set that property to System if I wont to revoke ownership of the document
2017-10-16 09:21:12 GMT <yreg> want**
2017-10-16 09:21:26 GMT <yreg> s/ a / I /
2017-10-16 09:21:46 GMT <shazada> Thanks. oke then will need to rethink my dashlet working
2017-10-16 09:21:52 GMT <hi-ko> s/wrong/correct/ ;-)
2017-10-16 09:21:59 GMT <yreg> what 's wrong with me .. I am making more typos than correct sentences :/
2017-10-16 09:22:05 GMT <shazada> haha
2017-10-16 09:22:49 GMT <hi-ko> where is KI when expected ... ?
2017-10-16 09:23:47 GMT <hi-ko> sorry: KI is german: Artificial Intelligence: A.I.
2017-10-16 09:29:34 GMT <yreg> hi-ko, where do you expect that ?
2017-10-16 09:40:42 GMT <qwebirc51417> Hi, I am upgrading Alfresco 4.2.1 to 5.2.1, we have the code base with SDK 1.1.1, when we upgrade the alfresco version to 5.2.1, do I need to upgrade the sdk to 3.0 ?
2017-10-16 09:43:28 GMT <yreg> qwebirc51417, although your amps might work out of the box with Alfresco 5.2.1, it is better (and safer) to upgrade your project structure and tooling to latest SDK
2017-10-16 09:43:43 GMT <yreg> not sure if that would be SDK 3.1 or 3.0.1
2017-10-16 09:44:47 GMT <yreg> the upgrade should be straight forward and not really time consuming
2017-10-16 09:45:24 GMT <qwebirc51417> so in that case, I have to create the project structure with 3.0 and move the old codes to new structure is it ?
2017-10-16 09:45:36 GMT <hi-ko> btw.: someone may fix the docu bug: https://docs.alfresco.com/community/concepts/alfresco-sdk-compatibility.html is a dead link
2017-10-16 09:45:36 GMT <yreg> you probably can get around it in kickoff testing since day 1
2017-10-16 09:46:52 GMT <qwebirc51417> Thanks, yreg
2017-10-16 09:46:57 GMT <hi-ko> yreg: Artificial Intelligence is expected when the machine should already know what the human beeing means ...
2017-10-16 09:46:58 GMT <yreg> qwebirc51417, I would create a new branch for the new sdk and start moving file to the correct file hierarchy in the new project
2017-10-16 09:47:06 GMT <yreg> that way you keep version history for the code
2017-10-16 09:48:40 GMT <yreg> qwebirc51417, it is also good practice to create two AIO projects, one for share and the other one for repo (and of course strip every one from the un-necessary components)
2017-10-16 09:49:23 GMT <yreg> you can the set the share one not to run its own repo & solr , and the repo one not to run share
2017-10-16 09:50:04 GMT <yreg> you can either provide a maven.tomcat.port property in command line or in the pom for the share AIO project in order to control the share port
2017-10-16 09:50:57 GMT <yreg> note that I am recommending two AIO projects since infortunately you can note integration-test amp/asm outside an AIO project
2017-10-16 09:52:17 GMT <yreg> but you might find other approaches that might sound better/worse depending on your usecase ;-)
2017-10-16 09:53:21 GMT <yreg> hi-ko, hook in Alexa and it will all be sorted out !
2017-10-16 10:33:17 GMT <tushar> hi everyone!
2017-10-16 10:33:44 GMT <tushar> i wanted to ask can alfresco be intigrated with 2 factor authentication
2017-10-16 10:33:47 GMT <tushar> ?
2017-10-16 10:55:53 GMT <bhagyas> tushar: https://addons.alfresco.com/addons/alfresco-2fa-add-two-factor-authentication-your-alfresco
2017-10-16 10:55:55 GMT <alfbot> Title: Alfresco 2FA - Add Two Factor Authentication to your Alfresco | Alfresco Add-ons - Alfresco Customizations (at addons.alfresco.com)
2017-10-16 11:16:24 GMT <douglascrp> good morning
2017-10-16 11:27:06 GMT <shazada> @tushar https://www.contezza.nl/blog/implementing-a-simple-2fa-for-alfresco
2017-10-16 11:27:07 GMT <alfbot> Title: Implementing a simple 2FA for Alfresco - Contezza - Building smart organizations with Alfresco (at www.contezza.nl)
2017-10-16 11:29:50 GMT <tushar> actually i am looking for some help loftux has a paid version and contezza have very little in detail
2017-10-16 11:30:21 GMT <tushar> anyway thanks for your help
2017-10-16 11:30:45 GMT <tushar> but if you'd any any other help than this please share
2017-10-16 12:19:47 GMT <yreg> tushar, it seems that there is an alternative using Yubikeys
2017-10-16 12:19:59 GMT <yreg> https://ecmarchitect.com/archives/2017/09/25/4284 for reference (very last section)
2017-10-16 12:20:00 GMT <alfbot> Title: Secure your Alfresco server | ECM Architect (at ecmarchitect.com)
2017-10-16 12:25:22 GMT <shazada> tushar you'll need to contact us for more info and yes it's a Paid version.
2017-10-16 12:35:07 GMT <tushar> thank you so much yreg i'll try if it runs okay with 5.2 CE
2017-10-16 12:40:45 GMT <yreg> tushar, Yubikeys come with a cost, but at least it is a one time cost for buying the hardware.
2017-10-16 12:41:39 GMT <yreg> (UPDATE: haven't checked if the addon/Yubikeys API was actually free and had no recurring cost)
2017-10-16 12:44:02 GMT <tushar> okay
2017-10-16 13:26:44 GMT <Loftux> Alfresco decision to rename file on new version upload if uploaded file has different name creates a problem with http://dev.alfresco.com/resource/docs/java/org/alfresco/repo/node/NodeServicePolicies.OnCreateChildAssociationPolicy.html#onCreateChildAssociation-org.alfresco.service.cmr.repository.ChildAssociationRef-boolean-(org.alfresco.service.cmr.repository.ChildAssociationRef childAssocRef, boolean isNewNode)
2017-10-16 13:26:45 GMT <Loftux> because the isNewNode is true fore a rename. Any ideas on how to detect that is just a rename?
2017-10-16 13:26:46 GMT <alfbot> Title: NodeServicePolicies.OnCreateChildAssociationPolicy (Alfresco 5.3.a-SNAPSHOT API) (at dev.alfresco.com)
2017-10-16 13:30:41 GMT <angelborroy> probably you can’t detect that is a rename only from repo
2017-10-16 13:30:56 GMT <angelborroy> loftux from “behaviour”, I mean
2017-10-16 13:34:48 GMT <resplin> Loftux: Is this different behavior in the new REST API versus what we did previously?
2017-10-16 13:36:44 GMT <Loftux> angelborroy: Maybe I can check versions of the node, if more than one it is not a new document. No will not work, since I have to support linking (i.e multiple parents), and the linked file can have multiple versions. Oh well
2017-10-16 13:37:02 GMT <angelborroy> resplin the change is at this file: https://github.com/Alfresco/community-edition-old/blob/master/projects/remote-api/config/alfresco/templates/webscripts/org/alfresco/repository/upload/upload.post.js#L267
2017-10-16 13:37:03 GMT <alfbot> Title: community-edition-old/upload.post.js at master · Alfresco/community-edition-old · GitHub (at github.com)
2017-10-16 13:37:25 GMT <angelborroy> resplin so probably also the new REST API has the same behaviour
2017-10-16 13:37:52 GMT <angelborroy> Loftux why not overriding that uplodad.post.js?
2017-10-16 13:39:22 GMT <fegor> Hi people!
2017-10-16 13:39:52 GMT <angelborroy> Loftux or better: override dnd-upload.js
2017-10-16 13:40:09 GMT <fegor> I have a little problem with rest
2017-10-16 13:40:28 GMT <Loftux> Well this is for our ShareBox addon where we need to send notifications. It was actually one of Alfresco's Enterprise customers that reported that they now get multiple notifications for a new version, should only be just that, and not a notification for a new file.
2017-10-16 13:42:34 GMT <angelborroy> Loftux you can always listen to onUpdateContent
2017-10-16 13:42:54 GMT <angelborroy> Loftux and mix that information with your OnCreateChildAssociation to decide
2017-10-16 13:43:37 GMT <angelborroy> Loftux ContentServicePolicies.onContentUpdate
2017-10-16 13:46:36 GMT <fegor> I need to call /alfresco/service/api/actionQueue but I do not know how I have to put the JSON format to run a script. Has anyone ever done it?
2017-10-16 13:53:13 GMT <angelborroy> fegor https://github.com/Alfresco/community-edition-old/blob/master/projects/remote-api/source/java/org/alfresco/repo/web/scripts/rule/AbstractRuleWebScript.java#L220
2017-10-16 13:53:14 GMT <alfbot> Title: community-edition-old/AbstractRuleWebScript.java at master · Alfresco/community-edition-old · GitHub (at github.com)
2017-10-16 13:55:41 GMT <fegor> Ok, thank you!! Angel, this is what I wanted
2017-10-16 14:06:37 GMT <douglascrp> resplin, hey, I was trying to reach you thought skype, but now I see you are here
2017-10-16 14:06:51 GMT <douglascrp> may I ask why this is not visible? ALF-16030
2017-10-16 14:07:02 GMT <douglascrp> resplin, ^
2017-10-16 14:09:47 GMT <douglascrp> resplin, I found this comment // TODO: Fix ALF-16030 Use ON DELETE CASCADE for node aspects and properties
2017-10-16 14:09:58 GMT <angelborroy> douglascrp I found the same :D
2017-10-16 14:10:37 GMT <douglascrp> https://github.com/Alfresco/community-edition-old/blob/master/projects/repository/source/java/org/alfresco/repo/domain/node/ibatis/NodeDAOImpl.java#L449
2017-10-16 14:10:38 GMT <alfbot> Title: community-edition-old/NodeDAOImpl.java at master · Alfresco/community-edition-old · GitHub (at github.com)
2017-10-16 14:10:46 GMT <douglascrp> angelborroy, and have you found the solution for it?
2017-10-16 14:11:05 GMT <douglascrp> I am just trying to confirm if adding the on delete cascade would be the best option
2017-10-16 14:11:09 GMT <angelborroy> I don’t know the issue
2017-10-16 14:11:18 GMT <douglascrp> as I have 176k records to be removed from the database
2017-10-16 14:11:29 GMT <douglascrp> angelborroy, ahh
2017-10-16 14:11:36 GMT <douglascrp> I thought you were working on the same problem
2017-10-16 14:11:37 GMT <angelborroy> I’m using a CMIS standalone client for that
2017-10-16 14:11:46 GMT <angelborroy> nope, just only trying to understand the problem
2017-10-16 14:11:52 GMT <douglascrp> angelborroy, I mean, from the database
2017-10-16 14:12:12 GMT <angelborroy> which table?
2017-10-16 14:12:13 GMT <douglascrp> the cleanup job is not working, as it is trying to remove the alf_node records that are still referenced by alf_node_properties
2017-10-16 14:12:29 GMT <angelborroy> ah, ok
2017-10-16 14:12:50 GMT <douglascrp> the code tries to remove the properties first, but it doesn't work
2017-10-16 14:13:22 GMT <douglascrp> then I found the comment, and I thought about changing the constraint to include the on delete cascade, as the comment sayes
2017-10-16 14:13:24 GMT <douglascrp> says
2017-10-16 14:13:27 GMT <douglascrp> but I am worried
2017-10-16 14:13:46 GMT <angelborroy> why do you want to remove all that information?
2017-10-16 14:13:53 GMT <douglascrp> it is not me
2017-10-16 14:13:55 GMT <douglascrp> it is the job
2017-10-16 14:14:11 GMT <douglascrp> but it is not able to finish because of the constraint
2017-10-16 14:14:11 GMT <angelborroy> yep
2017-10-16 14:14:20 GMT <angelborroy> but why don’t you disable the job?
2017-10-16 14:14:33 GMT <angelborroy> is ContentStoreCleaner?
2017-10-16 14:14:37 GMT <douglascrp> because the database is huge
2017-10-16 14:14:44 GMT <angelborroy> or which job?
2017-10-16 14:14:46 GMT <douglascrp> I mean, HUGE :D
2017-10-16 14:14:55 GMT <angelborroy> not so HUGE...
2017-10-16 14:15:19 GMT <angelborroy> I’ve seen more than 500,000,000 records on alf_node_properties
2017-10-16 14:15:29 GMT <douglascrp> I have changed some internals, and then I removed the objects from repository
2017-10-16 14:15:36 GMT <yreg> resplin, I would be interested in ALF-16030 as well sounds like something related to a support case w raised last week
2017-10-16 14:15:45 GMT <douglascrp> now I have this 176k objects that can be removed from the database
2017-10-16 14:15:56 GMT <douglascrp> angelborroy, 176 removed
2017-10-16 14:16:05 GMT <douglascrp> but I have no idea about the total size right now
2017-10-16 14:16:10 GMT <douglascrp> 176k removed
2017-10-16 14:16:27 GMT <angelborroy> why don’t you make a psql script?
2017-10-16 14:16:37 GMT <angelborroy> in that case it looks safer
2017-10-16 14:16:38 GMT <douglascrp> angelborroy, I am working on this
2017-10-16 14:16:46 GMT <yreg> @douglascrp, a client we have has 3M+ sys:deleted nodes on his system and the cleanup job was failing because of some properties referencing the nodes in question
2017-10-16 14:16:46 GMT <angelborroy> yep, I think is the right approach
2017-10-16 14:18:11 GMT <douglascrp> angelborroy, https://github.com/Alfresco/community-edition-old/blob/master/projects/repository/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-delete-SqlMap.xml
2017-10-16 14:18:11 GMT <alfbot> Title: community-edition-old/node-delete-SqlMap.xml at master · Alfresco/community-edition-old · GitHub (at github.com)
2017-10-16 14:18:27 GMT <douglascrp> yreg, yes, that is the exact same problem I am facing right now
2017-10-16 14:18:36 GMT <douglascrp> so, we have 2 cases to resplin
2017-10-16 14:18:59 GMT <douglascrp> mine is smaller, but still 176k
2017-10-16 14:19:12 GMT <douglascrp> yreg, have you found a workaround?
2017-10-16 14:20:13 GMT <yreg> Nope, waiting on Alfresco support
2017-10-16 14:21:11 GMT <angelborroy> douglascrp probably you can also override the process, which process is it?
2017-10-16 14:21:33 GMT <douglascrp> angelborroy, I didn't get that
2017-10-16 14:21:38 GMT <douglascrp> what do you mean by process?
2017-10-16 14:22:13 GMT <douglascrp> angelborroy, I am talking about this https://github.com/Alfresco/community-edition-old/blob/master/projects/repository/source/java/org/alfresco/repo/node/db/DeletedNodeCleanupWorker.java
2017-10-16 14:22:14 GMT <alfbot> Title: community-edition-old/DeletedNodeCleanupWorker.java at master · Alfresco/community-edition-old · GitHub (at github.com)
2017-10-16 14:23:05 GMT <angelborroy> so it’s deletedNodeCleanup
2017-10-16 14:23:13 GMT <douglascrp> angelborroy, yes, it is
2017-10-16 14:23:18 GMT <douglascrp> lunch time now
2017-10-16 14:23:21 GMT <douglascrp> I will be back soon
2017-10-16 14:23:40 GMT <douglascrp> please, let me know if you get to know something about that
2017-10-16 14:43:43 GMT <AFaust> yreg: I hear you still have deleted nodes issues?
2017-10-16 14:45:27 GMT <AFaust> Still not comfortable going the route of deleting those few nodes that are still referenced? The problem is, you won't get support to fix the nodeCleanup stuff because they can't reproduce the core issue (the logic that creates those deleted nodes that are still referenced in the first place)...
2017-10-16 14:45:53 GMT <AFaust> I mean "deleting those few nodes manually"
2017-10-16 14:46:30 GMT <AFaust> Should also be quite easy to determine how many are actually referenced and from where to maybe identify a pattern there
2017-10-16 14:52:04 GMT <resplin> Loftux angelborroy: Thank you for the feedback about the rename notification.
2017-10-16 14:52:42 GMT <angelborroy> resplin there are many people trying to rollback this feature
2017-10-16 14:52:59 GMT <angelborroy> resplin probably a simple configuration param (yes/no) will help
2017-10-16 14:53:05 GMT <yreg> AFaust, Not my case actually... In any case, the customer would like to go through support first "To be safe"
2017-10-16 14:53:08 GMT <resplin> douglascrp: ALF-16030 was closed during our massive cleanup, but I vaguely remember discussing something similar due to a customer issue. I think we closed that one as "Won't Fix" with an actual reason. I'll have to look for it.
2017-10-16 14:53:33 GMT <resplin> Oh, the issue isn't visible. That's odd. Let me check it out.
2017-10-16 14:53:43 GMT <AFaust> yreg: I know that sentiment, but we both know the chance of that working...
2017-10-16 14:54:43 GMT <yreg> AFaust, We actually got decent support from Alfresco lately.. So I am a bit more optimistic than you on this one !
2017-10-16 14:56:05 GMT <yreg> resplin it is visible again
2017-10-16 14:56:07 GMT <resplin> douglascrp: I don't see any reason why it is private, so I made it public. It looks like it was private from when it was first created.
2017-10-16 14:59:13 GMT <yreg> AFaust, We also discovered the same issue in multiple environments including an internal instance we have... so better safe than sorry
2017-10-16 15:04:12 GMT <AFaust> yreg: Then I hope your optimism will be justified
2017-10-16 15:04:13 GMT <resplin> I lost track of this thread, and will be in meetings for a few more hours. Then I'll try and catch up.
2017-10-16 15:52:42 GMT <douglascrp> resplin, tks
2017-10-16 16:08:15 GMT <douglascrp> resplin, if you can, please, let me know if you got anything on this issue
2017-10-16 16:16:29 GMT <yreg> douglascrp, it sounds like a dead issue
2017-10-16 16:20:20 GMT <douglascrp> yreg, yes, but I guess resplin will make it alive again :P
2017-10-16 16:20:26 GMT <douglascrp> I hope so
2017-10-16 16:20:54 GMT <douglascrp> yreg, maybe the best thing to do is to add the on delete cascade, as suggested
2017-10-16 16:21:13 GMT <yreg> but it might be dangerous
2017-10-16 16:21:29 GMT <douglascrp> yreg, why?
2017-10-16 16:21:41 GMT <yreg> I think better to delete the affected nodes (usually a few of them)
2017-10-16 16:21:44 GMT <douglascrp> if the code is already eliminating what is not required
2017-10-16 16:21:59 GMT <yreg> douglascrp, there might be some side effects in other code portions of the product
2017-10-16 16:22:13 GMT <yreg> Alfresco definitely did not abondon that one for nothing
2017-10-16 16:22:23 GMT <douglascrp> the code already deletes (or tries) to delete the properties, and after that, the nodes
2017-10-16 16:22:38 GMT <yreg> investigating all potentially affected code might be an overkill
2017-10-16 16:22:54 GMT <douglascrp> I have not idea on how to reproduce the issue
2017-10-16 16:23:20 GMT <yreg> Me neither
2017-10-16 16:23:32 GMT <douglascrp> the way I fixed that once was to delete the referenced properties by hand
2017-10-16 16:23:38 GMT <yreg> but we have at least 3 clients (that we know of) showing the same symptoms
2017-10-16 16:23:39 GMT <douglascrp> but there were about 30 items only
2017-10-16 16:23:45 GMT <yreg> not to mention an instance of ours
2017-10-16 16:23:47 GMT <douglascrp> but now, with 176k, that is impossible
2017-10-16 16:25:04 GMT <yreg> douglascrp, I think in our case (at least in our instance) the deletion of 3M+ nodes is blocked by only 5 offending nodes
2017-10-16 16:25:42 GMT <douglascrp> wow
2017-10-16 16:25:54 GMT <douglascrp> have you subscribed here? https://issues.alfresco.com/jira/browse/ALF-16030
2017-10-16 16:27:21 GMT <douglascrp> yreg, do you remember the server you connected into another day? then one we installed care4alf?
2017-10-16 16:27:30 GMT <douglascrp> you noticed some residual properties there
2017-10-16 16:27:51 GMT <douglascrp> do you know how to eliminate those, as there is no way to search for them using solr?
2017-10-16 16:28:17 GMT <yreg> I had a query not sure I still have it
2017-10-16 16:28:36 GMT <yreg> Isn't it in the list of queries in car4alf SQL tab ?
2017-10-16 16:29:19 GMT <douglascrp> yreg, the one to detect those is there, but I don't remember about anything to actually fix it
2017-10-16 16:30:00 GMT <yreg> douglascrp, well, then I guess you can tweak it to delete them
2017-10-16 16:30:21 GMT <douglascrp> yreg, that is an idea
2017-10-16 16:30:32 GMT <yreg> you should attempt that in a test environment first and you must have a backup when you do it on prod
2017-10-16 16:30:43 GMT <douglascrp> yreg, yes, of course :D
2017-10-16 16:31:02 GMT <douglascrp> I do not use to play with fire :D
The other logs are at http://esplins.org/hash_alfresco