Have a small franchise type non-profit organization in which multiple level users within the org need access to tools within civi, however, we do not want base level users that are managing their individual school sites to be able to add higher up organizational type contacts (like other school or club locations or regional type centers). We just want them to work on their individual members only, and to limit the availability of specific management/access of contact types based on their specific roles. We are using the Relationship extension to manage permissions on their own members down the chain of command, but we need to cutoff the chain of possible contact types they have access to and also hide those possibilities in the nav menu. Any help is much appreciated!!! *using civi 5.2.2 and drupal 7

2 Answers 2


This may not be the answer you hope for, but the way we have approached this for other multi-level sites is to keep the 'lower level' users completely out of civicrm and give them everything they need via Views and Webforms.

  • Thanks for the reply, and yeah, definitely not the answer I was hoping for, as this contact type management is the only aspect we really need to limit for our site locations (that we currently know of), and would really be a bit of a pain to add all those other types of pages and options. And unfortunately I am just volunteer help that doesn't know coding well.... That's really too bad to hear... everything else is lining up really nicely.
    – user6070
    Jan 8, 2019 at 16:07

We have done this by creating groups in OG, synching them and adding ACL's for each group. This way, they are able to view and edit their own contacts. Furthermore, we created some super-roles which are allowed to view and/or edit all. Doing so we are even able to have one contact which may be a member of two groups.

  • are you manually creating each ACL? we did work to automate this and also to eg build an OG for everyone with Relationship type X with Contact Y, and separately, everyone who signs up for Event Z, ie if Event Z is of type Q then create an OG, then add everyone who registers.
    – petednz - fuzion
    Jun 8, 2020 at 20:16
  • I have created the ACL's via the OG Sync. Then I duplicated them to differentiate in read/update permissions. Which extension are you referring to, @petednz? Jun 29, 2020 at 17:27
  • sorry it didn't get published as an extension, was part of a custom module for a couple of clients. we can probably extract it but may not happen in the near future
    – petednz - fuzion
    Jun 29, 2020 at 21:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.