We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

How to get current domain on UI page in scoped application

andriyko
Giga Contributor

How can I get currently active domain to show its display value on UI page in scoped app?

What I have for now:

1. queryNoDomain is not allowed in scoped app, so I cannot use to get list of ALL domains, as it will return a list of subdomains of current domain.

var gr_domain = new GlideRecord('domain');

gr_domain.addQuery('active', true);

gr_domain.query();

if (gr_domain.next()) {

  // this will show only subdomains, as this query runs in domain scope.

  // I would like to show the list of all domains as it is done in domain_select macro.

}

2. I tried to include macro

<g:macro_invoke macro="domain_select" />

in UI page, I get the error:

Uncaught ReferenceError: GlideManager is not defined

3. Also I tried to use DomainSelect script include, but it is not allowed in scoped app.

How can I make my scoped app work in domain separated env if things related to domain separation are not allowed in scoped application?

I would like to be able to, at least, get currently active domain and show its display value on the page.

Thanks.

2 REPLIES 2

nyancer3
Tera Expert

Hi Andriy,



I had the same issue, wanting to show the user's domain (for debugging in my case) as well as trying to queryNoDomain on the GlideRecord.



The solution was to create a script include (or two) in the global domain and make it accessible to all application scopes. For the queryNoDomain solution, the method within the script include looks like this:



queryNoDomain: function(glideRec) {



  var newRec = new GlideRecord(glideRec.getTableName());



  newRec.addEncodedQuery(glideRec.getEncodedQuery());



  newRec.queryNoDomain();



  return newRec;



}



You pass in the GlideRecord you want to query from your scoped application, create a new one in the global scope, copy the query, execute the queryNoDomain method, and then return the freshly queried GlideRecord back to your application. I used the same method to return gs.getUser().getDomainDisplayValue() (except all you need to do is put "return" in front of that code for the body of your method).



I hope you find this helpful.



Thanks,


Nick


Nana5
Mega Guru

Hi Nyancer,

  I am facing the same issue queryNoDomain not working. Can you please guide how i can use the above code.

Please see my background  script, i want to update in each domain but now only its updating in global domain. Thanks in advance


var gr =new GlideRecord('x_lini_tm_asset_properties');
gr.addEncodedQuery('product.nameLIKEasset' );
gr.query();
if(gr.next()){
gr.total_extension_duration=0;
gr.autoSysFields(false);
gr.setWorkflow(false);
gr.update();

}