Platform Academy Session #26 - October 27th, 2022 - Subscription Management: Mapping Custom Tables
hello and welcome everyone uh welcome to this week's platform Academy session today we'll be talking about subscription management specifically mapping custom tables and uh I am very happy you joined us today my name is Lisa hohenstein I'm an outbound product manager and I've been with servicenow for going on four years early next year I've been in product management for about two and a half of those working with Adam Stout who's joining us today as a guest speaker give a quick introduction to yourself thanks Lisa yeah my name is Adam Stout I'm an outbound product manager I work with Lisa um and I cover a lot of uh a lot of the platform fundamentals specifically subscription management um and as always we're excited to talk about it and help you help yourselves understand what you're using in the platform so I do want to come off that we're going to talk about mapping custom tables today specifically this is more of an advanced feature we all need to do it but you need to understand the basics of subscription management first we did a session on that last year still relevant everything we talked about before was good I think it was right around a year ago so if you haven't seen that I'd recommend going back into the archives for the platform Academy go watch that one um great you want to watch that one first make sure we have our basic subscriptions we know how to get around and then we can talk about this one again this is this is more of an advanced feature once we have the basic setup then we'll talk about mapping our tables as always uh this is our Safe Harbor slide in case I let anything slip about what's coming out in the future please don't make any buying decisions um based off of things that haven't been released yet we're going to be focusing on in on things that are are released and supported that are in Quebec Rome um San Diego Tokyo whatever you have this should be this should apply as is we're going to be looking at a Tokyo instance when we do a demo but it will look essentially the same except it won't be in the next experience uh the UI if you look at it from before all right so let's talk about what we're going to talk about so we're good we're going to talk about uh why do we have custom tables what is a custom table why do I need to map them how do I map them and then which subscription do I choose when I map them which is again all these are really key to understand each step so let's get started why do we have custom tables so there's a few there's a couple different types of custom tables that we're talking about they're all technically the same but we use them differently it's important to understand now what we're talking about now is based off of our our current our Standard current contract terms if you have an older contract that might vary a little bit but we're going to be talking about the basic ones that we're looking for so we have bundled custom tables and those come with that bundle custom tables also app engine starters what we'll call them these are what we use that they come with itsm and itbm with most of the Suites we'll have some bundled custom tables which are designed to help us configure the applications that we have so whether it comes with five tables or 25 tables it's there to help us use that application a little bit better so if you need to create a table we can and then we have app engine where we have unlimited custom tables and we can build we're designing to build everything is new whether we're extending tasks or we're building other custom tables build build build and whatever we need to have that's why app engine comes with unlimited so we can do whatever we need to do um a lot of us we have the bundle custom tables and and then the unlimited if we have app engine what's important is we're saying which part of these are go to which subscription and we still have to map them even if you have unlimited tables you may not have unlimited users for those tables so it's important that we do map the right the right tables to the right subscription so we know which users are entitled to use them and which ones are not entitled to use them we don't want to pay for people who aren't using them and we want to make sure we are we're paying for the people who are using them I'm going to look at Lisa to make sure that she nods and go yeah I said that right no I was I was pondering the question in in Q a and there's uh there's an easy one in chats so app Engine versus app engine starter yes so the engine starter are the bundled custom tables as I interpret this yes app engine starter you'll see it and it we changed the term is a little bit or you might hear me use them interchangeably the bundled custom tables or app engine starter they're bundled with a different SKU and then app engine is when we're generally getting the unlimited ones again you need to check your contract uh over the years we've used slightly different terms um yeah we're talking about what what do we sell today what are our standard terms today and then the other question that got in through the Q a panel uh is is it possible to identify whether users will fulfill our licenses are using the paid aspects of the license in theory yes [Laughter] um uh so as far as knowing what they're being used for servicenow charges for the right to use um so having the role in being able to do it is is what the subscription is consuming um whether they're using it whether they're actually doing anything um different licenses do different things so you'd want to look for some key indicators if I were looking for my fulfillers I'd probably look for users who have updated an incident a problem some task in some amount of time in the last 90 days in the last year if you haven't updated a task you know your name's not the last one it updated I'd probably want to scrutinize whether you could do it but a lot of fulfill it fulfilling um fulfillers can also just read all the tasks so you may have somebody who's not updating but they need to be able to read everything or they might be commenting on something taking some action on things and they may still need a fulfill their license so it gets pretty complicated pretty quickly on what are you doing but I I think it is reasonable to look at the key actions um and if I know I updated a case well then yeah I definitely need a fulfiller and if I I have it maybe I'll take a second pass we'll look at users who haven't logged in you know somebody hasn't logged in any year maybe they don't I can take that subscription away but that gets a little bit more complicated we talk about a little bit more in that session from last year so you may want to go take a look at that but it in subscription management we are looking at who has the right to do something because that's what we're we're paying for okay so we talked about the uh why do we have the custom tables right why do we have bundle tables why do we have app engine tables whether it's to configure it's to build but what is a custom table what are we actually talking about here so the custom tables if we go back into our contracts we will see that there's a definition of a custom table we're going to talk about this some more about what it means but what I really want to clarify is that every table you create is not necessarily a custom table a custom table is a type of table we create um any non-servicenow provided table is a candidate to be a custom table doesn't mean it is a custom table we'll talk about the ones that aren't but generally if you create it it can be there's a couple of cases where it becomes from a partner app it might be a custom table as well we'll talk a little bit more about that but if I create a table we then are going to look is it exempt or not exempt so tables you create are generally going to be custom unless they fall into one of these exemptions so a couple of the exemptions that we have um there's if you extend certain tables they're exempt and we're not going to charge you for them they're not going to be considered custom M to M tables are not considered custom remote tables archive tables rotate table the shards of them not considered custom and database views aren't tables but just for completeness we don't we don't consider those to be custom tables as well so is there a good way to identify those like with a prefix or something no and we're going to talk about how you do do that um some of us you know the really simple way it's you tables right we used to talk about new tables or x tables you may see that it's not good enough um you're going to count some things that shouldn't be and some things you're going to count some custom some tables with a u as custom but they're not and some that some are custom that don't have a u so let's talk about what those really are in detail but um the quick answer is you can't tell just by the name and use an X's don't mean they're custom doesn't mean they're not custom it doesn't mean they are custom so let's not focus in on the names even though it's really easy we're going to be really tempted to do that let's talk about the details that we go through and I'll show you where you look in your instance about how do I see how many custom tables I have which we have to see so we can map um in general hopefully as specific as possible in general um any out of the box table that comes from servicenow whether it comes from the store or or an upgrade should not be custom it should not be custom um if you if you see those in there and we'll we'll talk about a couple of these cases uh going forward if it comes from servicenow because I installed something and it showed up it should not be custom um and in store apps if we talk about apps if it is a servicenow store app it's not custom if it's a partner paid app if you paid for this app through the store for a partner app should not be have custom tables and if it's an integration category from the integration category you should not do that now for any of these if I add a new table it is user created whether it has a you or doesn't have a u any of the store things are not going to have a u so the whole scope isn't free and again the name can be really hard to tell but if you if I go into an integration app and I create a table that's going to be custom most likely going to be accustomed uh we have a fitting question around this uh for the partner apps from the store so Julie asks are custom tables that come from a free partner app on the store they are considered custom they are far spy yeah yeah they are yeah so that's the cutout we have here right if you get a free app it would be just when you pay for a partner app you're paying for the license it's embedded with it for those for those tables but if you have a free partner app um you're not paying for them so you'd have to you'd have to map them to a bundled subscription the app engine starter or if you have app engine you're good as well but the the free apps from a partner are just like you're you're creating them it's great it's awesome right you're getting a bunch of other stuff with them um somebody designed it saves you a lot of time um use your support but that there's no entitlement that comes for those tables so you need to put that those tables against one of the existing entitlements that you have um we'll get there's another question there we'll get to in just a second okay so how do I tell the difference between what's custom and what's not custom if I created it well every table you create should go into one of two tables that you you have access to you can go see which is the custom table inventory and the exempt table inventory the custom table inventory is UA custom table inventory I love how creative we are sometimes and then uh the exempt inventory is UA Exempted table inventory um and the the terms are in here I don't know why it's not exemptable inventory but it's Exempted table inventory if you want to look so when I create a table it's going to go into one of those two if it comes from the store it's it actually shouldn't be in either one if we don't consider it to be user created which the the store tables the integration apps we actually just consider not to be user created they won't go into one of these the other ones will if I create a table but every U table I create it's going to go into one of these two all right let's talk a little bit more about the exemption so you understand what's not a custom table so it's not a custom table there are certain exemptions uh certain table extensions that we exempt because extending them is just using the platform we're not charging we're not trying to charge you for using the platform we're trying we're making sure that when you're building new apps uh there there's some some Fair exchange of value there so things like seem to be CI when you create a new CI it creates a table that's not a custom table you not you as I don't care what the name of the table is if you're extending cmdbci it's not a custom table it is and that goes down the whole hierarchy right and extend that one and extend that one all of the extended tables and all hierarchy levels will all be exempt correct whatever it is no matter the exceptions the Exempted tables are based off of the base tables were Exempted thank you um import set rows import settings we create import sets we're not charging you for import sets we're not trying to charge you for import sets um you know the tables are there it creates tables but they all extend import set row we're fine um data lookups and DL definition again to use the pro to use service now you need to create these tables we're not trying to charge you for those they're user created but they are not custom there's a full list of these in the custom table guide which we'll have in the references uh before um it's a schedule posted on servicenow.com servicenow.com schedules.html you'll find the custom table guide um the one that applies to you is the one when you sign your contract um they don't change very often um but those are there um we'll get you the link to that it has the full list of exemptions as well as these other things that we're going to be talking about so those are extended tables that again not custom there's some other ones that we do look at that that are also not custom that come from kind of checking a box so if you use the data archiving process it's servicenow when I if I want to Archive incidents that are over three years old whatever the case is I I go to the archive tool I check archive I configure the archive rule it's going to create a shadow table that starts with ar um for archive um those are not custom archive tables are not custom we're not trying to have you pay for those tables again rotated table shards so if you want to rotate a table it creates shards of that table those are Exempted as well uh query Builder results this question came in they should not be there now when you use Query Builder it creates new tables for every every query you run those actually extend something else that's actually how we know how they're working but we're not trying to charge you for query Builder results as well okay so lots of tables that come through we have the custom table guide that explains it um and then there's a KB article um that you can search for on support this is the Kobe normal we actually went through and go how do we determine what's what um so the query Builder it explains this is how we determine what's a query Builder uh this is why this is how we determine what's an archive the rotated table shards we actually go look make sure it's a rotated table we're not looking at the name we're looking is it registered and where it needs to go so I I recommend that you uh take a look at the custom table guide that's in legalese closer to English the the KB explains how we technically are fingerprinting what's going on so you can understand what should be there and shouldn't be there a couple other exemptions we want to go through M to M tables now this one I do want to call out it's in the KB article but we are looking for tables that are registered in CIS M to m not just the name M10 we don't look for the string M to M um a lot of us might do that we just go create MTM but we need to look for tables that are actually registered as M to m whatever the name may be so if you go to system to M that's how you should create a table if you're going to use an m to M just creating a table and putting two references in that's not a servicenow m to M table even though it logically is even though the knit U might name it m to M we want to make sure that we're using the system to M table so that we know what it is regardless of the name so I remember there being a couple of questions uh back and forth around M to M tables are there any restrictions on adding fields to these there are and it's detailed in the custom table guide so the the m to M tables um we treat like references you know we know we need to use them and and just because you're going to add an m to M that again you're not you're just configuring it's it's fine sure um there is a restriction I believe it's three additional Fields based on what's created so it's going to create a bunch of fields um it's going to create the two references and uh this is created by updated by all of those um and then you can add up to three more fields and still have it be exempt and that was so that we could cover a start time end time and a state uh relationships I've had I've used those in trekking licenses I think um way back when yeah so so you know we we we're we want to make sure that it's easy a relationship and an m to M table there can be a start time and end time and a state uh normal so they're in the contract you'll see that up to three fields are are fine um if you're adding more than that then you're really creating a new table and then we want to we want to make sure we're treating that it's a table not not just as a relationship so again those M dams I'm going to say it again make sure you go to system to M to create it make sure it's got to register it's got a record a matching record and CIS M to M that tells me the menu to many table that's the table that we do not that we exempt um next is store table exemptions so we talked about this briefly but the store table exemptions um if it's a servicenow store app free paid doesn't matter if it came from servicenow it came from servicenow it it's it actually shouldn't be anywhere it might be in the exam table it is not custom um the UA custom table inventory is the one that you need to make sure you uh you protect and that it appears to be correct for you the exempt table just allows us to track and gives us some information about what's going on so that we can we know where tables went but the custom table inventory is the one that's really important paid partner apps if you paid through the store and to clarify if you're paying the partner directly that's not paying through the store it needs to be purchased through the store um so that we know that it was that it was paid um and then those those tables should be free if you go in afterwards and add a table if the partner comes in afterwards and adds tables on your behalf those are also not those are those would be considered custom what would be looked at to be see if they're custom but the tables that came with the app in the store are are Exempted and then integration apps anything if the partner extended their app and put that through the whole store release cycle thing that'll still be included but if they created the an another table on your instance then it's custom correct correct even if you don't know they did it the partner did it on your behalf which is which is what's custom and then integration apps if you get an integration app from the store uh paid free doesn't matter uh those tables out of the box are going to be Exempted um they're not going to show up as custom again if you go into an integration app and add new tables those are going to be custom grandfather table so some of some of us will see um I just want to talk about these a little bit uh for some of our older customers that came over you might have grandfathered tables grandfather tables are standard custom tables so very important to understand they are custom tables it's just a license we have for them so if you have a table it might be an exempt it might be out of the box if it is custom it will show up in the custom table inventory there's no separate inventory for grandfather tables shows up in the custom table inventory um then you need to associate the grandfather license to them it's just a license like it was an itsm license like an app engine license you're saying this table I want to be great having grandfather there's some special rules for grandfather tables generally you can change the subscription to a grant to a table to a custom table anytime you want to we're going to do that in just a second but you can do it anytime you want to not for grandfather tables there's special terms for these um they cannot be changed once they're assigned to a grandfather subscription they cannot be changed and even after the table is deleted it will still retain that subscription they cannot be reused they cannot be harvested every other custom table you can do that if you drop it go use it for something else um you you drop it you get it back do whatever you want to do you can change it when you want grandfathered once they've been Associated to a grandfather subscription they cannot be changed and even if removed you don't get that license back that those are the the special terms that come with the grandfather license um but you can add new fields to them you can have new access users that access them you can still use them use them whatever you need them to be whatever you need them to do they're not dead um they're not frozen they're still an active table that you can configure control at a flow to whatever needs to happen um but the subscription is what's gonna is what's gonna freeze in time all right so why do I why do I map tables we talked about what they are we've just spent quite a bit of time talking about what custom tables are but why why map them um and this is a simple answer is for this that custom tables are come with different subscriptions and you're we're matching we're saying this is part of uh this subscription this is part of a different subscription um the subscriptions come with different numbers these are actually I think these are made up some some subscriptions come with none integration Hub doesn't come with any tables with it inherently many of the skus come with uh five custom tables or 25 it's gonna say in your in your in the product in the description when you're looking at it and make sure you know what you're buying and what you're getting and how much you need uh the tables that come with it uh go well we're going to talk about this a little bit more but they're different amounts and so we want to have a table to say well this table is one of my HR tables I want to treat it like it's HR okay so let's get to that so if we get to essentially what we're doing for these tables when I map them is I'm treating it like it's an out of the box table for that app so if I have an entitlement for predictive intelligence with HR but not for itsm then we're saying well if it's mapped to HR this entitled The predictive intelligence entitlement should also be valid for this table we're going to treat that table just like it was out of the box which means the users that can access the out-of-the-box tables for that app can also access this custom table they're entitled to do that the if there's features that are only entitled for a certain app they're entitled for that app so you were telling us very clearly I want you to treat my custom table like is out of the box for this application and it's the other way around also right if a user has access to that table they need a license for that product absolutely that is the case too so if I create a custom table and I associate it to itsm and there's fulfiller access for that then whether or not they have ITIL whether or not they have access to incident problem or change they need to have an itsm subscription so we're going to talk about that a little bit more but how do we figure that out but it's very important that we have the right users mapped the the tables the people who use the table the features I'm using on that table best aligned to which subscription um and then it gives us some accurate reporting again each of the subscriptions um I'll jump back a slide have how many tables were included with that subscription and how many tables were using well the way we know what you're using is by which you map all right now let's get to how do I map them what comes through and how do I map my tables so there's two key things that we need to remember here um the best way to map tables is with apps the best way to create tables is with apps even in the global scope we can create a global app to hold my customizations any table that is in an app whether it's a global app or whether it is a scoped app we map the subscription at the app level so if I have a custom app which is to handle my catering orders for my cafeteria and I'm using an app engine license for that well then I'm going to map all that to app engine if I have a minor incident app because I want to have minor incidents I'm going to map that to uh to itsm most likely to itsm apps we map to tables in an app at the app level that's really the preferred way it's way easier to do it so we certainly recommend that there is a no if you have a bunch of global tables you can create a global app to manage those which makes life much easier and the subscription management part is very easy as well if you have a global table in a Glo in the global app in the global app not a global app I know that's confusing but if I have an old Global table um then that we're actually going to map at the table level because there's no better way of doing it but if I have hundreds of tables it can you know I gotta map hundreds of things uh to come through so and you can add you can add artifacts to an app later on so if you have tables already created in global scope you can pull them in when you create a global app correct we can go in and if I already have uh if I have 30 tables that are in the global global scope we can create a new app put them all in there and then map them as a subscription you don't have to do that so again we can do them table by time but there's a lot of benefits to that and maybe we should run a session if we haven't run that on on moving to Global apps we have the link in here that talks about how do you do those things it's really nice it gives us a lot of advantages to do that in subscription management is just one of those advantages all right and with that we're actually gonna go do a little bit of mapping um so I'm going to stop sharing and then start sharing real quick we're having some some great questions and one of the questions I think you already answered but I just wanted to surface it again what happens if you don't map them so if you don't map them that's a good question um we're going to ask you to map them uh to come through right now we're going to ask you to map them what can happen uh generally is that we'll just start treating them as app engine licenses or app engine so if you have an unrestricted user app engine license then maybe you don't need to map them because you're paying for it all anyway other than that you want to it's in your benefit to do it really because if we don't know we have to assume a custom table is a new app then that needs app engine and we need licenses for that but what you're able to do is say this is an app engine I'm not building a new app I'm just adding a new table for itsm with my 25 tables okay great we are already paying for those users you're already paying for this functionality just lets us know um but extensively we're going to come back and ask you to map it so that we know we don't we don't want to give you a bill that's too big you know we don't want to say there's a compliance issue if there's not a compliance issue but the way that we do that is by you helping telling us what are we what do we want to train to do all right so let's get into um into mapping tables so we're gonna do this really quickly this it is pretty easy I'm in subscription management I went to my subscription management overview I'm going to go to the custom custom application inventory that my custom application inventory is giving me a few different pieces of information so how many exempt tables do I have how many Global tables without applications do I have so these are ones I have to go map individually um how many grandfather tables which could be zero for a lot of us but it might be there and then and then all of my custom tables so these are all of my custom tables and we'll see the subscription that I have is nothing I have not mapped these I need to map them so if I want to come in um now I can do it here okay we can't list edit here because I'm in a report but I'm going to come in uh this is these are all in an app and then these are in the the global app well we talked about these are all going to be mapped together these are going to be mapped one at a time table um and you get a table so I just went in here to get a little bit better better view just clicked on the I clicked on the ones that were Global and then it removed it so this is the UA custom table inventory so I have all of my custom tables in here um both uh in a scope or in an application not an application these happen to be a scoped application but if it was a global application it would work the same way um we are not able to list edit here but I'm going to go into you get a table and you get a table I have subscription so I'm going to map this table I don't know if we're gonna see the pop-up do you see my pop-up nope nope all right well I'm going to map these to my CSM subscription this has a list of all my subscriptions we saw on the subscription overview and we're going to update that and when I come back here I see this is now part of CSM and you get a table probably part of CSM as well but if I go into this I can map this to a different subscription again it's a global we'll do whatever we need to do um so we'll do that and now we have it mapped there I can come into CSM you know what I don't want this to be CSM I want this to be itbm if I have itbm yep I do so my itbm again mapped it not a problem and now we're going to go into uh code change well you'll see I don't have a I can't edit the subscription here um and I'm going to point this out because I do this all the time and it still confuses me I go it's broken it's broken why can't I edit the subscription I read the blue text it is amazing how blind we can become the blue but subscriptions are now managed at the application Level we probably should remove now because this has been this way since Quebec so I'm going to go to manage subscription it's still broken right I can't edit the subscription well again it's actually what it says up here this is part of the application record I do need to be in that scope um so I'm going to switch to this application and now I can edit subscription um there is a view here in case you don't see it which is the subscription view that's where you have the subscription I don't think of the default view it's there I'm just going to switch to see real quick uh while that loads oh it's there it's here as well I'm going to go back to the subscription here hey one question in in the Q a panel uh so uh what What's the best way or where would you map these is this in uh prod only um yeah you're gonna do it in prod because the custom table inventory is created when you install the the tables um I I believe you actually can map you could map these before um uh for the for the table but the subscriptions may vary the sysides actually probably do vary um so you want to do it in Prime and even if you mapped them in a subpro you probably have to redo it in prod because the CIS IDs the references might be different I thought they actually only populated to prod we fixed that in Quebec so in Quebec you'll see them you'll see the subscriptions there you'll see them but again it's actually being down the instance pulls them every night your instance product and subplot goes to our license server every night and pulls the licenses that you have um that means this IDs are different the CIS IDs are probably going to be different um what if you clone from prod to your sub prods then it would be the same Society right and when it refreshes from the server it would just know it's the right one um it probably won't work that way it probably probably see the different subscriptions and change them um but I I I haven't looked on a clone um you definitely want to make sure it's right in production and the custom tables are definitely different because that is actually calculated on your instance so if I install the same apps and do the same things apply the same update sets I will have it will look the same in the custom table inventory but it will be different yeah Julie Julie has confirmed that in Q a and said it does actually persist throughout clones so the the difference is IDs okay oh well uh okay so uh uh okay so I I'm gonna set this to CSM and we'll update that and now we're gonna go back and then go back in history to my custom um table inventory and now my customer table inventory we mapped the application reconciliation app to CSM again I can come in right now and go I don't want that to be CSM I want that to be itsm and at some point I'll remember that it doesn't it's not to say autism and now they're all mapped to itsm so again we can change them whenever we need to change them whatever makes sense for you your users change change them but now I have them all mapped this is good if I come back to my application inventory things should look pretty good here um itsm itbm I can see how many tables are coming through if I go look at my subscription overview we're also going to see that the tables are used here so I have one for itbm and itsm is using eight out of 25 so we're all good we'll see all those go back to the inventory I'm going to bring this up real quick my exempt tables I'm just going to go look at this there's no action for you to take on an exempt table you'll notice there's no subscription on your exam table because they don't need a subscription this is just so we don't get we don't have tables that get lost um and here what we're seeing is that uh you get a table you can say open not this one or this one um these are exempting these are extending scented tables so they they're just not custom not custom uh import set row another one in here it's it's exempts right so we didn't lose it but it's there um okay let me go back here we're going to go back to a custom inventory I'm gonna go back here I but I got to see if I have if I have grandfather subscriptions on here I don't remember if I if I put them on or not um I don't but the the grandfather subscription is one that that you might have on here and again once you map it to a grandfather's subscription you can't undo it um and I'm going to point out in here in the custom table inventory the table name you I think the table name you might see is blank at some point in time because there's actually two table names on here and I'm going to personalize this and add my second one actually the table name is the table name so we're fine there there's also a field called table reference the table name is the name it will always be there even if you drop the table that was the table that was consuming that subscription the table reference is a reference to the table and systemb object if I delete the table this will be empty this will be you should never have empty references unless there's a grandfather table if it's a grandfather's subscription then the table reference can be empty because it's a placeholder and you'll see the original name that's in there so I wanted to talk about that a little bit we've talked about all the exemptions for the custom table inventory if you see something mapped to itsm or not back to anything and it doesn't have a table reference put in a case we'll fix it there were some issues in some of the instances that have some kind of junk that's left over especially in some of the older instances um if you see something that's wrong if you see something say something put a case in we'll fix it um you you may not have the ability to do this book but we can um so go ahead and do that put the case in if I see import set rows in here if I see query results we had a question about the early put a case in we'll fix it um happy I'm not happy to do it but I will do it um and like I'll be happier when it's always correct um you can see here these are these are are all custom mics I'm going to exempt but take a look at it it's really important that you do that because if it's if I saw an import set row here or a query result table we're going to think there's an unmapped table and that you're out of compliance and that's not the case so it's really important that we all have the right custom tables that what we see is what we expect is what we get uh okay so I think we talked about how do you map them at the app level app is great we can do it at the table level but make sure that your when you go look at one of these records we see this is at the globe this is not in an app if it was in an app that we're going to map it at the app level and if I'm at the app level that I'm in the right scope common things that we stumble on so we want to make sure that we check those things and get it right we have a new question um and Sharon asks if there are available tables safe for itsm is there any validation that the custom table is used by itsm so that doesn't matter right you can associate any custom table to any subscription as long as their capacity so so a couple things with that one you can go over capacity uh just like we'll let you go over users um we'll true up you could go over capacity well true up we're not going to stop you from doing it because you got to do your job right um you can go over capacity and then we'll chew up we'll figure out a good resolution for these things um but be aware right we want you to be aware we don't want you to be surprised the point we're showing this is that you know you're going over capacity when you've mapped your tables you're like wow I'm way over let's go figure out what we're gonna do to get in compliance right do I have the right things mapped or not um but we are not going to stop you from over allocating right first off second if I map a table to itsm now it is itsm um when we can't tell what is and what isn't right what data is going in there we're not we're not examining the table and going I don't think this that you're doing we trust you if you tell us it's itsm it's itsm now let's we're gonna with that we're gonna go in the next section and we're gonna talk about that a little bit more so I am going to stop sharing again um anything else that we want to see a demo on in here get it's all pretty simple I do want to show it um because the biggest question I get is the subscription's not writable again it's in an app or I'm in the it's in I'm on the app and I'm on the wrong scope um but when we do the right things it works right and it's fine the one note is if I grant if I Grand follow this the allotment type we see grandfathered and then it will not be changeable right once it's grandfathered it's locked if there's any issues with that you need to put a case in um so that we can address it but contractually you're not allowed to reassign them so it's if it's wrong it was just done wrong that whatever the case may be and actually we're in here I'm going to show this as well um since I I thought of something I want to demo so I'm going to come into my tables again none of these are grandfathered but if I come into uh and you get a table I'm going to go back to uh I'm gonna go back to Global and I hate to disappoint everybody but you get a table but not you so we're going to delete this table and when I delete this table this is not a grandfather table we clean up the custom table inventory it's gone it's gone right so we if you ever if we want to look at it the name uh is is a string the reference is a reference to the table you should never have anything without reference unless it's grandfathered this this instance doesn't have any grandfather licenses I have an Associated grandfather license I should never have a table that doesn't have a reference okay we want the custom table to be clean if you have a question put in a case we will get you the answer we'll clarify what it is my ask is that you go look at the the custom table guide and go read that KB make sure you're comfortable with this doesn't look right to me um take a look at it and then if it doesn't look right to you put a case in we will we will resolve it most of these are fine but there there still is a little bit of noise out there all right and we're gonna stop sharing and we're gonna go back to this the presentation done with our demo let's talk about how do I choose between subscriptions one of the most important things right we talked about that um so goals for mapping what are we trying to do what do we understand why we need a map when we understand how to map it but what are we trying to do so we want to make sure that users that access that table have the entitlement to access it we all want to be in compliance we want to minimize the number of users of extra entitlements for users that don't that's the only thing they have so we talked about itsm if I have a table where none of my users have ITIL there's they have no other role but I map a table to itsm and now these users are fulfillers on itsm I now have to buy them itsm licenses because that table you've told us you have told us treat this like it's out of the box so if I have fulfillment access to this custom table I have to pay for it we don't you know maybe that's the right thing maybe it's not um but we don't want to pay for users when that's the only thing that they're they're using we don't want to pay for a bunch of extra stuff that they're not going to use that comes out of the box and the same thing we want to minimize the people um who don't have access who who have entitlement but not access so if I have a thousand itsm fulfillers and only five people need to access this table maybe I don't want to bundle that to itsm maybe I want to buy app engine for five people right maybe that's it what makes more sense I don't want to pay for stuff I don't want to pay for people who aren't using the out of the box stuff and I don't want to pay for custom tables for people who would never use it right it's a balancing act so what do we need to consider we need to consider which users are accessing it um so if we're talking about itsm CSM app engine that are paying by fulfillers who accesses it matters following on to that the access type how are they accessing it are they just requesters doesn't matter right it doesn't matter for the filler based stuff um but which users and how they're accessing it really matters for itsm CSM app engine and itbm if I have itom and it's or secops something that is capacity based that's not based per user we only have a limited number of tables but how they use it doesn't matter but you need to be aware of that to come through the next is the existing entitlement do those users already have itsm do those users already have CSM because this could be this I mean if I'm doing configuration and I'm I'm creating minor incident well yeah you already have itsm all the users you know 90 of my users need to use it it's a great fit but if they don't have the entitlement maybe I need to look at buying a new entitlement because it's actually going to be cheaper than buying more of something I already have and then capacity do I have more tables so something like itom generally comes with five tables well that's five um there's no per user restrictions but it's only five tables so I want to make sure it's the right ones and again when we talk about icon extending CI doesn't count new new class types doesn't count it don't count and them still counts so the numbers are there for a reason because generally it's enough to to configure what needs to go on once we count the exemptions but these are things that we need to think about um again how much capacity we have we're on the subscription overview we see for each subscription how many tables are included and how many we're using again the using we can't figure it out you're telling us by mapping um so the generally I recommend is go map them and then see where you go map them based on what you think it's supposed to be there again if it's in the app level it's going to be pretty easy for you if we have 100 things of global you got to think you gotta do a lot more thinking than I like to do see how many are there and then we'll figure out where to go but just go through the exercise once um go through it once see where you're at and then we'll figure out how to adjust from them so let's go through a couple of examples that I want to talk through so just as the basis for this customer that we're talking about um my customer entitlements I have 500 itsm Pro fulfillers comes with 50 tables I have 250 app engine fillers unlimited tables I love this one unlimited we like to build it is always good unlimited is always good right um that I have 25 000 subscription units for item Health has five tables I have um automation Engine with 100 000 transactions or a million transactions whatever it comes with now no tables so that's to throw you off just so you know don't tell your friends and my total users on the instance are 9 500. okay so this is the basis that we're going to make the decision this is the customer we're looking at so from here we're going to create a table called minor incident I'm creating it in global because it's itsm and a lot of stuff's in global probably should still do a scope but I didn't um so I minor minor uh incident extends task task is definitely not excluded if I extend task it's going to be a custom table just it's going to be a custom table and it's accessible I reused a role it's accessible by incident right there are 500 because of the incident right there's 500 fulfillers on this table I mean they have fulfiller access they're writing to every record so I have 500 table fulfillers there's no requesters everybody who's coming to this is a fulfilling how many of those 500 have itsm all 500 how many don't have uh itsm none of them they they all have they all have it how many of them have app engine licenses 50. and how many don't have app engine licenses 450 right simple math in here when I look at this it's pretty clear to me I'm going itsm everybody who needs it has it everybody who has it needs it I'm not paying for anything extra great great uh going back to one of the questions that came before are they actually all fulfilling I don't know but they all have the right to fulfill um they all have access they all have the right to fulfill they all need the only Advance item to fulfill were a good matchup the the right the right access is the the clue right here because requesters usually you don't have Global right permissions they can create and maybe they can comment but they cannot write on a table right this and I'm right is the thing there's a little bit more to it about whether the right is in there now the right in this case actually does mean right to all yes that's what that means on incident that's what we did here it's a custom table so there could be some Nuance to it um but ostensibly you see right you can write to all the records you're fulfiller um itsm is it and again I'm not I don't have any extra this is this is a perfect perfect configuration table right and in this case I'm considering minor incidents being configuration it's fine it's fine okay um next next use case uh I created an incident to CI M2M table out of the box we only have one CI I believe um and I created an MTM because I actually have multiple CIS on my incident blah blah blah blah quick answer here it's an end to elements exempt we don't have to map anything remember the exempts don't even have subscriptions so if I have this M2M and it shows up on my custom table what do I do Lisa said put in a case we put in a case yeah um okay so again we're not mapping it for things that are exempt the custom table should be custom tables if you have any questions put a case in read the read the custom table guide read the KB put a case in if you need to um next I have uh Cafe orders um for Acme Cafe orders this company name is Acme we're gonna go with that even if it was a free partner app let's say that Acme was was a partner they put something in the store for a free app for your Cafe orders doesn't matter right again it's not assuming it's not paid um the table is Cafe order it extends task so it's not going to be exempt it's accessible by the cafe manager role and they're the users for this have no other roles on the instance this is all they can do is put Cafe orders in uh or the manager so on this table it's not a huge app there's 25 people who have fulfillment access 5 000 people who have request your access so not all 9 500 users of mine five thousand a good chunk um all of those fulfillers or none of those similars have itsm licenses none of them have itsm licenses today five of them have app engine licenses today and 20 don't for this case I'm going to pick app engine because I would rather buy 20 app engine licenses than by then 25 itsm licenses right there are only 25 fillers which is fine um but I'm going to buy 20 app engine licenses rather than uh than 20 20 app engine rather than 25 by itsm yep good all right um and also with app engine app engine's not app at a time so there's those 25 users can actually use any app engine table that they need to from that out right so I can do more and more and more and I won't have any incremental cost um if I put them in itsm I'm going to be bound by those itsm tables well as long as they have uh the permission via roles to access the secure entitlement wise thank you they are the entitlement to that you don't have to pay anymore for it yes because I build more apps and they and they need to be fulfillers uh there's not going to be an additional charge but of course security trumps all okay uh so that one this one's closer right maybe I want to buy the 25 licenses that's not that big of a deal but imagine if this was um 250 licenses and only five had access right do I want to buy 250 um itsm licenses for people who wouldn't use itsm otherwise or do I want to buy a couple more app engine licenses uh now I have DSN DNS request a new table um Acme DNS request there's 1500 fulfillers that's a lot of fulfillers um no requesters they're all fulfillers uh it extends task again right I have some change to DNS that I want to have extends task it's not going to be exempt um there's a user role that comes through um none of them have itsm it's a little weird but let's go with none of them have itsm 25 of them already have app engine what do I want to buy um it's clearly DNS requests makes sense that it's supporting itom um I don't want to buy itsm licenses for people who aren't going to use it I don't want to buy app engine licenses who otherwise don't need it this is why we have those tables right it's a limited number of tables so I want to be judicious I wouldn't have used item for those other ones to save a license or two licenses but 1500 licenses this is what we're doing this is what we're trying to do all right um with that um I yeah back to Lisa no no that's fine um so while we look at this I'll start my feedback Bowl I'd love to have your feedback how you liked it today with Adam I thought it was super interesting it's especially interesting to those who have already seen the last session I've linked that in chat so if you haven't yet make sure to to watch that I'll also put it in the details of um the blog post and as you see this this is the academy the platform Academy so I am happy you're here we do this every other week um would love to have you back again and uh we'll have some more topics this year in two weeks we'll speak about some ETF news that aren't public yet so make sure to join us in two weeks um and then we'll have one last session on December 8th and that's all the Outlook I have for this year we'll uh pick it up again on January 5th I don't think there are any more questions um I thank you everybody for joining us today thank you Adam for for uh teaching us all about mapping custom tables and uh where to go and what to do if the field is read only because people will get confused when they see that um so if we have anything else to add no I will I will say that if you have any other questions um the community is a great place to ask them yes um on how do we do things what's the best way to do things but uh thank you for some great questions that came through absolutely that was good and hopefully this will help you explain what do you what do you need to do and help you do that help you take care of that so we can get really clear crisp correct information and subscription management awesome well thank you again uh for being with us today and and uh showing us this all of this info uh Adam and I will see you all in two weeks I hope bye
https://www.youtube.com/watch?v=3LjYXKxEQhM