Pravidelná upozornění

Pravidelná upozornění jsou vlastní upozornění, která jsou automaticky odesílána e-mailem. Obsah upozornění je volitelný, může jít např. o upozornění na blížící se vypršení softwarových licencí, blížící se konec záruční doby určitých zařízení apod.

Pravidelná upozornění mohou spravovat členové skupiny Administrátoři ve WebApp – Správa – Pravidelná upozornění.

Základem definice každého upozornění je jeden SQL skript, který vrací tabulku s parametry zprávy i odesílanými daty. Data jsou vždy součástí textu e-mailu a volitelně mohou být přiložena i jako soubor ve formátu CSV.

Poznámka:
Pravidelná upozornění jsou odesílána prostřednictvím SD WS. Pokud SD WS není na serveru nainstalovaná (např. při použití pouze AM bez SD), upozornění nebude možné odesílat.

SQL skript

SQL skript vytvořeného upozornění je spouštěn pravidelně podle nastavené periody opakování.

Návratová tabulka skriptu musí obsahovat následující povinné sloupce:

Sloupec Popis
From Odesílatel zprávy, např. Alvao DontReply <do-not-reply@domain.com>.
Hodnota NULL znamená, že se upozornění odešle z nastavené adresy odesílatele zpráv systému Alvao.
Uživatelský účet, který je použit pro odesílání zpráv přes SMTP server, musí mít oprávnění odesílat zprávy jménem daného odesílatele.
To Seznam příjemců zprávy oddělených středníkem, např. "user1@domain.com; user2@domain.com".
Cc Seznam příjemců kopie zprávy
Bcc Seznam příjemců skryté kopie zprávy
Subject Předmět zprávy
Text Text zprávy. V textu mohou být použity html značky pro formátování textu.

Návratová tabulka je nejprve seskupena podle parametrů zprávy (povinných sloupců). Výsledný seznam představuje jednotlivé odeslané e-maily. V textu každého e-mailu je pak uvedena tabulka dat obsahující hodnoty z ostatních sloupců tabulky ze všech řádků s danými hodnotami povinných položek.

Poznámka:
Pokud by e-mail obsahoval v libovolném poli (příjemce, kopie, skrytá kopie) více než 50 příjemců, je odeslán po dávkách o maximálním počtu 50 příjemců na pole.
Poznámka:
Upozornění je odesláno pouze tehdy, když SQL skript vrátí nějaké řádky. Pokud by byl seznam entit prázdný, a uživatel o tom i tak chce být informován, skript musí být napsán tak, že vždy nějaké řádky vrátí.
Tip:
Upozornění je možné volitelně vyhodnocovat nad analytickou databází místo produkční databáze. Toto doporučujeme využít zejména u upozornění, u kterých trvá spuštění SQL skriptu dlouhou dobu (desítky a více sekund).
Upozornění:
Každé pravidelné upozornění je spouštěno v transakci s úrovní izolace ReadUncommited. V krajních případech se tedy může stát, že bude skript pracovat s daty, která některý uživatel právě upravuje.

Příklady

Licence s blížícím se koncem platnosti

Níže uvedený dotaz generuje upozornění na softwarové licence, jejichž platnost skončí během následujících 30 dní.

Odesílatel upozornění je odesílatel zpráv systému Alvao. Příjemci upozornění jsou všichni uživatelé, kteří mají oprávnění číst licence některé organizace.

Tabulka s licencemi bude obsahovat jejich Název, Inventární číslo, Platnost od, Počet a Platnost do.

declare @advanceDays int = 30
declare @sender nvarchar(255) = dbo.GetProperty('Alvao.StandardSenderAddress')

select 
    @sender as [From],
    stuff(
    (
        select cast(';' as varchar(max)) + P.sPersonEmail
        from tPerson P
        join vLicRight_Read RR on RR.PersonId = P.iPersonId
        WHERE P.dPersonRemoved is null and ISNULL(P.sPersonEmail, '') != '' 
        for xml path('')
        ), 1, 1, '') as [To],
    null as [Cc],
    null as [Bcc],
    N'Licence s blížícím se koncem platnosti' as [Subject],
    N'Dobrý den,<br/><br/>u níže uvedených licencí skončí jejich platnost během následujících 30 dní.' as [Text],
    LH.txtLicName as [Název licence],
    LH.txtInventoryNum as [Inventární číslo licence],
    LH.dteDate as [Platnost od],
    LH.dteDateExpire as [Platnost do]
from tblLicHist 
where LH.RemovedDate is null
    and (LH.dteDateExpire is not null and LH.dteDateExpire between GETUTCDATE() and DATEADD(day, @advanceDays, GETUTCDATE()))

Počítače s blížícím se koncem záruky

Níže uvedený dotaz generuje upozornění na počítače, jejichž záruční doba skončí během následujících 30 dní.

Odesílatel upozornění je odesílatel zpráv systému Alvao. Příjemci upozornění jsou všichni uživatelé, kteří jsou členy skupiny Správci majetku.

Tabulka s počítači bude obsahovat jejich Název, Druh, Cestu ve stromu a Datum konce záruky.

declare @advanceDays int = 30
declare @kindName nvarchar(255) = N'Záruka do'
declare @sender nvarchar(255) = dbo.GetProperty('Alvao.StandardSenderAddress')
declare @toGroupName nvarchar(255) = N'Správci majetku'

select 
    @sender as [From],
    stuff(
        (
        select cast(';' as varchar(max)) + P.sPersonEmail
        from tPerson P
            join tRolePerson RP on RP.liRolePersonPersonId = P.iPersonId
            join tRole R on R.sRole=@toGroupName and R.iRoleId = RP.liRolePersonRoleId
        WHERE P.dPersonRemoved is null and ISNULL(P.sPersonEmail, '') != '' 
        for xml path('')
        ), 1, 1, '') as [To],
    null as [Cc],
    null as [Bcc],
    N'Počítače s blížícím se koncem záruky' as [Subject],
    N'Dobrý den,<br/><br/>u níže uvedených počítačů skončí jejich záruka během následujících '+cast(@advanceDays as nvarchar)+' dní.' as [Text],
    N.txtName as [Název],
    N.txtClass as [Druh počítače],
    N.txtPath as [Cesta ve stromu],
    PK.txtValue as [Záruka do]
from vNodeClass N
    join vPropertyKind PK on PK.lintNodeId = N.intNodeId and PK.txtKind = @kindName
where N.bolHidden = 0 and N.bolScrapped = 0
    and PK.txtValue is not null
    and (CONVERT(datetime, PK.txtValue, 103) between GETUTCDATE() and DATEADD(day, @advanceDays, GETUTCDATE()))    
    and N.bComputer=1

Změny velikosti paměti RAM na aktivních počítačích v evidenci

Níže uvedený dotaz generuje upozornění na objekty, u kterých byla během minulého kalendářního měsíce změněna vlastnost Velikost paměti RAM (GB).

Odesílatel upozornění je odesílatel zpráv systému Alvao. Příjemci upozornění jsou všichni uživatelé, kteří jsou členy skupiny Správci majetku.

Tabulka s objekty bude obsahovat Datum změny, Název objektu, Druh, Cestu ve stromu, Zprávu o změně a Jméno uživatele, který změnu provedl.

Správcům majetku přijde odpovídající zpráva i v případě, že během minulého měsíce žádné změny provedeny nebyly.

select
    NULL as [From],
    stuff(
    (
        select cast(';' as varchar(max)) + P.sPersonEmail
        from tPerson P
        join tRolePerson RP on RP.liRolePersonPersonId = P.iPersonId
        join tRole R on R.RoleBehaviorId = 11 and R.iRoleId = RP.liRolePersonRoleId
        WHERE P.dPersonRemoved is null and ISNULL(P.sPersonEmail, '') != '' 
        for xml path('')
        ), 1, 1, '') as [To],
    null as [Cc],
    null as [Bcc],
    N'Počítače se změněnou velikostí paměti RAM' as [Subject],
    N'Dobrý den,<br/><br/>u níže uvedených objektů byla během minulého měsíce změněna velikost paměti RAM.<br/>Zkontrolujte, zda byla tato změna oprávněná.' as [Text],
    L.dteLog as [Datum],
    N.txtName as [Název objektu],
    N.txtClass as [Druh],
    N.txtPath as [Cesta ve stromu],
    L.txtLog as [Zpráva],
    P.sPerson as [Uživatel]
into #Result
from tblLog L 
join vNodeClass N on L.lintNodeId = N.intNodeId
join tblKind K on K.intKindId = L.KindId
join tPerson P on P.iPersonId = L.liLogPersonId
where N.bolHidden = 0 and N.bolScrapped = 0 and N.bComputer = 1 
    and K.intKindCode = 147 and L.lintLogKindId = 4
    and (DATEPART(MONTH, L.dteLog) = (DATEPART(MONTH, DATEADD(MONTH, -1, GETUTCDATE()))))

if exists(select 1 from #Result)
    select * from #Result
else
select
    NULL as [From],
    stuff(
    (
        select cast(';' as varchar(max)) + P.sPersonEmail
        from tPerson P
        join tRolePerson RP on RP.liRolePersonPersonId = P.iPersonId
        join tRole R on R.RoleBehaviorId = 11 and R.iRoleId = RP.liRolePersonRoleId
        WHERE P.dPersonRemoved is null and ISNULL(P.sPersonEmail, '') != '' 
        for xml path('')
        ), 1, 1, '') as [To],
    null as [Cc],
    null as [Bcc],
    N'Počítače se změněnou velikostí paměti RAM' as [Subject],
    N'Dobrý den,<br/><br/>během minulého měsíce nebyla u žádného objektu změněna velikost paměti RAM.' as [Text]

drop table #Result

Řešení problémů

Pokud se některé upozornění neodesílá tak jak má, zkontrolujte následující body:

  • Ve WebApp – Správa Pravidelná upozornění v tabulce vyberte dané upozornění. Pokud při jeho posledním vyhodnocení došlo k chybě, v náhledu vpravo najdete text chybového hlášení.
  • V aplikaci SQL Server Management Studio spusťte SQL skript ručně a zkontrolujte, že vrací nějaká data a že vrací všechny povinné sloupce.
  • Zkontrolujte nastavení URL k Service Desk Webservice.
  • Zkontrolujte nastavení odesílání zpráv.

 

Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.