$Self->{'CustomerPanelOwnSelection'} = {
'Junk' => 'First Queue',
'Misc' => 'Second Queue'
};
Yes, you can’t see other customer’s tickets in the default setup, but there’s more to it than that. Here’s why customer-based queue lists are important to us:
The reasoning from the powers that be here is that customers should see only the services they are entitled to, and nothing more --in many cases we’re contractually obligated to not identify customers to each other, not to use or expose the customer’s name in any way, and to deny all knowledge of customer B if customer A asks – consider the case where A and B are direct competitors. If you’re serving both A and B, you need to be able to prove to both A and B that information can’t (and won’t) leak between the two, especially if the queues handle potentially confidential or sensitive information that could represent an advantage to one or the other. We have customers where that could potentially mean billions one way or the other.
If you have customer based queues (or better yet, queue sets), the ACLs can be much simpler (customers are restricted to their own queue or a clearly auditable set of queues) and get the experience of being our “only” customer from their perspective.
You could probably do this with service-based queues and some fancy ACL handwaving, but the extra step of adding a specific set of queues to a specific customer id adds an additional dimension to the security model that makes it a lot easier to *prove* that information can’t leak. And yes, it is a total PITA. But, you can look the security guys in the eye and say “A cannot access data from B” and be able to concretely prove it with data to back it up.
The customer-based queue approach is also conceptually a bit easier to templatize – get a new customer, create the following queues, set the ACLs so, and the agents know what process doc to refer to based on customer name and/or queue name. It you’re doing strict ITSM, the service-based approach is probably technically more correct, but it’s hard for business heads and clerks to think that way. customerA-service1, customerA-service2 are easy for them to grok immediately, and having your agents concentrate on the “-service1, -service2” parts is a fairly easy adaptation.
I thank you for the insight, and in my limited view, I'm thinking of "Services" to handle the segregation as -- I'd hope -- only the assigned services would be available to the customer, meanwhile the queue would be the type of thing your agents would generically provide. The Service is unique to a customer, and does everything else mentioned here, without need for ACL.
At least, that's what I understand. Every plan is different, to be sure, but thinking in terms of what you present here, it seems reasonable that the only change you'd need to do to add a new customer would be to add a specific service and attach it to the customer.
Unfortunately, that doesn’t work very well if you are offering multiple services to each customer. If I read ITIL correctly, services vs customers is potentially a many-to-many relationship, eg services are predefined “things you offer” to zero or more consumers (note that in a highly-composed service-oriented architecture, the “customer” could be another service as well as a company), and there may be zero or more consumers that have access to a service. This gets particularly nasty if you involve a CMDB of managed objects that provide certain services to customers – you need to track the consumer to service mapping to calculate who is affected by a service failure, and multiple consumers get mapped to a single service.
Now those pesky checkboxes are the thing to bite you in the rear... (No, I'm not making fun, I'm serious. It's not extremely obvious that you haven't assigned a service to the competitor).
Yup. And that is exactly what bites you in the ass without ACLs that permit independent auditing. Having customer A see only one queue (or a small set of queues) and having agents scan the customer-dedicated queues for specific services (easy to do with a predefined query) they’re trained for (or you can also pull those skills from a CMDB entry for a “Person”). It’d be a very nice option to have OTRS support such a multidimensional security model out of the box, but that’s a lot of work for them for a fairly small community of users.
Unfortunately, that doesn’t work very well if you are offering multiple services to each customer. If I read ITIL correctly, services vs customers is potentially a many-to-many relationship, eg services are predefined “things you offer” to zero or more consumers (note that in a highly-composed service-oriented architecture, the “customer” could be another service as well as a company), and there may be zero or more consumers that have access to a service. This gets particularly nasty if you involve a CMDB of managed objects that provide certain services to customers – you need to track the consumer to service mapping to calculate who is affected by a service failure, and multiple consumers get mapped to a single service.