Get started
Learn how an LMS connects with Administrate to streamline training operations, improve data flow, and support scalable learning delivery.
Administrate is not an LMS, it is a training management system, so the obvious question is how the two work together. John Peebles, CEO, and solution engineer Kevin answer it.
You’ll see how to connect your LMS to Administrate via our API, which uses GraphQL. We also show you how to connect Administrate to an iPaaS system such as Workato.
53:13 watch · 9,415-word transcript
Auto-generated transcript — may contain errors. Tap a timestamp to jump the video.
Alright. Welcome everybody to another LinkedIn live here broadcasting from administrate intergalactic headquarters. I am really excited today to be joined by Kevin, who you can see, over on is it to my left or to my right? I'm not actually sure because this might be mirrored. Kevin is a solution engineer, an architect here for us at administrate, and, you are broadcasting from your intergalactic personal headquarters in, Minneapolis. So, Kevin, why don't you introduce yourself, give a little background real quick, and then we can kinda dive into what we're discussing today, which is how administrate integrates with most LMSs and how we can get that done in just a few days, and why that's important and and so forth.
So, Kevin, you know, tell us something about about yourself that that we don't know. You already know I'm a big nerd, but, I do love technology. And even though I would consider myself an engineer, I think where I really enjoy doing things is making an experience a lot easier, a a lot less thought intensive, basically just simplifying things so that you don't have have to think about them and leveraging technology at any kind of opportunity to do so. So maybe you already knew that, but it sounds a little office spacious when you say, I'm an efficiency expert. That doesn't bode well. Gotcha. Yeah.
And so your job is when, a prospect becomes a customer, then there's an implementation process, and, you and part of the implementation as part of the implementation team will really work with folks and customers to figure out what is the best way to solve the problem because we got a pretty complex solution here. There's usually a lot of different ways we could solve a problem, but your one of your big roles is to make sure that we solve the best way. Yeah. Exactly. You know, with with something like learning, you would think that there are just some simple steps and you need to get your contacts and a few other things, but there are so many moving pieces within a training organization that you really do have to take a holistic approach to all of it. Make sure that you're taking everything into account when you're configuring, building, and setting things up.
Administrate is such a flexible platform that each customer does get to enjoy kind of a customized experience. But with that, we wanna make sure that we spend the time to make sure that they are using, pieces of the system that bring them value in the most efficient way possible. It's a process. Yeah. Absolutely. And I forgot to mention today's broadcast is also sponsored by, Lemsip, which I have a packet of right here in my hand. If you're an American and you've never heard of Lemsip before, it is a cold and flu remedy. I woke up this morning. You can kinda hear it still a little bit in my voice, and I was almost out for the count. But all you do I never leave home without this. It's my travel tip maybe for for today. Get a pack of Lemsip. It tastes horrible, but you put it in nonboiling hot water.
You'd grimace, and you drink it. And, you know, then you're you're up and ready to go. So, feeling much better as a result. I I'm going to do something. When we were testing this previously, I forgot that I hadn't full screened my, my, web browser. But I wanna pull up some slides to talk about the agenda for today. So, hopefully, yeah, I forgot to hit that one button. That's okay. Here's the agenda for today, folks. We're gonna do our normal intro, greetings, salutations, thanking our sponsors, which we've done. Talk a little bit about, why do we wanna integrate learning management systems with a platform like administrate. And, and then typical integration workflow, Kevin and I will walk us through that.
And then when typical won't work, which happens from time to time, then we're Kevin's gonna take control and really get into some detail around how we can solve these problems and get get folks, going in a matter of days. So, real quick, just going back to the first question. Why is it important to integrate administrate with a learning management system? And for context, if you're just tuning in, administrate is a training management system, and that means that we focus predominantly on the classroom scheduling challenge that training teams have. So our customers tend to be large multinationals. They have training events going all over the world, hundreds and sometimes tens of thousands of students, hundreds of instructors.
And getting at all this scheduling challenge kind of, you know, done at scale is very difficult. Folks are using spreadsheets. It's time consuming. It's intensive. When things go wrong, it can be a real burden. And so that's our sweet spot. And learning management systems, obviously, are not really worried as much about physical classrooms or even virtual classrooms. They're much more concerned about that self paced learning. And that's a that's an important part of the, the learning experience, but it's not the only part of it. And so the big question is why would we want to integrate with a learning management system? And I think the shortest, simplest answer to that and, is is simply that learners and usually the rest of the business or organization want to be able to see a comprehensive, cohesive view of what has happened.
Right? And so if I'm a learner, and I'm employee of a company and I go and I register for a classroom based training. I arrive. I take my class and so forth, and then I do some LMS work or some elearning on the side or as part of my job and getting a credential or something renewed. I wanna be able to see that I've done both of those things in one spot. And it's not just me, the learner. It's my boss. It's HR. It's everybody. And so by integrating a learning management system with administrate, you can then have the option of presenting to your learners or the rest of the organization this unified cohesive view. Right? And, in terms of learning management systems, I think what what is the over under now on how many learning management system customers tend to have, Kevin?
I think for for a long time, it was kind of around one, and it started creeping up to maybe two. And then we've seen some some real interesting customers where I think the the the largest or the largest number I've seen has been thirteen, and they eventually got it down to five learning management systems. But what what's the over under these days on on learning management systems at a at a customer? I don't know that I see too many double digits anymore. Mhmm. But I would say that, having two or three is pretty pretty darn common, at least a lot more common than you would initially think. Yeah. And that's not, like, necessarily a bad thing either. Right? It's not necessarily somebody made a mistake or anything. Sometimes, you know, routes that we see multiple learning management systems occurring is acquisitions.
Right? You know, a company acquires another company. Another route is you have something that's very specialized. Maybe it's for a specific vertical or, you know, just one team within the business needs that type of experience. And so, you know, this isn't this isn't bad, but, again, it starts to fragment that learner experience, that administrative experience, the the view that the rest of the business has, and it can get it it can get pretty ugly pretty quickly. And what we don't wanna see is people having to ship around spreadsheets and flat files and all that stuff manually because then it doesn't get done or there are errors and and all that stuff can creep in. I see a lot more of it too when you have organizations that either have different target markets, if training is their their primary deliverable.
But, also, additionally, internally, you train salespeople very differently than you train your technical staff. And so sometimes those necessitate different systems. That's right. But you you're right. It does all come back to that the scheduling, the pain, keeping track of every moving piece. The ability to do that within one system, report back, that's extremely powerful. Okay. Okay. So we've discussed kinda why integration is important. And, now it'd be probably interesting to pull up an example, which is how does this normally work? How does this typically work? Right? So I've pulled up a slide, that we use a lot in our sales process actually, and it could could be to customers that have already come on board and they're interested in in now pursuing this LMS integration or could just be this is a big, you know, part of the reason that they're they're curious if if we can solve this problem.
But this is a slide that we pull up and we talk about in terms of how does administrate and an LMS integrate. Now in this example, we've used Docebo. They're, a great LMS. We've, have a number of customers that are using them, and it's a good outfit to work with. But you could replace that logo with a cornerstone or, you know, you name it. There's a thousand of them out there. Thought industry is another great system that we see a lot. And, and it the reality is is that while the individual particulars might change in terms of field names and so forth, the pattern here stays remarkably similar. And that's good news for us. Right? Because we're trying to make it easy to to integrate to a bunch of these different different systems.
So we can walk walk you through this, but, basically, there's a few assumptions that we put at the top of the slide over there. And that is, administrate is the source of truth for classroom based training. Now this could be virtual instructor led training or just old fashioned classroom stuff, or some customers now are doing a hybrid approach, right, where half the class is on Zoom and half the class is in a real classroom. Doesn't really matter. The idea is, that work and that kind of instruction is the domain of administrate. And then, conversely, the LMS will be the source of truth for all elearning, or LMSes. Right? If there's elearning being done, it won't be in the administrative platform.
Now that doesn't mean we don't support e learning, but, you know, we don't wanna muddy the waters here, and we wanna good clean separation. We know who's responsible for what. And so from an administrative, perspective, the team that is responsible for the classroom scheduling lives and breathes within administrate, and the team that is developing elearning content and responsible for that will live and breathe within the LMS. And then in terms of learning paths, this is kind of a customer preference in terms of where that use case goes. So some customers have learning paths already set up, and they're really happy with them within their LMS. Some customers, are like, look. We've got multiple LMSs, and we've got classroom instruction, and we wanna make sure that we can have a learning path that encompasses all of these different types of instruction.
And so, you know, depending on what your your needs are, we can we can figure out a a way through that because administrate does help in that in that case to coordinate more multiple different LMSs with with a learning path. But that's kind of something that's not, you know, in scope for discussion today. And really, very quickly, how this works is you will create a a course within administrate. You'll say that, hey. We need, you know, to teach something. What's what's your favorite course example, Kevin? We talk a lot about the burning helicopter escape course, on these live events. Do you do you do you have a favorite one? Oh, man. Well, you kinda hit the nail on the head with the burning. As soon as there's a fire involved, I'm in. Alright. So fair enough. So we we create the course, and then that course, will get pushed over to the LMS.
And then, once it's up and running in the LMS and, you know, again, it kinda depends on how you wanna think about things. But in this case, students get registered onto a course and administrate. And when that happens, we fire over those registrations to the LMS. Now most modern LMSs were doing this with a a webhook or, you know, which is a real time kind of, event that, we fire off when when this thing happens. Some learning management systems, and we'll talk about this, in a little bit, will need maybe a flat file or, you know, some other type of, you know, batch based process. That's fine too. But, you know, it's nice when we can use webhooks and have nice things. And then what happens is if you want to make sure that the learner record is up to date in your learning management system, which we heavily recommend, the progress and results from those classroom activities get pushed over.
And if I move my head out of the way slightly, if any elearning happens within the, LMS, various classes or things are completed or whatever, we wanna see those push back into administrate because, again, we're going for this cohesive up to date record. And the same thing goes if you're using your LMS as a registration pathway, for students maybe to self serve and register onto things, then we wanna see, those registrations come back into administrate. And, ultimately, when basically an achievement is awarded, which is in our system in administrate, that is kind of, the credential that you are awarded when you when you complete a learning activity. We wanna push that in most cases back to the LMS.
So pretty straightforward. Did I miss anything there, Kevin? No. I don't think so. All the there's a ton of details, but Yeah. That covers. Okay. So we'll walk through real quick here, an example, of a detailed workflow. And then, we'll kind of back out and talk about what happens when a typical LMS integration, just won't work and some reasons behind that. So on the detail workflow, as you can see here, basically, administrator would go in and create a course template within administrate. Now we've talked about course templates in, a previous LinkedIn live that we did a couple of, episodes ago. We'll probably do a deeper dive on that in the future as well. But what this is is this is basically a pattern that says, we need these things in order to run this class, and it could be we need these instructors.
This this group of instructors are qualified. We need to have this equipment. We need to have, you know, all these things kind of lined up and ready to go in order to run this class. Now traditional LMSs don't have any concept of a course template like what we're talking about because the way that works with an LMS is you just build out your content, you upload your score files, and you hit play and or, you know, away you go. With administrate and with classroom scheduling, every time you run a class, there are decisions to be made about who's gonna teach it, where is it gonna go, are there is there availability in these areas and so forth. So we don't actually push, a course template over to an LMS. What we do instead is we push kind of the course over, and it it is kind of a placeholder for when we eventually go to schedule that classroom.
And that's step three. In administrate terminology, a scheduled course or a class that is act actively being run is called an event. But, basically, we go in, we schedule an event, and at that point, it will get pushed over to the LMS usually as a session or it depends, you know, on the the various different types of of how that works. Then learners get registered. They get pushed over. Progress can be recorded in either side, and then eventually, the achievement, will get awarded. So I'd I've blitzed through that, and, you know, it it sounds pretty straightforward, but as you mentioned, Kevin, there's a there's a lot of detail in involved. And I think what we're kind of interested in talking about today is eighty percent, eighty five, ninety percent of customers can use that kind of basic integration, and that can be ready to go, and that can be done in, you know, couple hours, couple days, whatever.
But there are a significant a nonzero, a significant, you know, portion of customers who are like, yeah. That actually works for the one or two of our LMSs. But for the third, we've got some complications. And complications could be from a variety of different reasons and and driven from a variety of different things. I'll just riff off a couple of them off the top of my head, Kevin, and you can chime in on some of the ones you've seen. But, you know, things that I I see a lot are there might be, an LMS that is a legacy system. Right? And it's maybe several versions behind the state of the art. It hasn't been upgraded or whatever, or there might be some sort of homegrown thing that is out there that that needs to be, hooked up with.
So that's kind of one, complication area that we can see. Another would be, perhaps there is some sort of, you know, workflow that needs to be triggered or happen when students complete things. You know? So not only do we need to notify the LMS, but there needs to be some other system or something that needs to happen when when, you know, various milestones of that integration are are completed. And there you know, there's a whole bunch of reasons here. Some some LMSs, they just won't support various, various things that have to happen. And so we, you know, the standardization is, is a little bit weird, and and sometimes the fields are not necessarily configured in a standard way. So maybe, a customer has drifted off maybe the best practice configuration for an LMS.
Kevin, what are some of the ones that that you've seen? Yeah. So it really, the first one that kinda comes to mind is, a situation where a customer is having their learning system talk to their HR system to confirm that somebody is up to date with their certifications and their their training requirements. And quite often, either the HR system is old and difficult to integrate with or the LMS system doesn't provide the information in an easy to digest format. So, yeah, you can run into things like that as well. Okay. And we've got a couple of different ways that, well, may maybe two main tools that we use in these situations. And we're gonna start with the the less technical one and then move into the more technical one.
So, one of the one of the tools that that works really well is, what is, I guess, a class of systems known as a integration platform as a service. Right? There's a lot of these various different systems. You may have heard of some examples of these or, you know, maybe MuleSoft or Boomi is another common one. Workato, which is what we use. And, and these are great. A lot of customers will have this own their own platform that, that they can use and and hook up to our API and so forth. But some customers will either not be able to access that because IT owns that. That's a pretty common thing actually, which is the the training team, you know, unfortunately, you know, there's a whole bunch of reasons for this. We'll not be able to actually use the integration platform that's out there.
And some customers are like, you know, that's that's great, but we don't wanna have to deal with this. So we'll work with them to to figure out a way where we can, either do that work for for the customer or or bring in a a partner to help with that work. But I think very simply, and,
I didn't introduce myself as a as an engineer at the beginning of this, but I I have an engineering degree. Kevin will debate on how, current or relevant that is. But this is this is basically programming via kinda drag and drop and workflow. Right? So I think, Kevin, you're gonna kinda walk us through maybe an example of, how how we can do this and and get administrate integrated either with a standard system in kind of a nonstandard way or a nonstandard system. So, I think you're you're gonna share your screen and and show us the goods here, take us on a on a walk through? I think so. Alright. Here we go. You are sharing your screen. Alright. So what we're looking at here is the Workato interface and this particular recipe, is responsible whenever a learner gets registered onto a course within administrate, this would be responsible for pushing that out to the LMS system.
In this particular example, it's Docebo. But, really, one thing that's that's powerful about an iPaaS platform and being able to lay this out is, yes, I'm a an engineer at heart, and I, you know, would prefer code. However, this makes things very easy to prototype, very easy to display, explain exactly what's going on. And one thing that's really nice is we can collaborate with our customers, with their own integrations and with their own code. So here, every recipe within Workato has triggers. So how this is called to action. In this case here, we are using a custom webhook from within administrate.
So whenever a learner is registered, this particular webhook will fire. One thing that I will get into that is unique about our system, and really it's because we leverage GraphQL, is the ability to customize these payloads. So one thing that's really powerful with our interface is you don't have to go back with additional queries. If you craft things correctly, you will get everything you need to complete this transaction on your trigger. Okay. So Let me let me interrupt real quick because this is, like, one of my favorite features, Kevin, and, I just wanna make sure that we're kind of articulating this in in ways that, everybody can understand. So, normally, when a webhook fires, it's just an event that has happened within administrate or, you know, in our or in our case, administrate, we're saying that a new learner was added.
Right? Or a new course was created or whatever. In most systems, when a webhook gets fired and this is very common. Right? Almost every, platform out there will have some notion of a webhook. But when a webhook gets fired, normally in most systems, you just get what you get. Right? They have a payload, and normally, it's kinda just, hi. You know, this event happened, and, it was this ID. And maybe you get a little bit more information, but that's about it. And then if I receive that message, which is just learner added ID one two three, now I have to do a whole bunch of work to go out there and say, okay. Let's now now we're on my side. I've I've received your message.
Now I need to do work, and I need to figure out things like what was the learner's name and what was the first name, last name, and, you know, maybe how old they were and, you know, any other information that I want. And I have to go and query the API from the system from which that webhook was fired, and then maybe query a couple different places to get all the information that I need to finish the job of that of handling that message. Right? But what you're saying is, with our webhook system, you can define exactly the payload that you want to receive when you set up that webhook, and, and that's super, super powerful and and really convenient. Yeah. Exactly. I I I kinda think about it as going to the grocery store and having a list of ingredients to make a cake, versus taking advantage of the curbside pickup.
And, basically, you just tap a few things, and your order is waiting for you when you pull up. There you go. I I won't dig too deep into it, but you can see here, at least in this initial query, there is an ID field, and that's where we pull down all of the data. So all of this happens before you even receive the webhook. Everything just comes as one package ready to go. And, of course, if you don't have it set up the way that you want, you can customize this at any time. And that ID is the ID of your preconfigured webhook payload. Is that am I understanding that correct? Yeah. Exactly. It it's whatever object fired the webhook. So in this case, it would be the learner ID. And to kind of expand on that, one of the other really cool things about, our API is that not only can you provide that data, but you can provide all associated data.
So a learner is is kind of an abstract thought, but, essentially, it is a person taking a class. And so if we have the learner, we can actually drill down to exactly what class they took, the title of the course template. We can pull up how much the that particular student paid for that course, all of their training history. So there there was really no limit to, how many branches you can go down from that initial object. I think that's really powerful because, even on top of getting all of the data that you need, you don't have to reach out to additional entities. You don't have to reach out to contacts and classes and courses. All of those other things that you need to gather that data, it's all done for you, and it's all part of the same query.
Very cool. Okay. So we've got notification that a, what, a learner has been added or what yeah. Yep. And we get a result schema back from it. Every iPaaS system will deal with this a little bit differently. But this is just a list of of data that might come back. And and it looks like Mercado has introspected what has come back into, things that I can now use within their user interface. Is that is that what I'm seeing? Correct. Yeah. Yes. So it it correctly interprets everything into now I've got these building blocks from the API, and it does that all automatically. And that's pretty powerful because, I don't have to do that work myself as an engineer.
Right? Yeah. Okay. Yeah. And, actually, one thing that's pretty cool is this particular example is just a node, just a single object that gets returned. Mhmm. But if it suits you better anytime that there is a new person added to an account, let's just say, you could actually have it list all of the contacts underneath that account in this particular webhook. So just to kind of expand on, there really is no limit to to what you can do with the data here and how you'd like to get it back. Okay. So that's what step one in the recipe? Yes. And one other piece I do wanna cover too is is trigger conditions. Those are pretty powerful because you can prevent unwanted webhooks. So unwanted calls, unneeded extra, bandwidth and activity, you can limit that by setting triggers.
You can also have multiple webhooks in that same methodology. Okay. So give me an example of that. Is that, maybe I register a student onto a class, and then maybe I go back in and update that student's information real quick, and maybe I do that four or five times. Is that kinda what you're saying? And I'd get a webhook each time, but I probably don't need to to respond to all of those things. Yeah. So one thing I have seen is kinda going back to that HR example. I have seen situations where training companies, people that sell training, still do it internally, and they want to take different types of actions on internal users that complete training. So that way, you can actually have a learner registered webhook for different accounts.
So they have them for their internal and external. Gotcha. Okay. Cool. Yeah. So that's step one. After we've got all of our information, into Workato, we do a few things in the target system. So in this example here, we do a lookup of the user, by search text in Docebo. It's actually just done by email address. And then we go out and we pull the course information. One other thing I I do wanna point out is that administrative is built up It's built from the bottom up to, make integrations with other platforms easy. And so we store external IDs for all of the different systems that we synchronize with. So a lot of this that you see is just kind of rudimentary.
But, typically, we would actually synchronize, administrate with the external system using external IDs. And we do that with Salesforce, Docebo. We can even synchronize with multiple different systems on the same object. So that's a pretty powerful feature, and that's also why we have to look this up. This would be assuming that the target system was in operation long before administrate came along, so we need to be able to handle it on an ad hoc basis. Just a few other couple things here that happen. We make sure we got a user ID, and an ID back, and then we check to see if they are enrolled in the course. And if they're not enrolled on the course, then we enroll them.
After we are done with that, we do update a custom field and administrate. So just as a a an aside on this, there are multiple places within administrate that we can store the results of a synchronization. We do have an excellent external log utility, that separates all the logs out by a job, and we can control exactly what goes into that log system from here. In this particular case, these pieces of information are being updated in custom fields, and that's another very powerful piece of our platform that probably warrants a completely different conversation. Yeah. The the architecting and the modeling of a customer's data, is one of the more critical kind of challenges that Kevin and his team have to grapple with, because for a couple of reasons.
One, getting the right model to start off with is so important. If you model it correctly, everything just kinda feels easy from there. But the second reason is because most of our customers are using spreadsheets to manage training and usually multiple spreadsheets before they come to administrate. That means that there's kind of a data cleanup and cleansing job, and that that's probably a whole entirely, separate, LinkedIn live discussion that we can have. So, I'm not gonna sidetrack us too much, but modeling that data and making sure that we understand, you know, these are the reasons we're doing this, and these are the other systems that we're gonna connect with and so forth is so important. It's and it's, it's really great when you get it right and, you know, not great if you if you don't. Okay? Yeah. Absolutely. I will say on that data sanitization topic, if you wanna do that, that would be a good twenty four hour LinkedIn livestream.
Okay. And the other cool thing is, like so, you know, I haven't programmed for money in quite a long time, but what I love about this and what our customers love about this is you don't have to be a programmer to to watch along and and read this and understand this. In fact, it kinda looks like, you know, some of the tools and configuration and marketing automation platforms and stuff or, you know, work things that I've seen, you know, elsewhere. So we're we're programming here, but it doesn't feel like like that, does it? Yeah. Yeah. Exactly. And and, really, you do have those powerful tools under the hood if you wanna use them. Workato, for example, allows you to leverage Python code as well. So if you wanna inject some Python code for more complex operations, you can do that. But I do love the way that this presents from the aspect of being able to show everything in a nice flowchart, and so everybody can follow along and understand.
Like you said, you don't need a program, a programmer's mind to understand that if this is not present, it's pretty easy to understand if you just look at it. Yeah. And we've we've actually walked customers and prospects, whole team through this before we've hit the live button, haven't we, Kevin? And we're just like, let's just double check, and we walk everybody through and, you know, everybody is following along, and it's just really, really clear. And and we love to see that because, you know, that helps us not make mistakes as well. By the way, we pronounce Python, Python here in Scotland. Python. That's a that's a fun fact, for you there. Okay. Keep going. I think that's about it for this particular integration. It really is that simple. There aren't a whole lot of things that need to happen, and this probably looks a lot more simplistic than than you would expect because there are a lot of things that are bundled underneath.
So for example, our connector that is, built inside of Workato allows us a ton of freedom. And it has all of these webhook types that are built for us already. So a lot of the things that I would consider to be the the heavy code is all under the hood, and that work is already done for you. Yeah. And let's talk about that because I think it's a good way it's a good point to segue into, okay, Maybe I don't wanna use Workato for whatever reason. Maybe there's engineers on my team. Increasingly, we see training teams. Usually, really high performing training teams have either access to or full time engineers on the team, which is great. There's could be a bunch of reasons. Maybe you want to look.
Some engineers just don't like this kind of graphical, GUI programming either. Right? So whatever the reason is, you may want to go and do things the, the, kind of direct way, which we'll talk about in just a second. But in order to do that, I need a bunch of things that that Workato is kinda giving me for free, if you will, which is I need to do a bunch of that setup work. I get the credentials and so forth so I can actually query the API. I need a place to run my code because that's a runtime is what Workato provides. You mentioned some of the logging stuff that you get. A lot of the you know, if I need to schedule something or whatever, it's got scheduling components built in. I can always break out into code if I need to. But, you know, what are some of the other things that you get for free for Mercado?
But, you know, maybe what why are some of the what are what are also some of the reasons why you'd wanna code it directly, Kevin? So I will say that one of the things that I really, really like about Orkado or the graphical aspect of it is when you are trouble shooting, it is very easy to line up exactly where your error is occurring, because Workato will log each job or each initiation of the recipe that comes through, and it can highlight exactly where in the script you ran into a problem. It will highlight it. It will tell you what data was going in to that particular decision at that time and what data came out as an error message. Tools like that are invaluable when you are working with another development team, and you need to be able to quickly and easily explain the error messages that you're seeing and that you're receiving.
Quite often, when I work with a development team, it's totally up in the air what language they like to work in. It may be JavaScript. It may be Python. Did I get it right? Yes. Much better. Python or Python depending on what side of the Atlantic you're in. There we go. So we really don't have control over their environment. And it's no fault of anybody else on the other side, but they might not be familiar with seeing, what you're presenting to them. So it's nice to have that agnostic platform where it's just graphical. You just see the errors, because regardless of the language that you're working in, the error messages are going to be the same, that you get back from the target system. So So I love that part of it. But you may not want to use Mercado.
And what are some of what I mean, what we've talked about this before actually off offline, which is, I I probably if you if you put a gun to my head, which is another very American saying, by the way. If you put a gun to my head, I probably personally would just wanna code it directly. And I think you you've said the same, as well, Kevin. So even with all the speed stuff and the graphical ability and the runtime, whatever, there are plenty of engineers, that are maybe older or more old school or whatever that might wanna code it themselves. Why what are some other reasons why, you know, you might wanna do this yourself directly against our API? Probably the top one is either that you have an old system that is not accessible from outside of your environment.
So in that case, you would want to build that integration within your own, you know, walled garden, so to speak, so that you have control over it. Or the target system is old enough where it can't ingest things via an API, and you're resorting to things like command line imports of CSV files or possibly XML. Yeah. Those are good cases. I I've run into some other edge ones that really they don't come up too much, but sometimes you actually have a, product that has been built in house. And so they have their own set of rules on how they're going to integrate and manage, and sometimes it's just a little too particular. Yeah. But whatever the case, we can solve it. Right? We and, actually, it's probably worth pointing out. You can ingest CSVs and stuff using Workato, can't you?
So Sure. That, you know, we've seen some older particularly older, like, big enterprise LMSs. They'll wanna usually run on a more of a batch kind of system, right, which is dump a flat file, a CSV or a TSV or something somewhere. And then on a schedule, you know, we'll we we can go in and slurp it up and, process it. But let's just say let's just for whatever reason, you don't wanna use Workato. You don't wanna use the kind of graphical method. What what are our options, now, Kevin? So I think go back to screen share if that's if that's what you want me to do. So that kinda boils back to our API that I'll I'll bring up here. And what what are we looking at? API is actually here. Just for This is our developer portal, and it looks a little busy right now because I'm logged in, and I've kinda got it expanded out.
And I'm looking at our API reference, and I have my GraphQL query editor up over here on my right hand side. So one thing that is really cool about our developer page is that everything that you see that is documented about the API is live. So in other words, if we push a new feature, new description, our API expands in any way, shape, or form, this site actually represents it immediately. One thing that's really unique about GraphQL is that it offers introspection, in that you can query and say, hey. Tell me about all the objects that you know about, and what do they look like? What kind of values and properties are on that object? Our website, our developer website, actually uses that same interface to display our entire API and build descriptions and show linkages between everything.
That's a really powerful feature, and it is what underpins the ability to come in on one object and find all of the related things underneath it. So as I was talking about learners before, this is just an example of what a query might look like against a learner, and I apologize if the text is really small. Looks good. Yep. Look good? Okay. Looking good from here anyway. So just as a a way to I'm gonna go through this real quickly because I don't wanna get too much in the weeds. But this is a query. I'm looking at learners, and this is my group of learners. In GraphQL, you have this concept of edges and node. But, basically, edges is a list of things, and node is one of those things in the list.
So here we're looking at a list of learners, and per each learner, I would like to get the ID. I want to get the contact record underneath that ID. And of that contact record, all I really want is their ID and their email address to verify that I've got who I want. And, yes, you can filter this down by exactly who you're looking for. But one other thing that's kinda unique here is you see underneath contact, there's account, and there is an ID field and is partner field. So every contact is attached to an account. In this way, I can pull up the account details all the way from the learner call. Yes. And then additionally Can we pause on that for one second, Kevin, because that's a that's kind of a key thing.
So two things actually. First is that developer portal that Kevin is showing us is live out on the Internet right now. You can go to developer dot git administrate dot com if you're watching this, and you can see exactly all of our documentation, the full API. And the other cool thing is the code that Kevin is showing is actually executable. So you can run those queries against, a dummy instance of administrate and get results back and so forth. So it's pretty cool. We'll we'll show you an example of that in just a second. But the second thing is in that example, and I'll go back to sharing your screen, Kevin, we've got learners, you know, just walking down that query. We've got learners, and we've got contacts, and we've got accounts.
That is information being pulled from three different entities at once. And in the kind of older rest paradigm, often you would find that you'd have to make three separate calls to get that information, And you would have to wait for each call to return to you before you can make the subsequent call. Right? Because first, you'd say, give me the learners. Okay. Of these learners, now that I've got their IDs, give me the contacts. And for each contact, now give me the partner or sorry. The account. And then ultimately, I get the data that I want. That is time consuming, laborious, and error prone. And so this is a really, really nice feature. So sorry to interrupt, but I just those are two cool things. The fact that you can go and play around with this API right now, on our public website, developer dot git administrate dot com,
and the the fact that you don't have to make all these calls and chain them and so forth. You can just do it in a one or. Yeah. Hundred percent. And just as a small aside, many iPaaS platforms track usage based on how many calls you make. So, it it can actually be financially advantageous to craft your queries in a way that you don't need to have multiples. Like you said, it it's a bit of a pain to have to go back and say, okay. Now I need contacts. Now I need accounts. Now I need events. And you've gotta collate all of that data. Whereas when you see in this example, it may look, a little pipe dreamish that we just have one trigger that brings everything back, because it's one step. You know? You just described three different steps. There's probably a couple more, and everything is done right here at the beginning of the trigger for us, just by the virtue of the API interface that we use.
Super cool. Okay. So and and did oh, you you ran that maybe, off screen. Can you show us an example of maybe running that query and getting the the results back or or maybe tweaking that query? Because there's a couple of neat features. And while you're doing that, just for context as well, if you're if you're listening in, we our goal is to be an API first platform. And what I mean by that is, Kevin was kind of explaining that all the documentation live and and so forth. What we really want is to to see is that whenever a function exists within administrate, you have access to it via this API. And this API is the same API that our own engineers access to build our own platform. So it's not like there's some special, you know, secret API or whatever.
You're getting the full thing here. So, realize I just asked you to live code, Kevin. Apologies, but, you know All good. You're And I'm just so confused about my formatting there. It's the whole, do you use tab or do you use two spaces? A whole another Or is it it's four another livestream. Yeah. For for a debate. Okay. So walk us through what you've done here and, and then maybe we can see it run and or or see whatever error we're gonna get back. Yeah. So all I really did was I took my event block, and I expanded it out because I thought that it might be useful to see what type of instructors that we have on it. And as I was typing that, I thought about one thing I did wanna show that's really cool about our code editor, and it is driven by the GraphQL introspection. If you don't know what you're looking for, you can use just a simple shift space, and you can see all of the different properties that are available under that particular object.
So for this one here, I'm actually gonna bring up the staff type, because I wanna know if they're an instructor. So I'll run this, and we get our results back. And you'll notice that the data structure very, very closely follows exactly the way our query was structured. So we see that we get data back, but then beyond that, we see learners. We see edges. We see node. We see the ID and the contact fields. All of this looks exactly like our query. So it's a predictable structure that's coming back. In the event where some of these things may not be populated, you would actually just get back an a null object. So in this case here, this class, unfortunately, nobody's teaching it. This is a good example of what an empty list looks like.
But if it did have instructors on it, you would actually see, their contact information, their IDs, any of that information that was associated with them. But, otherwise, you can see that it's a a very nice clean structure. And one thing I didn't include, but I do wanna point out, is handling custom fields through GraphQL is a breeze. Typically, custom fields are one of those things that developers get a little bit anxious about because you never know what those are quite gonna look like. Are they glued onto the platform? Are they really truly part of it? I'll say that the, the the custom field approach within administrate is
my perspective, when you have a parent child relationship, those custom field values can actually cascade down. And I've actually also helped other customers integrate their drop downs and selectable values within administrate using the same iPaaS platform for communication. So when they update their parent platform with a new option and a drop down, it comes over to administrate and updates the custom field and gives them that new option in the drop down. That's super cool. That is super cool. I didn't heard that story before. I love that. Yeah. That that was pretty cool. They asked, you know, hey. We have over a thousand records in this drop down. Can we synchronize it? Said, yeah. I don't think you're by hand.
That sounds completely undoable. And that was that was pretty darn powerful. One of the other things that I really like about our custom fields is you create them once and you can apply them to any entity that you need. So if you have a unique ID field, you can apply that to accounts and contacts and events just with a checkbox. So that's great. Very cool. Okay. So I think we're getting towards the end here, but maybe just to recap what we've gone over today. We've talked about why you'd wanna integrate with an LMS, why do you wanna integrate a training management system like administrate with a learning management system, why the typical and how the typical integration looks to walk through the shape of that and the process and so forth.
And that works for, you know, eighty percent of customers eighty percent of the time. Right? And, but there are areas in customers where things won't be so typical. And so for that kind of remaining twenty percent, we kinda show hopefully, we've shown you just how fast and easy it is to build out these integrations. Now whether it's you building them out or a partner of ours or us working with you, you know, that that's a that's a separate concern or whatever. But you can see the power that you have kind of baked in here to integrate administrative with all these different systems, and then you got two ways to do that. You can do it with the graphical way, with with Workato and an iPaaS, and maybe you can use use your own iPaaS.
I think I remember one customer, they were like I think they were saying, you know, we've got about fifteen different integrations we need built. Can you help us with that? And so we said, sure. And, you know, it'll take us, you know, a cup you know, a month or two or something on the timeline. They're like, nah. We'll just do it ourselves. And they had their own Boomi instance, and, they got it done in a in, like, a week. You know? And that's that was great. We're we're super happy about that. So you can go through the the iPass route or you can do use the direct API route, and you can always mix or match these strategies as well. So use as many out of the box integrations as you want, You know, for the ones that are really critical that need to be, you know, configured or customized a little bit, do that. And, maybe you've got some legacy system that you wanna be real, controlled around, you can you can always use a, you know, direct API integration there.
I definitely lean back towards, you know, your typical IDE, more so. But I will say that there is a, a massive efficiency improvement when you use something like Workato to get a proof of concept to kinda whiteboard it and take a look like, hey. Where are these data pieces gonna be moving? What do we need to do with them? Just storyboarding inside of a a platform like that is so much easier even if your end target is to have it as a piece of code that lives outside of an iPaaS platform. Yeah. That's a great point. And in fact, maybe Kevin and I are gonna challenge, throw down the gauntlet here. If you're watching and you got your arms crossed and you got your, I don't know, grumpy old person, that's unfair to old people.
You got a grumpy, sweatshirt on or something and and you're like, yeah, whatever. I've got a system that, you know, has never been successfully integrated with before or whatever. We hear this all the time, by the way. It's like integration horror stories coming in, from prospects. Kevin and I are throwing down the gauntlet. We're challenging you to bring us your, integration and possibility. And, we'll we can we can get it integrated. In fact, we've we've seen this happen a number of times with, with customers, and they were a little skeptical, but we got it done. And, and Kevin's team I I didn't do anything. Kevin's team got it done. And and then it's a great story, and it kinda lives on. And and every day, you're gonna get those efficiency gains, and you're gonna save time. You're gonna be able to focus more on what's really important here, which is training more people, in a better way.
So, yeah, that's that's the gauntlet thrown down. Any viewers out there, any systems that you can, conjure up, we can we can handle it. Right? Absolutely. Alright. So, I think that brings us to the end of today's LinkedIn live. Now, we do these every Tuesday. We've been doing them every Tuesday. We're gonna keep that going. And, we're we're really excited about the topics that we're doing. So you just check us out on LinkedIn, you know, send us a message. Send send Kevin or I, messages. Connect with us. We'd love to to talk with you and answer any questions you might have, and, we'll we'll see you see you next week at this time. Any any parting words, Kevin? No. When you said the when you threw down the gauntlet for the integration challenge, all I could think of in my head was all your code is belong to us.
But back to the age comment, I'm just aging myself. Some good programmer humor there. You can you can Google that one if if you don't get it. Okay. Well, that's, that's all for us today. I really appreciate your time and, you know, check back in and and connect with us, and and we'll see you next week. Alright. Thanks, everybody. Thanks, everyone.