Hi! Great topic and good questions!
I’ve been working on implementing and maintaining XWiki in my company for over 5 years.
Our company is mid-sized, with 7 business units.
Based on our needs and my previous implementation experience (I had worked with XWiki before), we chose the following approach to organizing content:
-
Main Wiki – accessible to all employees. It contains general knowledge (instructions, regulations, tool descriptions, training materials, etc.) that are useful across all business units.
-
Subwikis for each business unit – each business unit has its own subwiki where it stores working materials (requirements, test cases, work plans, …) and knowledge (instructions, training courses, documentation, …). These materials are specific to that business unit’s projects. Access to a subwiki is restricted to the business unit’s employees and administrators. Each subwiki has its own isolated database, which helps us meet information security requirements.
-
Permissions model – the company uses Active Directory (AD) to manage users and groups. All tools, including XWiki, are synchronized with AD via LDAP. This way, we don’t have to manage user accounts separately in each tool – everything is handled in one place (AD). In XWiki, we use the LDAP Application to synchronize AD groups with XWiki groups.
Overall, this model is very convenient and fits our needs almost completely.
But there are a few points to keep in mind:
Restrictions inside a subwiki
If necessary, you can restrict access to specific project materials inside a subwiki by using space administration. BUT: when setting permissions for spaces inside a wiki or subwiki, you need to be very careful, because the access control system is complex. Use permissions instead of restrictions, since restrictions are very strict and affect many things. More details can be found in the access rights documentation.
This is why it’s usually better to give group access to an entire subwiki for the corresponding business unit’s team. That way, you don’t have to configure permissions manually as much.
We concluded that restricting access to project materials inside a business unit’s subwiki should only be done in exceptional cases, when it’s truly necessary. Within a business unit, project teams communicate with each other, and people often move between projects. If you restrict access at the project level, you’ll create a lot of extra work for yourself in terms of configuration and maintenance.
Search
If you want search results to respect access rights, you’ll need to configure this.
Content reuse
We have a knowledge management system. Its processes assume that knowledge from business unit’s subwikis should be “promoted” to the Main Wiki level once it becomes useful for the majority of employees. In this case, instead of copying and duplicating material, content reuse should work.
XWiki has an extension for this – Display Macro. However, it respects access rights. So when promoting knowledge from a restricted subwiki, it becomes useless. Display Macro needs a feature (a checkbox) to ignore access restrictions, so it could be properly used in a Main Wiki + subwikis model. I’ve created a topic about this on the forum.
These are the main points regarding your question.
Good luck with XWiki!