Testning kvartspriser 2025

Uppdaterad

Projektledare: Frida Hassel Borowski.

Deltagare: 

  • Lisbeth Palo (MU)
  • Erica Åström (MU)
  • Marianne Olsson (AXEA)
  • Jennie Grönlund Wikström (AXEA)
  • Peder Burman (IT)
  • Hans Larsson (IT)


2025-06-09: Uppstartsmöte för testning.

Vi skapar en ny handlingsplan/aktivitetslista i samma docsnr som huvudaktivitetslistan: 1256154. Se flik "Handlingsplan system". Här försöker vi fokusera på specifika actions kopplade till våra stödsystem.

Vi beslutar att varje gruppering testar på sitt håll och sedan sammanstrålar vi för uppföljningsmöte 2025-06-25 kl. 09.00-10.00.

2025-06-13: Uppstartsmöte för mig och Lisbeth avseende testning i Xellent.

Vi börjar med punkten "Konvertera timvärden till kvartar" som finns beskriven i en manual från EG, se docsnr 1284862.

Test 1: 735999100000310027
Test 2: 735999114009058538

Create historical series:


Convert hourly values to 15 minutes:


Fellogg i Xellent:


EG skriver inte i manualen hur många parallella trådar man ska använda:


Frågade Jennie på AXEA:


Vi testade sedan att ange 10 parallella trådar och det fungerade bra.

Vi testade även att köra med och utan angiven batchgrupp. Båda fungerar. Det verkar som att den ändå kör i BAT01 trots att vi inte specificerat att den ska göra det, men det är lite tvetydigt som synes på nedan bild:


Jag och Lisbeth gjorde en liten miss och kontrollerade inte att det fanns timvärden för maj månad på de anläggningar vi testade med. Det visade sig att det inte fanns, så därav kunde vi heller inte se kvartsvärden efter konverteringen. Vi behöver göra ett nytt test där vi kontrollerar att timvärden finns för den period vi konverterar.

Formulär som används i Xellent:


2025-06-17: Nytt testmöte med Lisbeth.

Vi testar konverteringen igen på anläggning 735999243000047811 i UAT. Den här gången konverterar vi från 2025-02-01 eftersom den senaste förbrukningen i UAT var för februari 2025.

Nu kan vi se kvartsvärden under Timvärden och EDM Timvärden:


Vi började sedan fundera kring efterlysningsfunktionerna i Xellent och våra integrationer mot dessa.

Idag använder vi ett formulär i Xellent som heter "Kontroll av timvärden" och det är den som vår timefterlysningsintegration är baserad på.

Tidigare har vi använt ett formulär som heter "Saknade/estimerade/osäkra timvärden" (se PBI 1646 från 2020 då bytet till "Kontroll av timvärden" genomfördes).

Det verkar finnas två nya formulär i Xellent som heter "Saknade kvartsmätarställningar" och "Rapport saknade kvartsmätarställningar".


Jag har idag 2025-06-18 lagt upp en ny PBI (18289) i augustisprinten för förändring av timefterlysningsintegrationen, samt ett nytt ärende (CS2161756) i ServiceNow för att fråga EG vilket formulär vi ska övergå till och om det finns någon manual för det.

Därefter tänkte vi testa EGs skript för massomteckning (se s. 7 och framåt) i EGs manual (docsnr 1284862). Jag kunde dock inte hitta något emergency job som heter "@EGU:15MinNewContractPart", så jag har därför lagt ett nytt ärende (CS2161704) i ServiceNow för att fråga EG.


2025-06-19: Svar från Martin Koskela om emergency jobbet:




2025-06-23: Svar från Mia Thordson om efterlysning av värden:




2025-06-27: Jag och Lisbeth testar "Rapport saknade kvartsmätarställningar" enligt manualen från EG ovan.



Filnamn: Saknade_kvartar_test_1
Katalog:
\\AXP1F\AXInUt\D365Test\Marknadsadministration\Dokument\Loggar\Saknade kvartar
Katalog process:
\\AXP1F\AXInUt\D365Test\Marknadsadministration\Dokument\Loggar\Saknade kvartar\Process
Katalog loggfil:
\\AXP1F\AXInUt\D365Test\Marknadsadministration\Dokument\Loggar\Saknade kvartar\Loggfil

Vi skapade upp en mappstruktur enligt nedan och när jobbet gått klart fick vi en fil i den övergripande mappen "Saknade kvartar":


Filen innehöll rubriker, men inga värden:


Mappen "Process" var tom och i mappen "Loggfil" fick vi en helt tom fil:


Filen innehöll varken rubriker eller värden:


Enligt manualen skulle vi också kunna se ett resultat i "Saknade kvartsmätarställningar"-formuläret i Xellent, ifall vi hade bockat i "Ja" på "Skapa översikt saknade värden" då vi startade jobbet.

Vi såg ingenting i "Saknade kvartsmätarställningar" efter att jobbet gått klart, men det kanske beror på att vi inte fick några saknade värden?


Vi har ställt några följdfrågor till Mia Thordson i ärende CS2161756:


Svar från Mia Thordson:


2025-06-27: Svar från Martin Koskela på EG i ärende CS2161704.

Förtydligande kring hur man hittar det tillfälliga X++ skriptet i Emergency Jobs. Markera "X++ Script / job" i vänstermenyn och välj "Start" i den övre menyn:


Du kommer då till en ny lista där jobbet "Create new contractpart for 15min" finns med:


Klicka på namnet för att komma in i själva jobbet. Martin har instruerat oss i ärendet och i själva jobbet om var man lägger in sökvägen för filerna:


2025-08-06: Uppstart för "Avstämning utveckling/tester"-mötet efter semestern.

Vi ser att X++ skriptet "create new contractpart for 15 min" saknas i UAT nu, det har förmodligen försvunnit i samband med att nytt data lästes över från PROD till UAT 2025-07-07 samt att ny patch 10.0.44 togs in i UAT 2025-07-30.

Jag skapar ett nytt ärende CS2210179 till EG för att be dem lägga tillbaka skriptet i vår UAT.

2025-08-07: Mia Thordson svarar mig i ärende CS2210179 och ordnar så att skriptet läggs tillbaka.

2025-08-12: Möte med Lisbeth, Marianne och Jennie för att ta fram urvalet till "in-filen" som ska användas till omteckningsskriptet. Se docsnr 1287928 för dokumentation.

Vi blir klara med en SQL-fråga för urvalet och vi kommer fram till att de produkter som ska ingå är samtliga produkter som innehåller "flex" samt produkten "XTimSKAB".

Vi kommer också fram till att vi ska undanta portföljavtal i grundfrågan, eftersom de behöver hanteras separat. Det gör vi genom att undanta flexpriskoderna "teknikftg" och "skekommun".

Vi behöver även undanta kontrakt med:

  • Framtida startdatum
  • Framtida omteckning
  • Framtida slutdatum

...vilket vi gör genom att lägga till villkor för start- och slutdatum.

Marianne och Jennie får i uppgift att skapa två nya flexpriskoder i UAT som vi kan testa med.

2025-08-13: "Avstämning utveckling/tester"-möte. Vi får tid över att testa i mötet så vi testar att skapa en "in-fil" och en "logg-fil" och att köra X++ skriptet med dessa.

Vi skapar en ny mapp "KM36" på AXInUt > D365Test > Marknadsadministration.

Vi skapar en "in-fil" för 12 stycken kontrakt med nuvarande flexpriskod "Spot01" och ny flexpriskod "KvSp+0,001":


Vi skapar en tom "Logg-fil" som vi lägger i samma mapp:


Högst upp i X++ skriptet anger vi sökvägar till filerna och klickar därefter på "Kör":


Första körningen gick fel då vi hade missat filändelsen ".txt". När vi la till det så gick körningen bra.

Exempelkontrakt i UAT före körning av skriptet:


Samma exempelkontrakt i UAT efter körning av skriptet:


En ny kontraktsdel skapades. Just dessa exempel hade inga prisstyrningsposter på den gamla kontraktsdelen så vi kunde inte kontrollera om de kopierades till den nya kontraktsdelen, men kampanjkod och avtalsid kopierades och den nya flexpriskoden sattes in.

Vi gjorde ett ytterligare test med fem andra exempelkontrakt som vi omtecknade från flexpriskod "TimSpot" till "KvartSpot". "In-fil":


Tom "logg-fil":


Dessa exempel hade månadsavgift och påslag i prisstyrningen så att vi kunde testa om det följde med till den nya kontraktsdelen, men det gjorde de inte. Jag skapade därför ett nytt ärende till EG, ärendenummer CS2220958, där jag frågar om prisstyrningsposterna och även om engångstjänster kommer att kopieras över (vi kunde nämligen inte se att engångstjänster omnämndes i EG:s manual som beskriver omteckningsskriptet):


Såhär blev loggfilen efter avslutad körning:


Svar från Martin Koskela i ärende CS2220958:


2025-08-18: Jag har meddelat Marianne Olsson att vi behöver ta in hotfixen som blev klar idag, 2025-08-18, och som Martin hänvisar till i sitt svar ovan. Så att vi kan testa det färdiga skriptet i UAT.

2025-09-05: Vi tog in hotfixen 2025-09-02, och fick på så vis det färdiga omteckningsskriptet i UAT. Idag hade jag, Marianne och Jennie ett arbetsmöte då vi testade omteckningsskriptet.

EG har bytt namn på skriptet till "Create new contract part for 15min", jag har även fått en uppdaterad version av manualen där de bland annat ändrat namnet, samt några detaljer som vi påpekat i andra ärenden (prisstyrning, engångstjänster, bland annat).

Skriptet körs från Emergency jobs:


Sökväg till fältet "File name":
\\AXP1F\AXInUt\\D365Test\Marknadsadministration\KM36\INFIL250905_2.txt

Sökväg till fältet "Log file name":
\\AXP1F\AXInUt\\D365Test\Marknadsadministration\KM36\LOGGFIL250905_2.txt

Vi skapade infilen och loggfilen på samma sätt som har beskrivits ovan.

Vi upptäckte att det saknades jobbeskrivning i batchjobbsformuläret när man kör skriptet:


Utfall av tester:
Testomgång 1:
Kontraktsnr 10018447 - individuell tjänst + engångstjänst - OK!
Kontraktsnr 10017203 - två engångstjänster - OK!
Kontraktsnr 10011736 - två individuella tjänster - OK!
Olika flexpriskoder i samma körning - OK!
Kontraktsnr 10190312 - Samma startdatum på gammal och ny kontraktsdel - EJ OK!

Testomgång 2:
Kontraktsnr 10190312 - Samma startdatum på gammal och ny kontraktsdel - EJ OK!
Kontraktsnr 10218519 - Flexpriskod som startat tidigare - OK!
Kontraktsnr 10186080 - Ekonomiska dimensioner – ”RG 82440”, ”Aktivitet 999” - OK!
Kontraktsnr 15585285 - Tre olika engångstjänster, två gamla och en för juni - OK!

Felet med att jobbeskrivning saknas, samt att skriptet inte hanterar samma startdatum på gammal och ny kontraktsdel korrekt, blev en gemensam felanmälan till EG i ärende CS2266227 i SNOW:

Martins svar och fortsättningen på ärendet följer här nedan (läs nerifrån och upp):


2025-11-12: Jag och Lisbeth sätter oss för att testa de nya "specialbeställda" funktionerna i omteckningsskriptet. Men vi kommer inte så långt för det visar sig att vi saknar omteckningsskriptet i UAT. 

Nytt ärende till EG (CS2401452) för att efterlysa skriptet.

2025-11-14: Martin svarade att skriptet fanns på plats igen och då kunde jag också hitta det:


2025-11-26: Jag och Lisbeth sätter oss på nytt för att testa omteckningsskriptet.

Skriver en SQL-fråga för att få ut rätt format på datat till infilen (LimeT2D - Area52):

SELECT P.sourcecontractno + ';' AS KONTRAKTSNR, 

P.flexpricecode + ';' AS GAMMALFLEXPRISKOD,

'KvartSpot;' AS NYFLEXPRISKOD,

'2025-11-30;' AS SLUTDATUM,

'påslagp;' AS ITEMNUMBER,

'0,01;' AS PRIS,

'TEST' AS TXTFIELD3

FROM src_xln_contractpart P

WHERE P.flexpricecode LIKE 'spot%'

AND P.contractpartenddate = '1900-01-01'

AND P.contractpartstartdate < GETDATE()



INFIL251126:


Passar även på att testa att ge jobbet en uppgiftsbeskrivning här:


Vilket Martin hade informerat om skulle motsvara "Jobbeskrivning" i listan över batchjobb, vilket stämde:


Efter avslutad körning såg LOGGFIL251126 ut såhär:


Jag går därefter vidare med att testa tillkommande funktionalitet i omteckningsskriptet (specialbeställt av oss i ärende CS2236020), förklaring av funktionerna kan ses under "SOLUTION" i bilden nedan:


Ny infil vid namn INFIL251126_2 ser ut såhär:


Ny loggfil vid namn LOGGFIL251126_2 ser ut såhär efter avslutad körning:


Testet blev lyckat! Påslagspriset flyttades från flexpriskoden på den gamla kontraktsdelen till prisstyrd artikel påslagp på den nya kontraktsdelen. Värde "TEST" sattes även i Textfält 3 som vi döpt till "Massomteckning":



Ny SQL-fråga som även anger de tre nya/specialbeställda kolumnerna samt semikolonseparerar resultatet i en enda kolumn (färdigt att kopiera ut till exempelvis Notepad++):


SELECT TOP (20)

    CONCAT(

        P.sourcecontractno, ';',

        P.flexpricecode,   ';',

        'KvartSpot;', 

        '2025-11-30;',

        'påslagp;',

        CASE 

            WHEN CHARINDEX('+', F.AMRNAME) > 0

             AND CHARINDEX('öre', F.AMRNAME) > CHARINDEX('+', F.AMRNAME)

            THEN FORMAT(

                    CAST(

                        REPLACE(

                            LTRIM(RTRIM(

                                SUBSTRING(

                                    F.AMRNAME,

                                    CHARINDEX('+', F.AMRNAME) + 1,

                                    CHARINDEX('öre', F.AMRNAME) 

                                        - CHARINDEX('+', F.AMRNAME) - 1

                                )

                            )),

                            ',', '.'

                        ) AS decimal(10,4)

                    ) / 100.0,

                    '0.####'

                 )

            ELSE ''

        END,

        ';',

        'TEST'

    ) AS RAD

FROM src_xln_contractpart P

LEFT JOIN [d365sqlprodslav.skekraft.se].[BIREPORT_UAT].[dbo].[XLN_EXU_FlexBAMRTable] F

       ON F.AMRCODE COLLATE Finnish_Swedish_CI_AS = P.flexpricecode

      AND F.DATAAREAID = 'xdb'


WHERE P.flexpricecode LIKE 'spot%'

  AND P.contractpartenddate = '1900-01-01'

  AND P.contractpartstartdate < GETDATE()


2025-12-05: Jag har fått klartecken från faktureringen att köra omteckningsskriptet på alla timpriskontrakt och mikroproduktions-/produktionskontrakt i UAT. Börjar idag!

Alla med flexpriskod "Spot..." (4 847 st):
P:\D365Test\Marknadsadministration\KM36KVARTSPRIS\INFIL251205
P:\D365Test\Marknadsadministration\KM36KVARTSPRIS\LOGGFIL251205

Alla med flexpriskod "TimSpot" (15 034 st):
P:\D365Test\Marknadsadministration\KM36KVARTSPRIS\INFIL251205_2
P:\D365Test\Marknadsadministration\KM36KVARTSPRIS\LOGGFIL251205_2

Alla med flexpriskod "Ersmikrop" (12 454 st):
P:\D365Test\Marknadsadministration\KM36KVARTSPRIS\INFIL251205_2
P:\D365Test\Marknadsadministration\KM36KVARTSPRIS\LOGGFIL251205_2

Jag startade det första batchjobbet kl. 15:17 och det blev klart kl. 16:11 med status "Fel":


Felet berodde enligt fel-loggen på en dubblett av ett kontraktsnummer (16239232):

Det verkar som att inga kontrakt blev omtecknade, jag undrar om det beror på den enda dubbletten...?

Det finns också varningsloggar som säger "Startdatum ligger utanför intervallet på kontraktsdelen":


2025-12-08: Tog bort den ena dubbletten på kontraktsnr 16239232 i INFIL251205 och testade att köra om den på nytt. Nu gick det bra och dessutom mycket fortare (start kl. 12.06, slut kl. 12.13).

Jag upptäckte att några kontrakt med annan nyttighet än EL-EXT följt med till infilen och blivit omtecknade så jag har lagt till villkor deliverycategory = 'EL-EXT' och companycode = 'XDB' i SQL-frågorna nu. Se excelfil "KM36 - Urval till INFIL massomteckning" för SQL-frågor, m.m.

Jag har kontrollerat INFIL251205_2 efter dubbletter och det fanns inga där så jag har nu testat att starta en ny körning med den filen. Det gick bra! Start kl. 12.23, slut kl. 12.43.

Jag har även kontrollerat INFIL251205_3 efter dubbletter och inte heller i den fanns det några så jag har startat en tredje körning med den filen. Även den gick bra! Start kl. 12.46, slut kl. 12.58.

Fortsätter med att skapa en nya filer enligt nedan:

Alla med MIX-flexpriskod (58 st):
P:\D365Test\Marknadsadministration\KM36KVARTSPRIS\INFIL251208
P:\D365Test\Marknadsadministration\KM36KVARTSPRIS\LOGGFIL251208

Alla med PROD-flexpriskod (4 st):
P:\D365Test\Marknadsadministration\KM36KVARTSPRIS\INFIL251208_2
P:\D365Test\Marknadsadministration\KM36KVARTSPRIS\LOGGFIL251208_2

Körde även dessa omteckningar i UAT idag och båda fungerade bra!

Totalt 32 369 st kontrakt omtecknade i UAT idag (egentligen 32 397 st om man räknar de med annan nyttighet som blev felaktigt omtecknade).

Jag upptäckte att flexpriskoden Prod2% ligger på tilläggsprodukten XProdAvgFB så de 4 kontrakten blev omtecknade två gånger - dels för huvudprodukten XProdErs med flexpriskod Ersmikrop, och dels för tilläggsprodukten XProdAvgFB med flexpriskod Prod2%. Det verkar dock inte ha varit några problem för omteckningsskriptet att klara av som synes på nedan exempel:


Idag har vi även fått återkoppling från EG i ärende CS2280471. Jag har mejlat Sofia Lidgren på MKA och bett henne återkoppla ifall lösningsförslaget som presenteras är okej för MKA:

Nytt ärende till EG (CS2453858) för att fråga hur vi ska göra förändringen i "Mätpunkter per nyttighet" enligt EG:s manual (s. 21-22). Vi diskuterade/testade i UAT i ett snabbinkallat möte med Marianne, Jennie och Lisbeth då faktureringen behövde bolla några saker. Det dök då upp några frågetecken och vi kände att ett ärende till EG var på sin plats.

I mötet med Marianne och Jennie lovade jag också att starta upp ett konverteringsjobb av timserier/timförbrukningar till kvartsserier/kvartsförbrukningar i UAT innan jag går hem för dagen, så att alla timserier förhoppningsvis är konverterade till kvartsserier imorgon bitti. Vi beslutade att konvertera från 2025-09-01.

Jag gick till "Alla serier", markerade alla serier med tidsupplösning "timme", leveransart "EL-EXT" och som inte redan hade prefix "Historisk", klickade på "Converting with historical series" > "Create historical series". Jag gick därefter till "Pending time data conversions" och det hade skapats rader där. Startade då "Convert hourly values to 15 minutes" i batch och till en början såg Mina batchjobb ut såhär (det ser ut som att "Create historical series" felat?):


Efter en liten stund hamnade också jobbet som till en början låg i status "Kör" i status "Avslutat:


Enligt kontrollfråga i BIREPORT_UAT så finns nu 1517 st serier med tidsupplösning "Kvart", så den tycks ha lyckats konvertera några, men långt ifrån alla... Jag får fortsätta att utreda.

SELECT *
FROM XLN_EMS_TimeSeries
WHERE T.TIMERESOLUTION = 1

Guide taggad med: kvart kvartspriser EG
warning Warning.