CMDB, Extended Tables, Views, and CI Classes

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-24-2017 04:08 PM
Hello team
I am hoping to get some views of the CMDB experts our there.
My customer looks after a bunch of CI's for other Companies.
Here is what I need:
The ability to enter a CI, and based on the 'company' value and 'ci_class', get certain fields available.
What I understand:
That by selecting a ci_class I will receive a set of forms and fields (via an extended table) that match that ci_class.
e.g. Select "IP Phone" it will use cmdb_ci_ip_phone extended from cmdb_ci.
Great ... so far.
Now, lets say the customer has its companies that they are going to manage CI's for. e.g. Company A has IP phones, but we want to collect different info. For example, customer A wants to record customer specific information (and there is no corresponding field in the table). e.g. The GT Case Number. Only Company A used GT.
OK, so what do I do? Thought I have are ...
a. Edit the cmdb_ci_ip_phone. add in the new field, and then create a new view for that form based on the cmdb_ci.core_company value?
So CI is associated with Company A and then I have a Company A view on the form that only they can use.
b. Extend the cmdb_ci_ip_phone with a new table, something like cmdb_ci_ip_phone_company_a
This seems messy and over time, they may have 1,000's of customers, who knows. And then I will need security around that so only Company A can see cmdb_ci_ip_phone_customer_a. This now seems like a maintenance nightmare.
c. or another way.
I would love to hear your thoughts everybody.
Thanks

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-24-2017 08:14 PM
Using 1 view per company, given the number of cmdb tables there are, could be a bit administrative itself. Creating a bunch more tables, becomes a nightmare. I would try and use the same tables and create all the extra fields on those table. That should remove the nightmare part.
I would also pre-populate the user's company on the CI when the form opens. That insures they are getting their fields, their view.
Then I would use an Interceptor so new somebody creates a new CI, it prompts them to choose a Class. Once choosen, company auto-populates, view is set, their fields are there.
Are you using domain separation? Just wondering since you said many customers. Might change my answer if you are,

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-24-2017 08:51 PM
Thanks Michael
So on your comment of "Using 1 view per company, given the number of cmdb tables there are, could be a bit administrative itself. Creating a bunch more tables, becomes a nightmare. I would try and use the same tables and create all the extra fields on those table. That should remove the nightmare part.", I would still need to somehow make those extra fields on the form are only viable based on company. That's why I thought form views. Company A View shows Company A fields. Company B view does not.
Its not likely that the separate companies (or really customers) will be creating CI'e themselves, but they will need to go in and view their own only.
No domain separation. Not suitable for this environment.
-D

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-25-2017 06:00 AM
By 1 view I was referring to form views. If you create all the fields on the same table, if customer B sees customer A fields - like GT Case Number - does it matter?