- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-10-2018 02:36 PM
how to remove "Request Approved" Stage from RITM which automatically comes from request workflow.
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-11-2018 09:56 AM
Yea, I made a mistake. I'd update the "Workflow-driven" Column Renderer by adding;
var currentChoice = choices.getChoice(0).getValue(); |
gs.log(choices.getChoice(0));
if(currentChoice == "approved" || currentChoice == "waiting_for_approval"){
choices.removeChoice(0);
}
This will remove these choices
So the first evaluate block should have this in it.
// get the api | |
var api = new SNC.RendererAPI('$[jvar_renderer]'); |
// build the full set of choices including subflows | |
// if we have an 'answer' global then it was populated | |
// by a getChoices bus-rule so use that otherwise | |
// use the renderer api to get them from the workflow | |
// generated choices in the context. | |
var choices = api.getAllWorkflowChoices(current, jelly.jvar_ref); | |
api.addIconsAndStatus(choices); |
var currentChoice = choices.getChoice(0).getValue();
gs.log(choices.getChoice(0));
if(currentChoice == "approved" || currentChoice == "waiting_for_approval"){
choices.removeChoice(0);
}
choices;
Then you'll have to change the renderer on the workflow to use "Workflow Driven"
Then it should look like this for items using that workflow;
Cart;
List;

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-11-2018 07:40 AM
This is a common ask, A lot of folks want to do this but in the past I've never seen it done. Today I took the time to read into it. I just removed them from my items and here's how I did it.
1. Add an ACL on column_renderer to allow admin to create records.
2. Add an ACL on column_renderer to allow admin to write to * fields.
3. Here you have a choice, make a new renderer, or modify the OOB one.
I modified the OOB one to get this working, you choose the "Renderer" in the workflow.
Below is the code for the SCReqItemRenderer
Line 96 and 120 are the only modifications.
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="true" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<j:set var="jvar_renderer" value="Legacy"/>
<g:choice_list ref="$[jvar_ref]"/>
<j:set var="jvar_workflow_icons" value="WorkflowIcons"/>
<g:evaluate var="jvar_hasicons" expression="$[SAFE:jvar_ref].hasAttribute('icons');" />
<g:evaluate var="jvar_icons" expression="$[SAFE:jvar_ref].getAttribute('icons');" />
<j:if test="$[jvar_hasicons]" >
<j:set var="jvar_workflow_icons" value="$[jvar_icons]" />
</j:if>
<g:evaluate var="jvar_choices" jelly="true" object="true">
var choices = jelly.jvar_choices;
// Use the API to translate
var api = new SNC.RendererAPI('$[jvar_renderer]');
api.internationalizeChoices(choices);
try {
var wfw = new $[SAFE:jvar_workflow_icons]('$[jvar_ref]');
choices = wfw.process(jelly.jvar_choices);
} catch (e) {
// could have an issue during the first upgrade
// before it gets this widget
}
choices;
</g:evaluate>
<g:evaluate var="jvar_expand_id" jelly="true">
// Create a unique id across multiple workflow columns in the same table.
var expand_id = jelly.jvar_workflow_id + '_' + jelly.jvar_ref;
var parts = jelly.jvar_ref.split('.');
if (parts.length >= 2) {
parts[0] = '';
expand_id = jelly.jvar_workflow_id + parts.join('_');
}
expand_id;
</g:evaluate>
<!-- called when you have successfully ordered an item from service catalog -->
<j:set var="jvar_t" value="$[jvar_ref]" />
<table id="workflow.$[jvar_expand_id]" border="0" cellpadding="0" cellspacing="0"
style="margin-top: 2px; background-color: transparent;" >
<tr id="$[jvar_expand_id]">
<!-- +/- expander box -->
<td valign="top" style="background:transparent">
<span id="renderer" style="display:none">$[jvar_renderer]</span>
<span id="workflowfilter.$[jvar_expand_id]">
<a tabindex="0" onclick="togglePreference('$[jvar_expand_id]');" aria-controls="$[jvar_expand_id]">
<img id="filterimg.$[jvar_expand_id]" src="images/filter_hide16.gifx" alt="${gs.getMessage('Expand')}"
border="0" title="${gs.getMessage('Expand')}"
style="margin-top: 1px; margin-bottom: 1px;"/>
</a>
</span>
</td>
<td nowrap="true" style="background-color:transparent">
<j:forEach var="jvar_choice" items="$[jvar_choices]">
<g:evaluate var="jvar_item_idx" jelly="true">
var itemIdx = jelly.jvar_item_idx;
if (itemIdx == '' || typeof itemIdx == "undefined")
itemIdx = 1;
else
itemIdx = parseInt(itemIdx) + 1;
itemIdx;
</g:evaluate>
<g:evaluate var="jvar_choice_visible" jelly="true">
var isVisible = true; //jelly.jvar_choice.getParameter('visible')+'' == 'true';
if (jelly.jvar_choice.value == '')
isVisible = false;
isVisible;
</g:evaluate>
<!-- we only want to display values that are not empty and are 'visible' -->
<j:if test="$[jvar_choice_visible]">
<g:evaluate var="jvar_image" jelly="true">
var imgsrc = (jelly.jvar_choice.image+'').split(' ');
imgsrc = imgsrc.length ? imgsrc[0] : imgsrc;
imgsrc;
</g:evaluate>
<!-- no image, provide default -->
<j:if test="$[jvar_choice.image == '']">
<j:if test="$[jvar_choice.selected]">
<j:set var="jvar_image" value="icon-check-circle"/>
</j:if>
<j:if test="$[!jvar_choice.selected]">
<j:set var="jvar_image" value="icon-empty-circle"/>
</j:if>
</j:if>
<j:if test="$[jvar_choice.value != 'approved']">
<span id="stage.$[jvar_item_idx].$[jvar_expand_id].$[jvar_choice.value]" stage="true" selected="$[jvar_choice.selected]" aria-expanded="false">
<g:set_if test="$[GlideMobileExtensions.runningTablet() || gs.getProperty('glide.ui.doctype') == 'true']" var="jvar_display_type"
true="inline-block" false="inline" />
<table border="0" cellpadding="0" cellspacing="0" class="stageiconsinner"
style="background-color: transparent; display: $[jvar_display_type];">
<tr id="$[jvar_expand_id]">
<td style="border: 0px; padding:2px; background-color: transparent;">
<g:set_if var="jvar_title" test="$[jvar_choice.getParameter('title') == undefined]" true="$[jvar_choice.label]" false="$[jvar_choice.getParameter('title')]" />
<img id="stage.$[jvar_item_idx].$[jvar_expand_id].$[jvar_choice.value].image" title="$[jvar_title]"
class="nopadding" src="images/heisenberg_icons/stage_icons/$[jvar_image].png" alt="$[jvar_choice.label]" aria-hidden="true"/>
</td>
<td id="stage.$[jvar_item_idx].$[jvar_expand_id].$[jvar_choice.value].text" style="display: none; z-index: -1; background-color: transparent;" nowrap="true">
<!-- IE quirkaround -->
<span style="margin-right: 3px;"><img src="images/s.gifx" alt="" aria-hidden="true"/></span>$[jvar_choice.label]
</td>
</tr>
</table>
</span>
</j:if>
</j:if>
</j:forEach>
</td>
</tr>
</table>
<g:evaluate var="jvar_expanded_pref" expression="gs.getPreference('workflow.expanded.$[jvar_ref_parent]')" />
<j:if test="$[jvar_expanded_pref]">
<script>toggleItems('$[jvar_expand_id]');</script>
</j:if>
</j:jelly>
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-11-2018 08:42 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-11-2018 09:09 AM
I changed line 96 to <j:if test="$[jvar_choice.value != 'approved']">
But still i am seeing the that stage

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-11-2018 09:56 AM
Yea, I made a mistake. I'd update the "Workflow-driven" Column Renderer by adding;
var currentChoice = choices.getChoice(0).getValue(); |
gs.log(choices.getChoice(0));
if(currentChoice == "approved" || currentChoice == "waiting_for_approval"){
choices.removeChoice(0);
}
This will remove these choices
So the first evaluate block should have this in it.
// get the api | |
var api = new SNC.RendererAPI('$[jvar_renderer]'); |
// build the full set of choices including subflows | |
// if we have an 'answer' global then it was populated | |
// by a getChoices bus-rule so use that otherwise | |
// use the renderer api to get them from the workflow | |
// generated choices in the context. | |
var choices = api.getAllWorkflowChoices(current, jelly.jvar_ref); | |
api.addIconsAndStatus(choices); |
var currentChoice = choices.getChoice(0).getValue();
gs.log(choices.getChoice(0));
if(currentChoice == "approved" || currentChoice == "waiting_for_approval"){
choices.removeChoice(0);
}
choices;
Then you'll have to change the renderer on the workflow to use "Workflow Driven"
Then it should look like this for items using that workflow;
Cart;
List;
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-01-2018 11:18 AM
YES IT WORKS!!!
Thank you for sharing this!