My fist disclaimer: I don’t run a big corporation. It’s entirely possible, perhaps even probable, that I’m missing things, or possibly making things harder. I hope not, but that’s what comments are for.
I’ve heard many problems for how corp role assignment is painful, and how that can make management of POS painful too. It mostly comes down to things not being fine grained enough. Either you can cancel every corp industry job, or you can cancel none, for example.
So what I was thinking was the following. If it’s familiar, you may have worked with POSIX user management before. It’s pretty much lifted from there.
The first step is to allow for the creation of ad hoc user groups within the corporation. I’d recommend that you can nest them at least once as well, allowing for groups within groups. Multilevel nesting would be nice, but complicates matters a little.
Ideally these are parsed at logon, and then stored, to reduce the workload. Recursion makes databases cry. Stored in the ‘brain’ for the character. This would be easier once the ‘brain in a box’ work that’s been mentioned in the past is repeated. To allow for updates without needing a log off, I’d suggest a button on the corp pages or character pages, allowing someone to get a group update. This always annoyed me in Windows 😉
In an ideal world, you could also create groups of locations/hangers. So you could have a ‘The Forge’ group, which would contain all the hangers in the Forge, and a ‘Jita’ group which is just the hanger in jita 4-4 CNAP. A seperate group for a singular POS, or multiple POS would also be handy.
At that point, you could assign management roles for a location group, to a user group. Or for a user group, to a user group.
Some roles would need to be split apart, so you could have an anchor role that can be assigned globally, but split the un-anchor function away from it. So the user who anchors something can un-anchor it, but not everyone else. Just the people that user (or someone with a global management role) specifies. Ditto with arrays and labs (or jobs run from a corp hanger) A role to start them, and a role to manage them.
Ideally such groups would be global, capable of holding people who aren’t actually in your corporation (automatic removal when you kick someone or they leave) so you could share the ability to run jobs in your POS with people outside your corp (granted at corp, pos or array level)
It’s probably over complicated, but if you set things up right in the beginning (grant roles to groups, not people, then add people to groups) then it’s actually pretty simple to work with.