Implementing Multiple Project Customisations in one Alfresco instance


Working on an Alfresco project for a client I experienced a number conflicts when deploying the project on an existing Alfresco server where other customisation projects were already deployed.

The conflicts occurred primarily on the share instance when common configuration files were used, but also on the repository instance.

The conflicts that occurred were:

  1. A content model was not loaded because the same bean-id was used in two different projects.
  2. Only viewable aspects defined for project A was visible, not those defined for project B
  3. When selecting “change type” only types defined in project A was available, not those defined in project B

I am sure more conflicts which we haven’t discovered might occur. In this post I will describe the nature of the conflicts we did discover and how they may be avoided.


In order to support and verify the recommendations in this post I have created 5 customisation projects. In these projects I have done some “standard” customisations. In the repository projects I have created customised content models. In the share projects I have added dashlets, pages and sites. These projects are all deployed on the same Alfresco server instance on which both alfreso.war and share.war are deployed. The table below shows a resume of the customisations done in each projects. The customisations are described in further details in the blog:

Project / Customisation

Custom Repo A

Custom Share A

Custom Repo B

Custom Share B

Master Share

Content Model

folderA extending cm:folder with
mandatory aspect A


documentB extending cm:content
with mandatory aspect B




























1. presets.xml

2. create-site.get.js

3. <msg>.properties



























Customising Alfresco Repository

Bean naming convention

The conflict that occurred when deploying multiple repository customisations (conflict #1 described above) was due to improper naming convention.

In order to avoid these errors in the future we agreed to prefix bean id’s with myCompany.myProject.

It would be natural to name the content model myCompany.myProject:model. This is unfortunately not possible. Alfresco will show an error in the log when you try to submit changes via the edit metadata form (WARN [processor.node.NodeFormProcessor] Ignoring unrecognised field ‘prop_myCompany#dot#CustomB_myName’) and the metadata will not be persisted.

For our models we have instead adopted the following naming convention: myCompanyCustom:model

Customising Share

In this section I will list some best practices for customising share still with focus on avoiding conflicts between different customisation projects


Instead of overriding the standard custom-slingshot-application.xml you should create a project specific custom-slingshot-[project].xml configuration file for defining your beans.


Customising Share is for a great part done in the file share-config-custom.xml but rather than using this file I would recommend to create a project specific version (share-[project]-config.xml) and load this file from within custom-slingshot-[project].xml. This is illustrated below:

<!– Override the config source to include Web Framework Commons and Share config –><bean id=“customA.custom.config” class=“org.springframework.extensions.config.ConfigBootstrap” init-method=“register”>
property name=“configService” ref=“web.config”/>
property name=“configs”>


The most import thing to remember when defining your share-[project]-config.xml is not to specify the replace=”true” attribute in the <config> element. This attribute will cause your configuration to override similar configuration specified in other customisation projects. This was the cause of both conflict #2 and conflict #3 described above.


A dashlet typically consist of several parts: web-tier web scripts and repository-tier web scripts. The recommendation here is to follow the guidelines from the Sample Project

custom developed web-tier web scripts are placed in:

  • alfresco/site-webscripts[/org/myCompany/myProject ]

existing web-tier scripts that you want to override are placed here:

  • alfresco/web-extension/site-webscripts[/org/myCompany/myProject ]

For repository-tier web scripts, place scripts under

custom developed repository web scripts are placed in:

  • alfresco/templates/webscripts[/org/myCompany/myProject]

existing repository scripts that you want to override are placed in:

  • alfresco/extension/templates/webscripts [/org/myCompany/myProject]

Furthermore a dashlet component may consist of additional resources (js, css, images, etc.). These can be located in:

  • share[/org/myCompany/myProject ]

In this case you should link to the resources from you freemarker template using the syntax:

<img src="${url.context}/res/myCompany/myProject/components/dashlets/image.png" alt="Image description here" />


Defining a site in Alfresco involves customising three files. These are:

presets.xml ../tomcat/shared/classes/alfresco/web-extension/site- data/presets

create-site.get.js ../tomcat/shared/classes/alfresco/web-extension/site- webscripts/org/alfresco/modules

<msg>.properties (configurable location)

You will notice that presets.xml and create-site.get.js are located in the shared directory and it is unfortunately not possible to use individual names for each project. The consequence is that if a new project is deployed it will overwrite previously deployed projects customisations!

There are a couple of methods to circumvent this problem:

  1. Create the site using bootstrap. This is method is best suited when there must exist exactly one site
  2. Create a master project which contains customisations which are common across projects. This is the approach I will describe in this blog.
  3. Create a customised dashlet with the purpose of creating the project specific site
    This approach is used in the Alfresco's Record Management Module (see

Master share and repo projects:

A Master share and repo project should contain the configuration files of which only one can exist.

There are several benefits using a master share and project. The master share project can contain configuration which is common for all projects e.g. single-sign on configuration.

The sites I have created for the custom share A and custom Share B projects are referred in presets.xml like this:

<!-- CustomA Site
dashboard -->
preset id="customA-site-dashboard">

sitePages>[{"pageId":"pageA"}, {"pageId":"documentlibrary"}]</sitePages>
preset id="customB-site-dashboard">
<!-- title -->




Also the create-site.get.js is defined in the common master share project like this:

var sitePresets = [{id: "customA-site-dashboard", name: msg.get("title.customASite")},
"customB-site-dashboard", name: msg.get("title.customBSite")},
"site-dashboard", name: msg.get("title.collaborationSite")}];

model.sitePresets = sitePresets;

I also created a master repo project. However I did not use it for this post. I envision that a master repo project could be used to define a common content model which the individual customisation projects could inherit from. I haven't tried it though.


After developing and deploying the 5 projects using the guidelines described in this post I did not discover any conflicts. I am able to create sites of both type “Custom Site A” and “Custom Site B”. However the developed components are not project specific. This means that if I create a Site of type “Custom Site A” I am still able to add a page B (defined in Custom Share B project) to this site. I am also able to able to add dashlet MultipleRSS to site A (MultipleRSS is defined in Custom Share B). Visible aspects defined both project A and project B are visible for all documents.

I don't see this is a problem. It is the responsibility of the site administrator to add relevant components to a site.

An alternative method to avoid conflicts in the share instance is of course to have a dedicated war file for each customisation project. This might be a good solution in some cases even though there a some overhead involved with this solution. However following the guidelines in this post you a free to decide if your project should be deployed in the common share instance with other projects or if you decide to have an individual [project].war file. [project].war is a copy of share.war with your customisations applied.

This entry was posted in Uncategorized. Bookmark the permalink.

71 Responses to Implementing Multiple Project Customisations in one Alfresco instance

  1. Wiley says:

    This post will help the internet visitors for creating new bllog orr even a bloog from start to end.

  2. Pat says:

    Spot on with this write-up, I truly believe that this web site needs a lot more attention. I’ll probably be back again to read through
    more, thanks for the information!

  3. Magnificent website. A lot of useful information here.
    I am sending it to several pals ans also sharing in delicious.
    And obviously, thanks on your effort!

  4. It’s very trouble-free to find out any topic on web as compared to books, as I found this paragraph at this site.

  5. Niby obszyć pokrycia na miejsca ażeby obszyć owinięcie na miejsce wymyśliła
    trwające skrawki środków Fragmenciki ucinała na podwalinie zasług krzesła,
    spajając po 1 cm na przeszycie + ew. 1,5 na zakończenie.

    W fundamentalnej chronologii wykończyła dookoła falbankę Po przeniknięciu również Po przeszyciu brzegów futerału w rezultacie schyłkowym bieżąca transza winna spoglądać Gdy zaraz wsio
    obszyjemy kumulujemy dwa kawałki: siedzisko+oparcie Bieżąco znając prędko rozciągłość falbanki potrafimy
    dopasować odległość wezgłowia
    zaś obrobić nie zaszyte niskie podzespoły podtrzymania -
    oraz odtąd przygotować peryferyjne zakuwania (moje spajania stanowiły ślepiów 40cm

  6. inaczej wcale nie egzystowałoby one eksploatowane. Zaklep agregatu second hand pragnie przechodzić serdeczny
    reżim do eksploatacji tychże darowizn tudzież sklepy
    te przeważnie oferują wielostronne gratek gwoli niekiepskich sprawiających,
    aby potrafili wystać dotychczas ciekawsze bitwy naciągaj naturalnie.

    Inteligentni odbiorcy umieją w szczytowi wyłudzić współczesne wykonalności.
    Żyje chwila manier, które silna wyłudzić, ażeby zjadać

  7. Przyległe oczyszczalnie rynsztoków są jeszcze srodze tanią możliwością
    dla rozpasań bezodpływowych w stanowiskach, gdzie
    nie planuje kanalizacji. Wbrew wydatniejszych nakładów armaturze jeszcze ławica dam się na takie wyładowanie

  8. Oczywiście także tyle wygłosiła, gdyż uderzyła najzdrowsza latorośl mojej podopiecznej również
    przyniosła nam zarąbiste ciasto śliwkowe,
    mniam. Z następującego tygodnia dotykają się wakacje jesienne i dwie spośród nich pozostawiają na ferie

  9. Zarobione baksy, niekwitnące flory (najczęściej pokrzywy) składamy pojedynczo w kadzi
    przyciężkiej, plastikowej ceń wiadru zaś skrapiamy starką (celująco deszczówką

  10. Lowell says:

    Both stimulants and appetite suppressants Appetite suppressant medications on the bright side.
    And a lot about fat loss should not go empty for a year.
    Preparing it self for another” starvation” mode.
    There’s more.. much more success by simply pulling out the bookstore.
    Like every human body that makes it a perfect chance to rob you of the weight problem!

  11. Tamera says:

    Das alleine reicht schon aus, denn kurz nach der Anmeldung könnt ihr Frauen zum
    ficken in eurer Nähe suchen Ihr könnt entweder selbst auf die Suche
    gehen, oder euch die Mitglieder anzeigen lassen, die am besten zu euren Wünschen passen.

  12. proxy giriş says:

    I love what you guys are up too. Such clever work and reporting!
    Keep up the awesome works guys I’ve you guys to

  13. I value the post.Really thank you! Keep writing.

  14. This unique blog is without a doubt interesting and besides informative. I have picked a lot of interesting tips out of it. I ad love to return every once in a while. Cheers!

  15. You make it enjoyable and you still take care of to keep it smart. I can not wait to read much more from you. This is really a tremendous website.

  16. Im obliged for the article.Really looking forward to read more. Really Cool.

  17. Major thankies for the post.Really looking forward to read more. Will read on

  18. Wow! This could be one particular of the most beneficial blogs We ave ever arrive across on this subject. Basically Wonderful. I am also a specialist in this topic so I can understand your hard work.

  19. Vip casino sitesi Cratosslot

  20. Spor Bahisleri için Cratossporting

  21. Cratosslot says:

    Online canlı casino sitesi Cratosslot

  22. Radyo says:

    Tüm radyo frekansları için

  23. Tattoo says:

    It as not that I want to duplicate your web site, but I really like the design. Could you let me know which design are you using? Or was it custom made?

  24. we came across a cool internet site that you simply may possibly appreciate. Take a search should you want

  25. The Constitution gives every American the inalienable right to make a damn fool of himself.

  26. Rolet online says:

    Some really superb blog posts on this site, thanks for contribution.

  27. Really appreciate you sharing this blog.Much thanks again. Much obliged.

  28. Well I truly liked reading it. This tip offered by you is very effective for proper planning.

  29. very good put up, i certainly love this web site, carry on it

  30. Wow, great article.Really looking forward to read more. Want more.

  31. EKDV 640 says:

    Johnny Depp is my idol. such an astounding guy *

  32. Looking around While I was surfing today I noticed a great article concerning

  33. Download Mp3 says:

    Im thankful for the blog article.Really looking forward to read more. Really Great.

  34. Pierre signe astrologique horoscope septembre balance Here is my homepage; voyance en ligne gratuite

  35. In my opinion you are not right. I am assured. Let as discuss. Write to me in PM, we will talk.

  36. thehuffposts says:

    Keep up the great work , I read few content on this site and I believe that your site is very interesting and contains sets of fantastic information.

  37. da mat bep says:

    vаАаб‚Т€Т“deo or a piаАааАТƒturаА аЂа• or t?o to l?аА аБТ•k for people excited

  38. visit says:

    There is noticeably a bundle to learn about this. I assume you made certain nice points in features also.

  39. This unique blog is no doubt cool additionally informative. I have discovered a lot of interesting advices out of this amazing blog. I ad love to return over and over again. Thanks a bunch!

  40. w3techy says:

    Outstanding post, I conceive people should learn a lot from this site its very user genial. So much superb information on here .

  41. you make blogging glance What host are you using? Can I am getting your associate link on your host? I want site loaded up as fast as yours lol

  42. WALOPS says:

    Modular Kitchens have changed the idea of kitchen in today as world as it has provided household women with a comfortable yet a classy area through which they could spend their quality time and space.

  43. 인천오피 says:

    Thanks for the good writeup. It if truth be told was a amusement account it. Glance complex to far introduced agreeable from you! By the way, how could we be in contact?

  44. Major thankies for the post.Thanks Again. Fantastic.

  45. Thank you ever so for you article.Really looking forward to read more. Cool.

  46. Very good article post.Really thank you! Much obliged.

  47. 부커취 says:

    we came across a cool site that you simply could possibly love. Take a search for those who want

  48. You got a very good website, Gladiola I noticed it through yahoo.

  49. Tattoo says:

    If you dont mind, where do you host your blog? I am searching for a very good web host and your webpage seams to be extremely fast and up all the time

  50. Right now it sounds like Movable Type is the top blogging platform available right now. (from what I ave read) Is that what you are using on your blog?

  51. Really appreciate you sharing this blog.Really thank you! Awesome. ventolin

  52. Thanks so much for the blog.Thanks Again.

  53. uFhOqR really very good submit, i basically adore this website, keep on it

  54. plumber seo says:

    It as truly a great and helpful piece of information. I am happy that you simply shared this helpful

  55. Thank you for your blog.Thanks Again. Great.

  56. This very blog is really entertaining and also diverting. I have picked many interesting tips out of this amazing blog. I ad love to return every once in a while. Thanks a bunch!

  57. tara matka says:

    Merely wanna comment that you have a very nice internet site , I enjoy the style it actually stands out.

  58. Cheap Robes says:

    You have Beautifully expressed your thoughts and have explain in a proper way, your post tells your experience which is showing an organized post. I have enjoyed reading, keep it up!

  59. This awesome blog is without a doubt interesting and besides factual. I have discovered a lot of useful things out of this amazing blog. I ad love to come back again and again. Thanks a lot!


  61. I reckon something truly special in this website.

  62. Looking forward to reading more. Great article.Thanks Again. Great.

  63. There’s certainly a lot to learn about this subject. I love all of the points you made.

  64. catfight says:

    Hi there, I discovered your web site via a search engine at the same time as searching for a similar topic. I really appreciate this post. I have been looking everywhere for this! Your site hit the nail upon the top and outlined the whole thing without having side effect , other people could take a benefit and will probably come again to get more. Thanks!

  65. glour says:

    नमस्ते, मैंने उसी समय एक खोज इंजन के माध्यम से आपकी वेब साइट की खोज की थी जब एक समान विषय की खोज की गई थी। मेरे द्वारा इस पोस्ट में वास्तव में प्रसंशा की जाती है। मेरे द्वारा इसे हर जगह ढूंढा जा रहा था! आपकी साइट ने शीर्ष पर कील ठोक दी और साइड इफेक्ट के बिना पूरी बात को रेखांकित किया, अन्य लोग लाभ उठा सकते थे और शायद अधिक प्राप्त करने के लिए फिर से आएंगे। धन्यवाद!

  66. hidibf says:

    Здравствуйте, я обнаружил ваш сайт через поисковую систему в то же время, когда искал похожую тему. Я очень ценю этот пост. Я искал это повсюду! Ваш сайт попал в самую точку и изложил все без побочных эффектов, другие люди могли бы извлечь пользу и, вероятно, придут снова, чтобы получить больше. Спасибо!

  67. brirlle says:

    Bonjour, j’ai découvert votre site web via un moteur de recherche en même temps que je cherchais un sujet similaire. J’apprécie vraiment cet article. Je l’ai cherché partout ! Votre site a frappé le clou sur le dessus et a souligné l’ensemble de la chose sans avoir d’effet secondaire, d’autres personnes pourraient prendre un avantage et sera probablement revenir pour obtenir plus. Je vous remercie !

Leave a Reply to google hackling Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>