
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-07-2025 10:40 AM
Hello, guys! I need some help!
Has anyone already made a REST API connection between ServiceNow and Cherwell?
I've tried everything, but I keep getting errors in my script. However, using Postman, I was able to reach the system and generate a token without any issues.
Could someone help me with the script? I've left a snippet below and attached the successful Postman call.
Thank you in advance guys!
var endpoint = 'https://{domain}/CherwellAPI/token';
var clientId = '{cilent_id}';
var username = '{username}';
var password = '{password}';
var authMode = 'internal';
var request = new sn_ws.RESTMessageV2();
request.setEndpoint(endpoint);
request.setHttpMethod('POST');
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var requestBody = 'grant_type=password' +
'&username=' + encodeURIComponent(username) +
'&password=' + encodeURIComponent(password) +
'&client_id=' + encodeURIComponent(clientId) +
'&auth_mode=' + encodeURIComponent(authMode);
request.setRequestBody(requestBody);
var response = request.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
gs.info(httpStatus);
Solved! Go to Solution.
- Labels:
-
Integrations
-
restapi
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-07-2025 01:19 PM
Brunão,
Pelo log, o erro java.net.UnknownHostException indica que o domínio/host informado não está sendo resolvido ou não está acessível a partir do ServiceNow. Isso acontece antes mesmo de enviar qualquer payload, ou seja, é um problema de DNS/rede e não de parâmetros do script em si.
Quando o ServiceNow tenta chamar o endpoint e não reconhece o host, ele retorna Status HTTP: 0 e “request not sent”.
Verifique a grafia do domínio
- Um caractere trocado ou um “https://” a mais ou a menos pode gerar UnknownHostException.
- Copie o domínio exato que está no Postman e cole no script para ter certeza de que não há erro de digitação.
Domínio interno vs. Internet
- Se o Cherwell estiver hospedado num ambiente interno (sem DNS público), o ServiceNow SaaS não conseguirá resolver o host diretamente.
- Nesse caso, você precisa de um MID Server rodando dentro da sua rede que possa fazer a ponte.
- Então, no script, você configuraria request.setMIDServer('nome_do_mid_server').
Firewall ou ACL
- Mesmo se o domínio for público, pode haver bloqueios de firewall que impedem a comunicação de entrada/saída.
- Verifique se o endpoint permite requisições vindas de IPs do ServiceNow.
Configurações de Outbound Network Access (SN)
- Em instâncias que usam Allowlisted Outbound (com Access Control Rules), é preciso cadastrar o domínio na lista de destinos permitidos.
- Verifique se o seu subdomínio Cherwell está liberado.
Teste de Conexão
- No módulo MID Server → IP Ranges ou nas configurações do seu proxy, garanta que o domínio do Cherwell seja acessível.
- Se você usar um MID Server, no menu MID Server → Script Include → ECCDebug, é possível “pingar” o domínio para conferir se resolve o DNS.
Enfim, o script em si já está formatado corretamente (Content-Type, parâmetros etc.). O UnknownHostException ocorre porque o ServiceNow não conseguiu nem sequer “enxergar” o host. Ajustando a parte de DNS/acesso em rede (ou usando MID Server, se for ambiente interno), você deve receber o HTTP 200 como no Postman.
Espero ter ajudado!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-07-2025 01:19 PM
Brunão,
Pelo log, o erro java.net.UnknownHostException indica que o domínio/host informado não está sendo resolvido ou não está acessível a partir do ServiceNow. Isso acontece antes mesmo de enviar qualquer payload, ou seja, é um problema de DNS/rede e não de parâmetros do script em si.
Quando o ServiceNow tenta chamar o endpoint e não reconhece o host, ele retorna Status HTTP: 0 e “request not sent”.
Verifique a grafia do domínio
- Um caractere trocado ou um “https://” a mais ou a menos pode gerar UnknownHostException.
- Copie o domínio exato que está no Postman e cole no script para ter certeza de que não há erro de digitação.
Domínio interno vs. Internet
- Se o Cherwell estiver hospedado num ambiente interno (sem DNS público), o ServiceNow SaaS não conseguirá resolver o host diretamente.
- Nesse caso, você precisa de um MID Server rodando dentro da sua rede que possa fazer a ponte.
- Então, no script, você configuraria request.setMIDServer('nome_do_mid_server').
Firewall ou ACL
- Mesmo se o domínio for público, pode haver bloqueios de firewall que impedem a comunicação de entrada/saída.
- Verifique se o endpoint permite requisições vindas de IPs do ServiceNow.
Configurações de Outbound Network Access (SN)
- Em instâncias que usam Allowlisted Outbound (com Access Control Rules), é preciso cadastrar o domínio na lista de destinos permitidos.
- Verifique se o seu subdomínio Cherwell está liberado.
Teste de Conexão
- No módulo MID Server → IP Ranges ou nas configurações do seu proxy, garanta que o domínio do Cherwell seja acessível.
- Se você usar um MID Server, no menu MID Server → Script Include → ECCDebug, é possível “pingar” o domínio para conferir se resolve o DNS.
Enfim, o script em si já está formatado corretamente (Content-Type, parâmetros etc.). O UnknownHostException ocorre porque o ServiceNow não conseguiu nem sequer “enxergar” o host. Ajustando a parte de DNS/acesso em rede (ou usando MID Server, se for ambiente interno), você deve receber o HTTP 200 como no Postman.
Espero ter ajudado!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-10-2025 05:36 AM
Bom dia Ítalo, tudo bem?
Acredito que seja mesmo um problema de REDE, já que aquele acesso ao POSTMAN que funcionou foi feito através de um JUMPER.
Na verdade, minha dúvida mesmo erra sobre a correção do meu script, eu ainda não tinha feito integrações do tipo x-www-form-urlencoded e precisava de uma confirmação! Me ajudou demais também o módulo de OUTBOUND REQUEST que você indicou, então, já aprendi algo novo!
Agradeço muito pela sua ajuda!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-08-2025 03:24 PM
Hi there! Yes, I’ve worked on a REST API integration between ServiceNow and Cherwell, including the token endpoint. Your script is close, but there are a few things that might be causing issues in ServiceNow (even if it works fine in Postman).
Here are some tips to troubleshoot:
Timeout: By default, RESTMessageV2 has a 30-second timeout. Make sure it’s not timing out.
Error handling: Add a try/catch block to catch more specific errors from the ServiceNow instance.
Authentication handling: Even if Postman works, ServiceNow might require a slightly different approach to headers or certificates — especially if you're using a MID Server.
Here’s a revised version of your script with some improvements:
try {
var endpoint = 'https://{domain}/CherwellAPI/token';
var clientId = '{client_id}';
var username = '{username}';
var password = '{password}';
var authMode = 'internal';
var request = new sn_ws.RESTMessageV2();
request.setEndpoint(endpoint);
request.setHttpMethod('POST');
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var requestBody = 'grant_type=password' +
'&username=' + encodeURIComponent(username) +
'&password=' + encodeURIComponent(password) +
'&client_id=' + encodeURIComponent(clientId) +
'&auth_mode=' + encodeURIComponent(authMode);
request.setRequestBody(requestBody);
var response = request.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
gs.info("Status: " + httpStatus);
gs.info("Response: " + responseBody);
} catch (ex) {
var message = ex.getMessage();
gs.error("Error calling Cherwell API: " + message);
}
Additional recommendations:
Check if there's a proxy between ServiceNow and the Cherwell domain.
Make sure the Cherwell SSL certificate is trusted by your instance (you may need to import it via System Definition > Certificates).
Enable RESTMessageV2 Debugging (System Logs > Outbound HTTP Requests) to get detailed logs of the request and response headers.
If the issue persists, feel free to share the exact HTTP status and error response so we can take a closer look.