Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

What is this?

The help desk relies heavily upon the application of templates to their incidents.  They search the knowledge base and when they find the appropriate KB article they use the 'Attach to Incident' button to indicate that they used the knowledge base.  It will also apply a template to the ticket if one is attached to the KB, which saves time and makes for consistent tickets.  There was a requirement to allow for tasks on templates to be applied as well, which complicates things a little.  Here's how it was implemented below:

Added Template field to Knowledge article form

glide.ui.permitted_tables

Add sys_template as a permitted table, otherwise people won't be able to see the templates to attach to the knowledge article.

Roles

template_editor, template_editor_group or template_editor_global must be granted to allow people to alter and view the templates as well.

Knowledge Properties

Set the target of the knowledge article to a custom field on incident

KnowledgeFunctions UI script

In order for templates with tasks to work, we need to skip the check to see if the record was saved.  We simply commented out the check here.  This UI script appears to be the same in Fuji, but we'll need to check this going forward.

function attachIncident2(x, target) {
	if (self.opener) {
		/*
		var lastSaved = self.opener.document.getElementById("onLoad_sys_updated_on").value;
			if (!lastSaved){
				self.close();
				var err = (gel('error_msg')!=null)?gel('error_msg').value:"Invalid action: Record needs to be saved first";
				self.opener.g_form.addErrorMessage(err);
			    return false;
			}
			*/
		var e = self.opener.document.getElementById("sys_uniqueValue")
		var task = e.value;

Incident Form

Add KB Article Template to the related records section.

Incident Client Script

This fires on change of the u_kb_article_template field.  We do things a little differently if we determine that there's tasks or other child templates on the template we're using.  If there are child templates we have to save the record first, if not we can just apply the template.

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
	if (isLoading || newValue == '')
		return;
	
	var template = g_form.getReference('u_kb_article_template').u_template;
	
	var ga = new GlideAjax('YaleAjax');
	ga.addParam('sysparm_name','hasChildTemplates');
	ga.addParam('sysparm_template',template);
	ga.getXML(hasTemplate);
	
	function hasTemplate(response) {
		answer = response.responseXML.documentElement.getAttribute("answer");
		if(answer == 'true'){
			// If there's child templates we have to save the record first
			g_form.checkMandatory = false;
			gsftSubmit(null, g_form.getFormElement(), 'apply_my_template');
		}else{
			// If there's no child record, no need to save before
			applyTemplate(template);
		}
	}
}

References

https://community.servicenow.com/thread/143298

 

 

  • No labels