Posts

Hacktoberfest

Image
I just completed the #ServiceNowHacktoberfest by having 4 contributions accepted! - Service Portal is a single place for everyone to access information, services and different applications. For my first contribution   (1068)  I shared a use case to get a parameter from the URL and use it into an Ajax call, recovering information from the database to show within the User Interface. - For my second pull request   (1069) I talked about best practices, explaining how to safely update a record. If we're not cautious with this kind of programming we can accidentally insert records instead of updating them. - For my third contribution   (1085)  I explained how to validate a field provided within a Catalog Item/Record Producer so that the date can't be in the past.  - The last one   (1093) was about fixing a direct reference to the Choice table. This is an internal table and it is not best practice to reference that table directly when you are creating your choice field. Besides the

LIVE Let's meet Mr. Paul Morris

Image
Holding 7 ServiceNow trophies in a row, he totally deserves the title of The ServiceNow Nerd.   Our guest is the ServiceNow MVP Paul Morris - a ServiceNow Certified Technical Architect. He has more than a decade of experience within the ServiceNow platform and he talked about details of his side project. Check Paul´s contacts below. Blog:  sn-nerd.com Linkedin: www.linkedin.com/in/paul-morris-perthwa  

PROJECT Golden Ticket matching tool

Image
        Simon Hendery  shared his thoughts  about having a matching tool when Golden Ticket's owners could donate it in case they don't have someone in mind.       Simon asked the developer community for help and when I read it I immediately thought...  YES!       When I said to Simon that I've developed the App, it was like throwing a rock into a river. I could see a ripple moving away from where the rock landed:       1) Just a few days online and the tool found the first match. Cheers Simon! The idea was yours!       2) Jace Benson posted about it spreading the idea.        3) Allen Andreas asked about the statistics and the s ection  Our Numbers  w as implemented.        4) The tool was featured in JaceNow Youtube channel. Thanks Jace!        Analysing the solution's infrastructure       1) The User Interface       Both the donor and the learner access the User Interface where they can provide name, email and a message.       For data integrity reasons, we don't

How to hide a Related List

Do you know about the Related List that displays people who can approve or reject a document? Recently a scenario came up where the developer needed to prevent the employee who created a record from approving that document. It wasn't common because usually the operational level creates the document while a manager approves it. Leaving this question of personas aside and focusing on the problem, what would be a possible solution? The first workaround that came to my mind was to hide the Approval list if the user who registered was viewing his own record. A workaround is not the ultimate solution. Just a palliative fix while we find time to think about the ideal one. The action plan 1) Every record has a field called sys_created_by; 2) On the front-end (client side) we have access to an API called Glide User that has some information about the logged in user. Among them is the name in the userName property. What if we create a

VIDEO How to fix a reference to the Choice [sys_choice] table

Image
        The Choice table is used internally by the platform and depending on the payload of an operation, for performance reasons the platform can decide that it is better to drop the table and insert all the values instead of perform updates on specific records.       When we insert a new record in a table, a new sys_id is generated. If we have the Choice table as a reference to provide choices for a particular field in our table, these choices will be lost every time the platform decides to recreate the Choice table.       A simple way to avoid this problem is to create a field of  type Choice  which indirectly uses the Choice table but it is the right way, or we can create our own table to maintain the Application choices.       Recently I received the mission to do exactly this: create a private choice table for an Application.     The problem       A long time ago, the platform allowed a developer to choose the Choice table as a reference.       As a consequence, old custom applic

There is a table called sys_choice and it is important to know everything you can about it

Image
     The Choice table - which has the internal name sys_choice - is used internally by the ServiceNow platform every time we create a field of type Choice and specify the available choices.        Points to remember when creating a choice       Always use only lowercase and underscores to form the Column name.         The Column label is what appears for the end user so you are free to use uppercase and spaces.       Use the same logic to create a choice. The value is internal and should contain only lowercase and underscores. The Label is what appears for the end user so you are free to use uppercase and spaces.        What you should never do       Never specify the Choice table as a reference in a Reference field. For example:       A reference field stores the sys_id of the corresponding record in the reference table. Since the Choice table is a core internal table, its behaviour is different from custom tables and the sys_ids can change.       The problem: when a sys_id in a refer

Validating a data field in a Service Portal by using a Catalog Client Script

      Use Case: When submitting a Record Producer, a date field can’t be in the past. How to accomplish this?       We can create a Catalog Client Script.       1) What is the trigger?       The script will run when the date field value changed.       2) What do we need to confirm?       We need to check if the date provided is in the future.       3) What if the date is not in the future?       If the date is not in the future, then we show an error message to inform that the date cannot be in the past.        Step by step process       1) Create a Record Producer (RP) and define the Catalog and Category so it will be visible in a Service Portal       2) Create a variable in your RP. In this example, the variable will have this configuration:        Type:  Date        Question:  Project Deadline        Name:  project_deadline        Mandatory:  Yes (checked)       3) Create a Catalog Client Script in your RP to check if the project_deadline value changed. If the date is in the past, s