Skip navigation
All People > TMACUL > Tiago MACUL's Blog > 2018 > February
2018

CA SDM::. Webservice how to update ticket status - ENGLISH 

 

Você precisa atualizar o status de um ticket? Descrevo neste documento como você pode realizar esta tarefa, o código está em VS.NET C#, existem algumas maneiras para realizar um update de status em um ticket aqui descrevo dois caminhos e você pode optar conforme sua necessidade, foram descritos aqui os métodos  "updateObject" e "changeStatus".

 

"updateObject" É um poderoso método que você pode atualizar muitos objetos e muitos campos, incluso o status.

 

"changeStatus" Você pode atualizar o status de um ticket e também informar quem realizou a alteração.

 

Aproveite a leitura, espero que seja útil.

 

int sid;
            try
            {
                localhost.USD_WebService ws = new localhost.USD_WebService();
                sid = 0;
                sid = ws.login("servicedesk", "MyPassword");
            }
            catch { }

CA SDM::. Webservice login C# 

 

Update status Utilizando o método updateObject

int sid;
string[] attrVals = new string[2] {"status","CL"};
string[] attributes = new string[2] { "status", "summary" };
string objecthandle;
try
{
      localhost.USD_WebService ws = new localhost.USD_WebService();
      sid = 0;
      sid = ws.login("servicedesk", "password");
      objecthandle = "cr:" + Request.QueryString["id"]; //"cr:400001"
      ws.updateObject(sid, objecthandle, attrVals, attributes);
}
catch { }

 

 

Update status utilizando o método changeStatus 

 

bool fnUpdateStaus(string id, string contact, string status, string comments)
{
// crs:400001 = Custom status
bool blnReturn = false;
int sid;
string[] attrVals = new string[2] { "status", status };
string[] attributes = new string[2] { "status", "summary" };
string objecthandle, objecthandleCnt = "";
try
{
ServiceReference1.USD_WebServiceSoapClient ws = new ServiceReference1.USD_WebServiceSoapClient();
string user = ConfigurationManager.AppSettings["user"].ToString();
string password = ConfigurationManager.AppSettings["password"].ToString();
sid = 0;
sid = ws.login(user, password);
objecthandle = "cr:" + id; //"cr:400001"
if (!String.IsNullOrEmpty(contact))
{ objecthandleCnt = "cnt:" + contact; }
ws.changeStatus(sid, objecthandleCnt, objecthandle, comments, status);
ws.logout(sid);
blnReturn = true;
}
catch(Exception e)
{
blnReturn = false;
}
return blnReturn;
}

 

 

know_more.png

link_C#.zip 

CA SDM::. webservice updateObject usando C# 

CA SDM::. Webservice Updateobject C# 

CA SDM::. webservice updateObject usando C# 

CA SDM Trabalhando com WebService 

 Outros conteúdos utilizando updateObject 

 

 

Summary CA Process Automation 

Summary CA Service Management Community 

Service Desk Manager 15 days Implementation 

CABI:: Summary - BOXI for CA SDM 

Summary CA SDM Scoreboard 

 

Was useful, please leave your feedback!

CÓDIGO FONTE: z_get_user_privileges


Desenvolvi um novo método customizado na API da ferramenta SDM que permite verificar se as partições de dados e permissões de acesso de um objeto específico estão sendo respeitadas de acordo com a respectiva função do usuário logado.
Muito útil para usuários que desenvolveram novas operações webengine na ferramenta que alteram atributos de um objeto na modalidade 'one-click'.

 

COMO UTILIZAR?
1) Copie o arquivo 'z_get_user_privileges.spl' para a pasta $NX_ROOT/site/mods/majic;
2) Declare em algum arquivo .mod (Ex.: z_api.mod) a instrução abaixo:

OBJECT api {
FACTORY {
METHODS {
z_get_user_privileges(string, ...);
};
};
};


3) Reinicie a ferramenta SDM.

EXEMPLO:

void z_test()
{
int zi_depurar;
zi_depurar = 1;
string zs_metodo, zs_msg;
zs_metodo = 'z_test';
string zs_persid;
zs_persid = 'iss_wf:587983';
uuid zu_who;
zu_who = (uuid) 'F1CA5A43A27AE04DB88D4EDF438D42BF';
send_wait(0, top_object(), "call_attr", "api", "z_get_user_privileges", zs_persid);
//send_wait(0, top_object(), "call_attr", "api", "z_get_user_privileges", zs_persid, zu_who, "ALL");
//send_wait(0, top_object(), "call_attr", "api", "z_get_user_privileges", zs_persid, zu_who, "PREUPDATE", zi_depurar, zs_metodo);
if (msg_error()) {
zs_msg = format("%s ERRO ao consultar privilegios do usuario: '%s'", zs_metodo, msg[0]);
printf("ERRO ao consultar privilegios do usuario: '%s'", msg[0]);
return zs_msg;
}
int i;
for (i=0;i<msg_length();i++) {
printf("%s\n", msg[i]);
}
}

RETORNO DA EXECUÇÃO

D:\rotinas\Teste>bop_cmd -u servicedesk -f z_teste.spl "z_test()"
ACCESS_LEVEL
modify
VIEW
yes
PREUPDATE
yes
UPDATE
yes
CREATE
yes
DELETE
yes
DEFAULTS
yes

Bom proveito.

 

CA SDM Brasil Sumário - Índice 

 

As publicações descritas neste post foi postada inicialmente na comunidade do facebook denominada CA SDM Brasil  e criada Por: Daniel Bighelini

SPEL respeitando partição de dados e acesso funcional de objetos:


Estou criando uma função Spel chamada z_get_user_privileges que verifica se um determinado usuário tem permissões para exibir, criar, atualizar ou excluir um objeto.


Isso é necessário pois as partições de dados e acessos funcionais somente são respeitados quando o usuário interage na ferramenta através da interface GUI.


Infelizmente não consegui utilizar o método nativo da API chamado get_constraints que lista rapidamente quais as partições de dados vigentes para determinado objeto.

 


Por conta disso, mais alguns dias de desenvolvimento para esta nova função customizada...

Nenhum texto alternativo automático disponível.

CA SDM Brasil Sumário - Índice 

 

As publicações descritas neste post foi postada inicialmente na comunidade do facebook denominada CA SDM Brasil  e criada Por: Daniel Bighelini

INATIVAR CLASSES E FAMÍLIAS DO CMDB: 
Desenvolvi uma rotina Spel que inativa classes e famílias que não estão relacionadas a nenhum IC no CMDB. 

 

FUNCIONAMENTO 
- Caso a classe não esteja relacionado a nenhum IC (Ativo/Inativo), a respectiva classe será inativada. 
- Caso a família não esteja relacionada a nenhuma classe ativa, a respectiva família será inativada. 

 

Isso certamente facilitará a vida de quem está pesquisando itens de configuração na ferramenta SDM. 

 

COMO UTILIZAR 
bop_cmd -u servicedesk -f z_inativa_classes_e_familias_nao_utilizadas.spl "z_inactive_classes_and_families_not_used('', 1, 'teste')" 

 

Código fonte em anexo. 
Bom proveito.

 

 

CA SDM Brasil Sumário - Índice 

 

As publicações descritas neste post foi postada inicialmente na comunidade do facebook denominada CA SDM Brasil  e criada Por: Daniel Bighelini

   
Daniel Becker Bighelini
30 de novembro às 16:24
 
DÚVIDAS MAILEATER: 
Pessoal, 
Gostaria de trocar experiências de uso com vocês a respeito do recurso MAILEATER na ferramenta USD... 
Caso vocês utilizem esse recurso, gostaria de saber qual foi a solução de contorno que vocês utilizaram para resolver as seguintes questões: 

1) Como lidar com a situação de que o MAILEATER não trabalha bem com emails em formato HTML (em pleno século 21), principalmente nas ações de UPDATE de tickets observando o corpo da mensagem? 

2) Como incluir no assunto da primeira resposta automática da criação do ticket, o número do ticket que foi criado? 

3) Quando o usuário não possui cadastro na SDM e por conta disso é utilizado o usuário "anonymous" que não possui muitos privilégios, como foi tratada a questão de categorização automática do ticket via recursos da TEXT API? 

4) Quais ajustes foram necessários no tipo de acesso, função e partição de dados do usuário quando este tem permissão apenas de Cliente? 

Se puderem me ajudar respondendo por aqui ou mesmo entrando em contato diretamente comigo por telefone, eu agradeceria muito.
DÚVIDAS MAILEATER:
Pessoal,
Gostaria de trocar experiências de uso com vocês a respeito do recurso M...

 

CA SDM Brasil Sumário - Índice 

 

As publicações descritas neste post foi postada inicialmente na comunidade do facebook denominada CA SDM Brasil  e criada Por: Daniel Bighelini

CONCEITO: PRIORIDADE x URGÊNCIA x IMPORTÂNCIA 
Existe uma dúvida conceitual muito freqüente envolvendo os assuntos prioridade, urgência e importância no atendimento de qualquer ticket de qualquer ferramenta. 
Vou tentar esclarecer essa dúvida neste post... 

PRIORIDADE 
A prioridade de atendimento de qualquer ticket sempre deverá ser definida por alguma regra do negócio de sua empresa. Essas regras na maioria das vezes são definidas pelo tipo de serviço, impacto causado, SLA ou definições do processo envolvidas. 
Clientes não definem prioridade. Clientes podem apenas influenciar a prioridade de atendimento de um ticket. E essa influência se dará pela solicitação eventual de urgência, impacto causado ou mesmo pela importância estratégica do cliente na sua organização. 

URGÊNCIA 
A urgência sempre será solicitada por alguém. Esse alguém pode ser o próprio cliente ou qualquer outra pessoa envolvida no processo. O que é importante destacar é que uma solicitação de urgência não implica necessariamente no compromisso do provedor de serviços em atender um ticket na frente de outro. 
Um exemplo prático disso é o serviço de emergência de um hospital. Mesmo quando um cliente solicita urgência de atendimento, sempre caberá ao hospital decidir se a prioridade de atendimento será modificada ou não. 

IMPORTÂNCIA 
O provedor de serviços pode ainda considerar o conceito de importância no atendimento de algum cliente devido a algum critério estabelecido pelo negócio. Clientes estratégicos merecem atendimento diferenciado, por exemplo. Em resumo, é o "negócio que manda". 

Até a próxima.
CONCEITO: PRIORIDADE x URGÊNCIA x IMPORTÂNCIA
Existe u

 

 

CA SDM Brasil Sumário - Índice 

 

As publicações descritas neste post foi postada inicialmente na comunidade do facebook denominada CA SDM Brasil  e criada Por: Daniel Bighelini

DICA: Você sabia que expressões regulares (RegEx) podem ser utilizadas em tags PDM_IF e na própria linguagem SPEL? 
O uso de expressões regulares, por mais difícil que seja a sua construção e interpretação, toma os algoritmos computacionais muito mais eficientes em qualquer linguagem de programação. 

 

As tags PDM_IF, utilizadas em formulários HTMPL, permitem a utilização de RegEx quando é utilizado o operador ":". 

 

E na linguagem Spel, as funções 'sindex', 'substr', 'split', 'extract' e 'gsub' permitem a utilização de expressões regulares bem mais complexas com um "dialeto regex" muito similar a de outras linguagens de programação. 

 

Estou usando muito no meu dia a dia. #ficaadica 
Até a próxima.

 

 

CA SDM Brasil Sumário - Índice 

 

As publicações descritas neste post foi postada inicialmente na comunidade do facebook denominada CA SDM Brasil  e criada Por: Daniel Bighelini

NOVA FUNCIONALIDADE: Atualização automática de turnos de trabalho com feriados (workshifts x holidays) 
Todo administrador de SDM sabe que anualmente é necessário atualizar todos os registros de turno de trabalho que possuem feriados ou datas que não devem ser contabilizadas nos cálculos de horas úteis através dos métodos Spel workshift_abs2work e workshift_work2abs. 

 

O problema se agrava quando temos muitos feriados "móveis" ou feriados eventuais que são estabelecidos durante o decorrer do ano. 
Infelizmente a ferramenta SDM não possui uma tabela única de feriados ou qualquer outro mecanismo que propicie uma manutenção facilitada nos registros de turnos de trabalho. 
Esse é o cenário. 
Agora vem a solução... 

 

Criei um método Spel que atualiza todos os workshifts da ferramenta de uma forma dinâmica e parametrizável. 
Todos os feriados móveis são calculados automaticamente, os fixos são parametrizados e a função permite a definição de um filtro para indicar os workshifts que deverão ser atualizados no processo. 
Esse método pode ser agendado anualmente ou executado eventualmente para adicionar feriados "de última hora". 

 

COMO UTILIZAR: 
z_updateWorkshiftHolidays([int zi_depurar], [string zs_metodo], [int zi_year], [string zs_wc], [string zs_datepart]) 

 

DEFINIÇÕES: 
(int) zi_depurar - [OPCIONAL] Define o nivel de depuracao da funcao 
(string) zs_metodo - [OPCIONAL] Define o nome do metodo que esta chamando este metodo 
(int) zi_year - [OPCIONAL] Define o ano de referencia dos feriados. 
(string) zs_wc - [OPCIONAL] Define o filtro de workwhifts que serao afetados. 
(string) zs_datepart - [OPCIONAL] Define uma string que devera ser incluida no final do workshift. 

 

EXEMPLOS DE CHAMADA: 
z_updateWorkshiftHolidays() 
z_updateWorkshiftHolidays(1, 'teste', 2017, 'delete_flag=0') 
z_updateWorkshiftHolidays(1, 'teste', 2017, 'sym='meu workshift', '12/28/2024 {08:00 - 12:00}') 

 

1º EXEMPLO (ANTES): 
Mon { 09:30 - 18:00 00:00 - 00:00 } 
Tue { 09:30 - 18:00 00:00 - 00:00 } 
Wed { 09:30 - 18:00 00:00 - 00:00 } 
Thu { 09:30 - 18:00 00:00 - 00:00 } 
Fri { 09:30 - 18:00 00:00 - 00:00 } 
01/01/2010 {} 02/02/2010 {} 

 

1º EXEMPLO (DEPOIS): 
Mon { 09:30 - 18:00 00:00 - 00:00 } 
Tue { 09:30 - 18:00 00:00 - 00:00 } 
Wed { 09:30 - 18:00 00:00 - 00:00 } 
Thu { 09:30 - 18:00 00:00 - 00:00 } 
Fri { 09:30 - 18:00 00:00 - 00:00 } 
01/01/2017 {} 02/02/2017 {} 02/28/2017 {} 04/14/2017 {} 04/16/2017 {} 04/21/2017 {} 05/01/2017 {} 06/15/2017 {} 09/07/2017 {} 09/20/2017 {} 10/12/2017 {} 11/02/2017 {} 11/15/2017 {} 12/25/2017 {} 

 

2º EXEMPLO (ANTES): 
Mon - Fri {8:00 am - 12:00 pm 2:00 pm - 6:00 pm} 01/01/2015 {} 02/02/2015 {} 

 

2º EXEMPLO (DEPOIS) 
Mon - Fri {8:00 am - 12:00 pm 2:00 pm - 6:00 pm} 01/01/2017 {} 02/02/2017 {} 02/28/2017 {} 04/14/2017 {} 04/16/2017 {} 04/21/2017 {} 05/01/2017 {} 06/15/2017 {} 09/07/2017 {} 09/20/2017 {} 10/12/2017 {} 11/02/2017 {} 11/15/2017 {} 12/25/2017 {} 

 

FUNÇÕES INCLUÍDAS NA CUSTOMIZAÇÃO 
z_updateWorkshiftHolidays 
z_removeWorkshiftHolidays 
z_getHolidaysBrazil 
z_getEasterDay 
z_getYear 
z_getMonth 
z_getDay 
z_getWeekday 
z_getDateToString 
z_get_default_admin 
z_get_groupleader 
z_bloco_fim 
z_bloco_inicio 

 

 

Bom proveito.

 

 

CA SDM Brasil::. z_workshift_holidays.spl 

 

 

 

CA SDM Brasil Sumário - Índice 

 

As publicações descritas neste post foi postada inicialmente na comunidade do facebook denominada CA SDM Brasil  e criada Por: Daniel Bighelini

VALIDANDO JANELAS DE CONTINGÊNCIA (Blackout) 
Desenvolvi um método Spel que valida a existência de janelas globais de contingência (blackout) em um período de datas informado. 

 

Traduzindo... 
Sabe aquela situação onde um gestor define que nenhuma mudança poderá ser executada na infraestrutura de TI entre os dias X e Y? Pois é, esse método, te dá essa resposta e pode ser incorporado em uma trigger de validação PRE_VALIDATE no objeto de mudança. 

 

Sintaxe: string z_validate_window_blackout(date_start, date_finish, zi_depurar, zs_metodo) 

 

Bom proveito.

 

 

CA SDM Brasil Sumário - Índice 

 

As publicações descritas neste post foi postada inicialmente na comunidade do facebook denominada CA SDM Brasil  e criada Por: Daniel Bighelini

JANELAS DE BLACKOUT DE MUDANÇAS 
Alguém aqui já teve as seguintes necessidades de negócio em seu processo de mudanças? 

 

Não permitir que uma mudança seja solicitada... 
1) ... quando existir uma janela global de contingência (blackout) em um intervalo de datas específico; 
2) ... quando alguma categoria de mudança esteja em "freezing" em um intervalo de datas específico e/ou "workshift" válido; 
3) ... quando algum tipo de mudança esteja em "freezing" em um intervalo de datas específico e/ou "workshift" válido; 
4) ... quando um IC/Classe/Família específica esteja em "freezing" em um intervalo de datas específico e/ou "workshift" válido; 

 

Infelizmente a ferramenta SDM não possui nenhuma "option" ou política mais restritiva que impeça a abertura de mudanças em algum dos cenários acima descritos. 

 

Se alguém puder compartilhar suas experiências sobre esse assunto, eu agradeço.

 

 

CA SDM Brasil Sumário - Índice 

 

As publicações descritas neste post foi postada inicialmente na comunidade do facebook denominada CA SDM Brasil  e criada Por: Daniel Bighelini

Preciso trocar o hostname do servidor, como posso fazer para o EEM continuar funcionando?

 

Siga os seguintes passos:

 


1.    Edite as TAGs no arquivo server.xml (o caminho padrão é %EIAM_HOME%\config\server  ou  $EIAM_HOME/config/server) , você precisa incluir o novo nome nas seguintes TAGs:
  - hosts primary
  - host id
  - dsaurl

 

Exemplo do arquivo:

<hosts primary="IncluaAquiNomedoServidor">
<host id="IncluaAquiNomedoServidor">
<dsaurl>IncluaAquiNomedoServidor:509</dsaurl>
</host>
</hosts>

 

 

2.    Edite a TAG HostId no arquivo iPoz.conf file (o caminho padrão é: %IGW_LOC%  or  $IGW_LOC)

 

Exemplo do arquivo:

<iSponsor>
<Name>iPoz</Name>
<ImageName>C:/CA/SC/EMBEDD~1/lib/iPoz</ImageName>
<LibPath>C:/CA/SC/EMBEDD~1/lib</LibPath>
<DisplayName>Eiam Server Sponsor</DisplayName>
<DispatchEP>iDispatch</DispatchEP>
<ISType>DSP</ISType>
<Version>12.51.2.11</Version>
<PreLoad>true</PreLoad>
<Gated>false</Gated>
<ClsPath></ClsPath>
<DebugLevel>ISP_FILE</DebugLevel>
<HostId>IncluaAquioNomedoServidor</HostId>
<LogLevel>WARNING</LogLevel>
</iSponsor>

 

3.    Remova ou mova os arquivos %IGW_LOC%  or  $IGW_LOC:

  • iauthority.key
  • iauthority.cer
  • icontrol.key
  • icontrol.cer

 

4.    Edite o campo address no arquivo itechpoz.dxc (o caminho padrão é: %DXHOME%\config\knowledge  ou  $DXHOME/config/knowledge), 

 

#
# eiam repository
#
set dsa "itechpoz" =
{
prefix = <cn iTechPoz>
dsa-name = <cn iTechPoz><cn PozDsa><cn "IncluaAquiNomeDoServidor">
dsa-password = "{SHA512}0bZCU81wqw/kbpXuCHQF6Q38S9ZG+K+CZcOerUYEwbHTIz2tcL4CU3KNWugdy9jStW5GFBNVNI7n5N6nxB4Ztg=="
#for failover configuration
address = ipv4 "IncluaAquiNomeDoServidor" port 509
snmp-port = 509
#for dxconsole debugging. info: make sure that the port is not used
#console-port = 10510
auth-levels = anonymous, clear-password
dsp-idle-time = 120
#for failover configuration
dsa-flags = multi-write
link-flags = ssl-encryption-remote
};

 

5.    Reinicie os serviços:

  • “CA Directory – itechpoz”
  • “CA iTechnology iGateway "
  • db_ddladmin
  • db_securityadmin

 

we need to change the "ServiceDesk" database user in MS SQL Server to have db_ddladmin and db_securityadmin privileges under mdb => Security => ServiceDesk => properties => General => Role members.

 

When trying PDM_PUBLISH, getting error 15 - SQL Code=1939 - Can't spawn "cmd.exe". 

 

 

 

 

Move the CA MDB Database on Microsoft SQL Server - CA Service Management - 14.1 - CA Technologies Documentation 

Changing the Service Desk passwords 

Moving the MDB database for Service Desk from one SQL Server instance to another.