Кстати а в чём тут конфликт? У вас получится, что есть транзакции на изменение схемы прав доступа от разных пользователей. Транзакция выполняются последовательно для одних и тех же данных.
Если вопрос в том как решать конфликты вносимых изменений (Вася сказал что можно, а Боря, что нельзя, и надо внести оба изменения одновременно) - только административно. На уровне программного обеспечения это не решается.
Ну в смысле на уровне софта возможно решение либо приоритетом пользователя, либо очередностью поступления/исполнения.
Тут конфликт скорее на уровне проектирования структуры хранения. Пока выделенные пользователю права рассчитываются как пересечения множества прав, выделенных админом субподрядчика пользователю и множества прав выделенных субподрядчику генадмином (чтобы не вмешиваться в выделенные субподрядчиком права и не стирать их, мы их фактически просто "отключаем" таким образом), и на полученное множество накладывается ограничение по доступу к системам, в результате от него остается только множество прав на действия в разрешенных системах.
Возник конфликт на тему "ой, это слишком сложно, почему нельзя решить все на уровне только прав пользователя, зачем еще дополнительные уровни выделять". Имхо решить на уровне прав пользователя тоже можно, но тогда просто надо делетить эти права, а если решение генадмина было ошибочным то обратно уже не особо откатишь.