DataKings · Easy suite Quick start
Release 2026.03
voor Exact Synergy Enterprise
Deel een

EasyList

Van SQL-query naar volwaardige Synergy-pagina: kolomkoppen, opmaak per datatype, doorklik-links, sorteren, bladeren, Excel-export, JSON en een dashboard-widget. Je legt de query vast in een Synergy-verzoek — geen code, geen deploy, geen SDK.

De kern: de query is de lijst, en de alias van elke kolom bepaalt de kolomkop én het gedrag van die kolom.

01Het menu

Alles zit onder Menu: Easy by DataKings (Menu.aspx?Layout=CSEasyMenu), verdeeld over de drie standaard Synergy-tabbladen. Gebruikers met de Exact add-on-rol zien dit menu; gebruikers zonder menu kunnen de pagina's als favoriet opnemen.

TabbladMenu-itemWat
InvoerEasy List → Lijsteen nieuwe EasyList
InvoerEasy List → Importerenlijsten uit een exportbestand inlezen (hoofdstuk 10)
OverzichtenEasy List → Overzichtalle lijsten, met filters
InrichtingEasy List → Instellingenhet verzoektype van EasyList (Installatie → Per module)
InrichtingEasy List → Importeren / Exporterenhoofdstuk 10
InrichtingEasy Menu → Instellingen, Licentieconnecties en licentie (Easy Menu)
InrichtingTermen → Initialiseren / Zoekenterm-ID's opzoeken (Easy Menu → Termen)

CSEasyList.aspx zelf staat niet in het menu — dat is de lijstpagina die je vanuit het verzoek, een link, een favoriet of een widget aanroept.

02Je eerste lijst

Voorwaarde: het EasyList-verzoektype is eenmalig ingericht en gekoppeld (zie Installatie → Per module).

  1. Easy by DataKings → Invoer → Easy List → Lijst. Er opent een nieuw verzoek van het ingestelde type.
  2. Vul Omschrijving in (verplicht) en eventueel Aangepaste paginatitel.
  3. Loop de werkstroom door tot minimaal EasyList goedgekeurd.
  4. Kies bij Connectie de datasource en typ je query in SQL Query.
  5. Bewaar en druk op Lijst genereren, of Lijst genereren in nieuw venster.

De knoppen in het verzoek roepen CSEasyList.aspx?id=<verzoek-GUID> aan. Je kunt de lijst ook zelf aanroepen:

CSEasyList.aspx?ID=<GUID van het verzoek>
CSEasyList.aspx?HID=<verzoeknummer, bv. 00.029.131 of 29131>
Statuseis

De lijst draait alléén als het verzoek de status Goedgekeurd (1), Gerealiseerd (4) of Verwerkt (3) heeft — in de meegeleverde definitie: EasyList goedgekeurd, EasyList in gebruik en Verwerkt. Zolang het verzoek EasyList aangemaakt (Open) of Concept is, geeft de pagina geen gegevens.

03Algemene werking van de query

  • Elke kolom in je SELECT wordt een kolom in de lijst, in dezelfde volgorde.
  • De alias is de kolomkop. Geen alias betekent geen bruikbare kop.
  • De alias bepaalt óók het gedrag: aliassen met URL, HTML, TermID of HID worden speciaal behandeld.
  • De opmaak van de wáárden volgt het datatype uit SQL, niet de alias. Cast dus bewust: convert(decimal(18,2), …) levert een rechts uitgelijnd bedrag met 2 decimalen, varchar levert platte tekst.
  • De hele query wordt uitgevoerd en volledig in het geheugen gelezen; bladeren en sorteren gebeuren daarna in het geheugen. Filter dus in SQL — niet met een groot resultaat en Bladeren aan.
  • Bij een Synergy- of Globe-connectie draait de query binnen de lopende Exact-transactie.
  • Een query die commit gevolgd door tran bevat wordt geweigerd (melding Not supported).
  • Een stored procedure mag ook: exec dbo.spMijnLijst of exec dbo.spMijnLijst @P1.

Voorbeeld

select  'WflRequest.aspx?BCAction=1&ID=' + convert(varchar(50), a.ID)  as URLNverzoek,
        a.HID                                                          as VerzoekHID,
        a.Description                                                  as Omschrijving,
        rs.DescriptionTermID                                           as TermIDStatus,
        rs.Description                                                 as Status,
        a.Sysmodified                                                  as Gewijzigd
from    Absences a (nolock)
join    RequestTypeStatus rs (nolock)
          on  rs.AbsenceTypesID = a.Type
          and rs.StatusID       = a.Status
where   a.EmpID = @userid
order by a.Sysmodified desc

Op het scherm zie je hiervan vier kolommen — Verzoek, Omschrijving, Status en Gewijzigd:

  • URLNverzoek is onzichtbaar en maakt van de kolom erna een link die in een nieuw venster opent.
  • VerzoekHID wordt geformatteerd als 00.029.131; de kop wordt Verzoek, want het achtervoegsel HID verdwijnt.
  • TermIDStatus is onzichtbaar en vertaalt de statuswaarde in de kolom erna.
  • Gewijzigd is een datetime en wordt automatisch als datum + tijd opgemaakt.

Wil je vertaalde kolomkoppen, zet dan het term-ID achter de kop — zoek het op via Termen → Zoeken:

a.HID           as [VerzoekHID, <termid>],
a.Description   as [Omschrijving, <termid>],

Connecties

In het verzoekveld Connectie kies je waar de query tegen draait:

KeuzeBetekenis
Synergyde Synergy-database, binnen de lopende Exact-transactie
Globe<nr>een Globe back-office-administratie — alleen actieve administraties met back-office aan
eigen naameen van de max. 5 connecties uit Easy Menu → Instellingen

Met een eigen connectie kun je cross-database queries doen en zelfs lijsten maken over gegevens uit andere applicaties.

04Aliassen: de harde features

Alle prefixen zijn niet case-sensitive: urln…, URLN… en UrlN… werken alle drie.

<naam>zichtbaar
kolomkop is <naam>
[<naam>, <termid>]zichtbaar
kolomkop uit term <termid>, met <naam> als fallback. Bijv. as [Medewerkersnummer, 281818]
[<naam>, <termid>, <breedte>]zichtbaar
idem, plus een vaste kolombreedte met eenheid: 20%, 150px, 8em. Bijv. as [Omschrijving, 4243, 20%]; zonder term-ID: as [Omschrijving,, 20%]. Zonder breedte bepaalt EasyList hem op het kolomtype (hoofdstuk 05). Een los getal zonder eenheid blijft een term-ID
URL…onzichtbaar
de waarde wordt de hyperlink van de direct volgende kolom. Zelfde venster
URLN…onzichtbaar
idem, nieuw venster — target="_blank"
URLT…onzichtbaar
idem, target="_top"
URLP…onzichtbaar
idem, target="_parent"
URLM…onzichtbaar
idem, target="MainWindow"
URLW…onzichtbaar
idem, opent in een modale pop-up binnen Synergy
HTML…zichtbaar
de waarde wordt níet ge-escaped: je eigen HTML/opmaak wordt gerenderd. Het voorvoegsel HTML verdwijnt uit de kolomkop
TermID…onzichtbaar
de waarde is een term-ID waarmee de waarde van de direct volgende kolom vertaald wordt
HID · HID… · …HIDzichtbaar
de waarde wordt geformatteerd als Synergy-nummer 00.029.131, kolombreedte 80px, en het achtervoegsel HID verdwijnt uit de kop

Details en valkuilen

URL-kolommen horen vóór hun doelkolom

Eén URL…-kolom werkt op precies één volgende kolom; daarna is de link weer weg. Twee URL…-kolommen achter elkaar: alleen de laatste geldt.

De vierde letter bepaalt het target — ook als je dat niet bedoelde

Er wordt alleen gekeken naar de eerste vier letters; de rest van de alias is vrije naamgeving. Noem je je linkkolom naar het ding waar hij naartoe wijst, dan krijg je er ongemerkt een target bij:

AliasGelezen alsResultaat
URLMedewerkerURLMopent in MainWindow
URLProjectURLPopent in _parent
URLTaakURLTopent in _top
URLNieuweRelatieURLNopent in een nieuw venster
URLWerkstroomURLWopent in een modale pop-up

Wil je bewust hetzelfde venster, zorg dan dat de vierde letter géén N, T, P, M of W is — bijvoorbeeld URL_medewerker, URLrelatie of URLklant. Andersom geldt hetzelfde: begin een normale gegevenskolom nooit met URL, want die wordt onzichtbaar en gaat als hyperlink op de kolom erna zitten.

URLW en pop-ups

Zet Actualiseren na sluiten pop-up op Ja als de lijst na het sluiten van de pop-up herladen moet worden. Draait de lijst zelf in een modale pop-up (&IsModal=1), dan wordt &IsModal=1 aan elke link toegevoegd — je link moet dan al een ? bevatten.

TermID werkt alleen op tekstkolommen

De kolom moet direct vóór de te vertalen kolom staan. Is de waarde leeg of niet numeriek, dan wordt term-ID 0 gebruikt en blijft de oorspronkelijke tekst staan.

Term-ID's opzoeken

Via Termen → Zoeken. Die pagina zoekt in de tabel die Termen → Initialiseren vult (per taal, alleen voor een administrator) — is die tabel leeg, dan levert zoeken niets op en moet je eerst initialiseren. Vind je geen bestaande term, gebruik dan [Naam, 0] of laat het term-ID weg; de fallbacktekst wordt dan gebruikt.

De komma-notatie

Alleen het deel ná de láátste komma wordt als term-ID gelezen, en alleen als het een niet-negatief geheel getal is. as [Omzet, netto, 1234] geeft dus kop Omzet, netto met term 1234. Is het laatste deel geen getal, dan hoort het gewoon bij de tekst. Een breedte herkent EasyList aan de eenheid: staat er achteraan 20% of 150px, dan is dat de breedte en is het deel ervoor het term-ID. Laat geen spatie staan direct vóór de komma bij een …HID-alias — anders wordt de HID-formattering niet herkend.

Combineren mag

as [HTMLOmschrijving, <termid>] geeft een HTML-kolom met een vertaalde kop en Omschrijving als fallback. Een URL…-kolom vóór een HTML…-kolom levert een link om je eigen HTML.

05Automatische opmaak per datatype

SQL-typeWeergaveBreedteUitlijning
int, bigint, smallintgeheel getal in gebruikersnotatie100pxrechts
decimal, numeric, float, real2 decimalen in gebruikersnotatie100pxrechts
bit, tinyintvinkje; met een URL… ervoor: Check.svg / Cross.svg100pxlinks
datetime, datejaar 1899 → alleen tijd; 00:00 → alleen datum; anders datum + tijd125pxlinks
uniqueidentifierGUID met accolades, {…}150pxlinks
varbinary, imageNot supported100pxrechts
overig (tekst)platte tekst, HTML-ge-escaped tenzij HTML…autolinks
alias eindigt op HIDSynergy-nummer 00.029.13180pxlinks

De breedte in deze tabel is de standaard; een breedte in de alias (hoofdstuk 04) gaat voor. Rechtse uitlijning wordt via gegenereerde CSS (#col<n> { text-align: right; }) toegepast en werkt dus ook in een widget en in een via JavaScript ingesloten lijst.

06Parameters

Dynamische waarden

Deze tokens worden vóór uitvoering tekstueel vervangen (niet case-sensitive). Handig voor “mijn”-lijsten en voor periodes zonder dat de gebruiker iets hoeft in te vullen: where a.EmpID = @userid and a.StartDate >= @STARTOFYEAR

TokenWaarde
@USERID, @MEresource-ID van de ingelogde gebruiker
@REALUSERIDresource-ID van de échte gebruiker (bij delegatie)
@USERNAMEinlognaam
@DIVISION, @DIVISIONGROUP, @COSTCENTERdivisie, divisiegroep, kostenplaats van de gebruiker
@SECURITYLEVELbeveiligingsniveau van de gebruiker
@TODAY, @NOWvandaag (zonder tijd) en nu (met tijd)
@STARTOFWEEK, @ENDOFWEEKmaandag en zondag van deze week
@STARTOFMONTH, @ENDOFMONTHeerste en laatste dag van deze maand
@STARTOFYEAR, @ENDOFYEAR1 januari en 31 december van dit jaar

Achter een datumtoken mag een verschuiving: @TODAY-30 (30 dagen terug), @TODAY+1M (een maand vooruit), @STARTOFYEAR-1Y (begin vorig jaar). Zonder letter zijn het dagen; M is maanden en Y is jaren.

  • Getallen komen er kaal in, tekst en datums tussen quotes. Zet je zelf al quotes om het token ('@USERNAME'), dan komen er geen dubbele omheen.
  • Datums komen als yyyy-MM-ddTHH:mm:ss in de query: die vorm leest SQL Server altijd hetzelfde, ongeacht de taalinstelling van de verbinding.
  • @P1 … @P99 blijven met rust, en woorden die met een token beginnen maar doorlopen (@MEMO, @USERIDX) ook.
  • Bij Exporteren blijven de tokens staan; er gaat dus geen naam of ID van jouw omgeving mee in het exportbestand.
  • Dezelfde tokens werken in Browser extra criteria / SQL Query van een parameter en in de standaardwaarde van een parameter.

@P1 … @P99

Echte SQL-parameters. De waarden komen mee in de URL:

CSEasyList.aspx?ID={guid}&P1={GUID van relatie}&P2=2026

-- in de query:
where cmp_wwn = @P1
  • EasyList kijkt of de query de tekst @p1 bevat. Zonder @P1 worden er geen parameters doorgegeven, ook niet als je @P2 gebruikt. Nummer dus altijd vanaf @P1.
  • Een lege waarde wordt NULL. Vang dat op met bijv. (@P1 is null or cmp_wwn = @P1).
  • Ontbreken verplichte parameters, dan wordt de lijst niet uitgevoerd — melding Missing: Parameters, of doorsturen naar de parameterpagina.

De gebruiker de parameters laten invullen

Parameters opvragen?Gedrag
0 — geenparameters komen alleen uit de URL
1 — boven EasyListinvoervelden boven de lijst op dezelfde pagina
2 — aparte paginaknop Parameters, invoer op een aparte pagina

Daarnaast: Aantal kolommen (1 of 2) voor de indeling van het invoerscherm, en Toon filter sectie titel (Ja/Nee).

In het grid Parameter details definieer je per parameter:

KolomBetekenis
Parameterhet nummer n van @Pn. Leeg = deze regel is een sectiekop
Type0 Bladeraar · 1 ComboBox · 2 Datum · 3 Bedrag · 4 Geheel getal · 7 Tekst · 5/6 Checkbox horizontaal/verticaal · 8/9 Radiobutton horizontaal/verticaal · -1 Sectie
Labelhet label voor de gebruiker
Termterm-ID voor een vertaald label; 0 = het Label gebruiken
Browsernaam van de te gebruiken standaardbladeraar
Browser extra criteria / SQL Querybij een bladeraar het extra where-criterium, bijv. res_id > 0. Bij ComboBox / checkbox / radiobutton een query select Waarde, Description, TermID from Tabel
Mandatoryis de parameter verplicht
Default valuevoorvulwaarde; mag een dynamische waarde of een query zijn
Valkuilen
  • De volgorde van de rijen bepaalt de volgorde op het scherm; de binding aan @P1, @P2, … gaat op het Parameter-nummer. Voor de leesbaarheid houd je ze natuurlijk gelijk.
  • ComboBox, checkbox en radiobutton zonder query worden stilzwijgend genegeerd.
  • Twee rijen met hetzelfde parameternummer: de tweede wordt genegeerd.
  • Sectierijen (leeg parameternummer) tellen niet mee in de binding.

Een parameter die van een andere afhangt

Zet @P<nummer> in Browser extra criteria / SQL Query en de parameter volgt die andere parameter. Bij een bladeraar in het criterium, bij een keuzelijst in de query:

Parameter 1  Bladeraar  Relatie   CSEasyListParamsCustomers
Parameter 2  Bladeraar  Project   CSEasyListParamsProjects   p.IDCustomer = @P1
Parameter 3  ComboBox   Contact                              select cnt_id, fullname, 0 from cicmpy_person where cmp_wwn = @P1
  • Zolang de relatie leeg is, staat de projectparameter uit: geen zoekknop, een lege keuzelijst en geen “Verplicht”-melding.
  • Zodra je een relatie kiest, werkt het scherm zichzelf bij en zie je alleen de projecten van die relatie.
  • Kies je daarna een andere relatie, dan wordt het gekozen project leeggemaakt. Dat werkt door: hangt 3 aan 2 en 2 aan 1, dan vallen ze allebei weg.
  • Je mag alleen naar een lager parameternummer verwijzen. Daarmee is een kringetje onmogelijk. Verwijs je naar een gelijk of hoger nummer, of naar een parameter die niet bestaat, dan zegt het parameterscherm dat.
  • De waarde komt met de juiste quotes in de query, en een datum in de vorm yyyy-MM-ddTHH:mm:ss.
  • Worden alle parameters via de URL meegegeven, dan komt het parameterscherm er niet aan te pas en verandert er niets.

Een standaardwaarde die zichzelf bepaalt

In Default value mag naast een vaste tekst ook een dynamische waarde (@TODAY-30, @STARTOFMONTH, @USERID, …) of een query, als de waarde met @SELECT begint:

@SELECT top 1 cast(dateadd(month, -1, getdate()) as date) from humres where res_id = @USERID

De query levert één waarde, draait op de Synergy-verbinding en mag zelf ook tokens gebruiken. Gaat er iets mis, dan blijft het veld leeg en komt er een regel in het Synergy-log: een verkeerde query legt nooit het scherm plat.

07Instellingen in het verzoek

De meegeleverde verzoekdefinitie is gelabeld; de kolom Vrij veld staat erbij voor het geval de klant de definitie zelf heeft aangepast. Wijzig de definitie alleen in overleg — deze velden bepalen de werking.

SectieLabelVrij veldEffect
AlgemeenOmschrijvingDescriptionnaam van de lijst; onderdeel van de standaardtitel
AlgemeenAangepaste paginatitelVrij: Tekst 6titel van de lijstpagina; leeg → Easy Lists: <HID> - <omschrijving>
AlgemeenBeschrijving van de EasyListOpm.: Werkstroomalleen documentatie, wordt niet gebruikt
BeveiligingMedewerkerEmpIDingevuld → alleen deze medewerker mag de lijst zien
BeveiligingProjectProjectNumberingevuld → alleen projectleden
BeveiligingHR RolVrij: Tekst 1ingevuld (≠ -1) → alleen gebruikers met deze rol
BeveiligingBeveiligingsniveauSecurityLevelmoet ≤ het niveau van de gebruiker zijn
GedragOpen 1e URL indien 1 recordVrij: Ja/Nee 2bij precies 1 rij direct doorsturen naar de eerste URL…-waarde
GedragBladeren ja/neeVrij: Ja/Nee 3paging aan
GedragStandaard aantal per paginaVrij: Nummer 3regels per pagina; leeg of 0 → 50
GedragToon kolomkopjesVrij: Nummer 11 = Ja (standaard), 0 = Nee. Nee verbergt ook de titelregel boven de lijst, en dus het aantal gevonden records
GedragActualiseren na sluiten pop-upVrij: Nummer 21 = Ja: lijst herladen na het sluiten van een URLW…-pop-up
GedragBulkacties toestaanVrij: Ja/Nee 1vinkjeskolom en actieknoppen aan (hoofdstuk 12); een lijst met bulkacties is niet als widget te kiezen
Aantal gevondenToon aantal recordsVrij: Ja/Nee 4aantal boven de lijst tonen
Aantal gevondenTekst voor aantalVrij: Tekst 4eigen tekst; leeg → Totaal aantal records
SorterenSorteren toestaanVrij: Tekst 5N = Nee · JA = oplopend · JD = aflopend
SorterenStandaard sorteren op kolomnummerVrij: Nummer 5kolomnummer, van links naar rechts geteld over de zichtbare kolommen
Geen gegevensToon ‘Geen gegevens gevonden’Vrij: Tekst 7Y = Ja · N = Nee · C = Aangepast
Geen gegevensToon in resultaat-lijstVrij: Ja/Nee 5melding in het grid i.p.v. erboven
Geen gegevensAangepaste meldingVrij: Tekst 8eigen melding bij C; leeg → geen melding
SQLConnectieVrij: Tekst 3naam van de connectie
SQLSQL QueryOpm.: Verzoekde query
ParametersParameters opvragen?Vrij: Tekst 90 / 1 / 2
ParametersAantal kolommenVrij: Nummer 41 of 2
ParametersToon filter sectie titelVrij: Tekst 10Y / N
ParametersParameter detailsXMLDatahet parametergrid
AlgemeenCategorieVrij: Tekst 11optioneel; het ID van een categorie (zie hieronder)

Niet meer in gebruik, maar nog aanwezig in oudere definities: Globe administratie (oud) Vrij: Tekst 2. Gebruik in plaats daarvan de keuze Globe<nr> in Connectie.

Onder de velden staan twee knoppen die EasyList zelf op het verzoek zet: Acties (de bulkacties, hoofdstuk 12) en Totalen (totalen en subtotalen, hoofdstuk 13).

Tellen van het kolomnummer

URL…- en TermID…-kolommen zijn onzichtbaar en tellen dus niet mee. Tel van links naar rechts alleen de kolommen die de gebruiker daadwerkelijk ziet.

Categorie

In Vrij: Tekst 11 zet je het ID van een categorie. De categorieën zijn van de hele Easy-suite — Easy Script en Easy Verify gebruiken dezelfde lijst — en worden onderhouden onder Overzichten → Easy Menu → Categorieën (zie Easy Menu). Hoe je het veld op het verzoektype inricht, bepaal je zelf; EasyList leest het ID en zoekt de omschrijving erbij.

Schrijf het ID zonder accolades

Het veld is tekst, dus de vorm die erin staat moet precies de vorm zijn die jouw keuzelijst teruggeeft: 13c0d4ee-f2d5-4e30-aec0-56fd4805e759, niet {13c0d4ee-…}. Let daarop in de query achter het veld — geef je de kolom ID ruw terug, dan maakt Synergy er in een keuzelijst {…} van en herkent het veld zijn eigen waarde niet meer. Casten naar tekst levert de goede vorm, zoals in de selectie hieronder; de import schrijft dezelfde vorm. Bij het lezen van de categorie (kolom, filter, export) maakt het niet uit of er accolades omheen staan; het is puur het veld op het verzoek dat exact moet matchen.

Selectie voor Vrij: Tekst 11

select '' as ID, '' as Description
union all
select cast(ID as varchar(36)) as ID, Description
from CSEasyMenuCategories
order by Description

Een categorie heeft geen invloed op de werking van de lijst. Hij dient om te groeperen: in het overzicht staat hij als kolom en als filter, en op de exportpagina kun je er op filteren. Staat er iets in het veld dat geen bestaand categorie-ID is, dan blijft de kolom gewoon leeg. Bij het exporteren gaan het ID én de omschrijving mee; bij het importeren wordt eerst op ID gezocht, dan op een precies gelijke omschrijving, en anders wordt de categorie aangemaakt.

08Parameters in de URL

ParameterEffect
ID=<guid>de EasyList, op verzoek-GUID
HID=<nummer>de EasyList op verzoeknummer — 00.029.131 of 29131
P1=… P2=…waarden voor @P1, @P2, …
Title=…alternatieve paginatitel; gaat vóór Aangepaste paginatitel
noheader=1verbergt de paginakop én de knoppenbalk
notitle=1verbergt de paginakop en de knop Sluiten, maar houdt de knoppenbalk; de lijst wordt net als bij js=1 niet als 'laatst bezochte pagina' onthouden
nocaption=1verbergt de kolomkoppen én de titelregel boven de lijst, en dus het aantal records
noparam=1vraagt geen parameters, ook als het verzoek dat wel wil
js=1markeert de aanroep als script-aanroep: de lijst wordt niet als ‘laatst bezochte pagina’ onthouden en komt dus niet ongewenst terug na het sluiten van een pagina
inscript=1 jquery=1idem, voor insluiting via EasyScript / jQuery
IsModal=1de lijst draait in een modale pop-up; wordt doorgegeven aan alle links in de lijst
JSON=1uitvoer als JSON in plaats van HTML
Excel=1uitvoer als .xlsx-download

09Andere uitvoervormen

De paginakop van een lijst heeft de knoppen Definitie (naar het onderliggende verzoek), Exporteren: Excel, Afdrukbaar, widget toevoegen aan de workspace en Favorieten.

Excel. Levert een .xlsx met titel, administratie, gebruiker en de gebruikte parameters in de kop. Paging wordt genegeerd: alle rijen gaan mee. Het werkblad toont dezelfde kolommen als het scherm: het label uit de alias als kop, vertaald als er een term-ID bij staat en zonder het achtervoegsel HID. De hulpkolommen URL… en TermID… en de selectiekolom CHKKEY… gaan niet mee; een TermID…-kolom vertaalt wel eerst de tekstwaarde van de kolom erachter, net als op het scherm. Zijn er totalen ingericht (hoofdstuk 13), dan staan de groepstotalen en het totaal generaal als extra regels in het werkblad — vet met een lijn erboven, met een witregel na het totaal van het buitenste niveau, precies als op het scherm. Transportregels komen er niet in, Excel heeft geen pagina's.

Afdrukken. Afdrukbaar rendert alle rijen zonder paging.

JSON. &JSON=1 geeft een JSON-array van objecten. Ook hier gelden de ruwe aliassen als property-namen, zonder opmaak; datums komen als yyyy-MM-ddTHH:mm:ss. Bij een fout of leeg resultaat komt er een object met een error-tekst terug. Totaalregels zitten er nooit in: JSON is voor afnemers die regels als data lezen.

Favoriet. Bewaart de lijst inclusief de actuele parameters en sortering.

Widget. Via Widget toevoegen op de lijstpagina, of op het dashboard onder categorie Easy: kies EasyList, geef de widget een titel, selecteer de EasyList, vul eventueel de parameters, kies een icoon en de lay-outopties.

Waarde uit. Heeft de lijst parameters, dan staat er in de parameterpopup van de widget per parameter een keuze:

Waarde uitBetekenis
Waardede waarde die je hier invult (het gedrag van vroeger)
URL parameterP<nummer> uit de URL van de pagina waar de widget op staat
Standaardwaardede standaardwaarde uit de definitie, inclusief @TODAY-achtige waarden

Bij URL parameter en Standaardwaarde hoef je in de widget niets in te vullen: het invoerveld staat uit en de parameter is daar niet verplicht. Zo maak je een workspace waarop meerdere EasyList-widgets hun waarde uit dezelfde URL halen, bijvoorbeeld Home.aspx?ID=1057&P1=PROJ-0042. Let op: dit gaat op nummer. Staan er twee lijsten op één workspace waarvan @P1 bij de een een project en bij de ander een relatie is, dan krijgen ze allebei dezelfde waarde. Ontbreekt de parameter in de URL, dan meldt de widget Ontbrekend: Parameters: P1.

Heeft de lijst helemaal geen parameterregels — de query gebruikt @P1 maar in Parameter details staat niets, omdat de waarden altijd uit de URL komen — dan vraagt de widget ook niets meer. Je kiest de Easy List, bewaart, en de widget leest P1, P2, … uit de URL van de pagina waar hij op staat. Er valt dan immers niets te kiezen bij Waarde uit. Staat de waarde niet in de URL, dan blijft de widget niet stil leeg maar meldt hij Ontbrekend: Parameters.

10Importeren en exporteren

Met Exporteren kies je één of meer EasyLists en download je ze als XML-bestand; met Importeren lees je dat bestand weer in. Zo zet je een op ontwikkel of test gemaakte lijst over naar de live-omgeving met behoud van hetzelfde ID, zodat bestaande links, favorieten en widgets blijven werken. De bulkacties met hun parameters (hoofdstuk 12) en de totalen (hoofdstuk 13) gaan mee.

Bij het importeren worden de bulkacties en de totalen van de doellijst eerst helemaal verwijderd en daarna opnieuw aangemaakt uit het bestand, met nieuwe ID's. De ID's uit het bestand worden dus niet hergebruikt. Dat is met opzet: pas je in het XML-bestand het ID van de lijst aan om er een kopie van te maken, dan zouden de acties en totalen anders van de oorspronkelijke lijst náár de kopie verhuizen, en was je ze bij de bronlijst kwijt. Gevolg van dit vervangen: een bestand zonder acties of totalen maakt de doellijst ook leeg op die punten.

11Een EasyList in een ander verzoektype

Bij het bewerken van een ander verzoektype (Verzoeken → Inrichting → Verzoektypen) staat onder de veldenlijst een knop Toevoegen: EasyList. Die opent de EasyScript-sectiewizard en voegt een sectieveld toe met de JavaScript die de gekozen EasyList in dat verzoek insluit; de sectiekop krijgt automatisch de titel van de EasyList. Deze functie vereist dat EasyScript geïnstalleerd is.

12Bulkacties

Met bulkacties zet je knoppen boven de lijst waarmee de gebruiker één bewerking op alle aangevinkte regels uitvoert: verzoeken goedkeuren, een status zetten, een veld bijwerken. De bewerking zelf loopt via EasyVerify: per aangevinkte regel wordt een stored procedure aangeroepen die de _CSEasy…-tabellen vult, en daarna voert EasyVerify die tabellen uit — precies zoals bij de EasyVerify-actie Tabel(len) uitvoeren. Een procedure die voor EasyVerify is geschreven, werkt hier zonder aanpassing. Bulkacties vereisen daarom de module EasyVerify in de licentie (hoofdstuk 14).

Inrichten in vier stappen

  1. Bulkacties toestaan aanzetten op de lijstdefinitie (Vrij: Ja/Nee 1, hoofdstuk 07).
  2. Sleutelkolom in de query. Geef de kolom met de sleutel van de regel een alias die begint met CHKKEY, bijvoorbeeld a.ID as CHKKEYID. Die kolom wordt de vinkjeskolom, met in de kop een vinkje voor alles-selecteren. De waarde is wat de actie als sleutel meekrijgt; toon hem elders nog een keer als de gebruiker hem moet zien. De vinkjeskolom telt mee als zichtbare kolom bij het kolomnummer voor sorteren en totalen.
  3. Acties inrichten via de knop Acties op de lijstdefinitie.
  4. Testen op de lijstpagina: regels aanvinken, knop, bevestigen.

Een actie

VeldBetekenis
Knoptekst, Term:ID, Achtervoegselde knoptekst, desgewenst uit een term
Volgordevolgorde van de knoppen boven de lijst
Geactiveerduit = knop wordt niet getoond
Rolalleen gebruikers met een van deze rollen zien de knop; leeg = iedereen die de lijst mag zien
Bevestigingsvraag (+ Term ID)de vraag vóór het uitvoeren; leeg = standaardvraag met het aantal aangevinkte regels
Resultaatmeldingsjabloon voor de melding na afloop; {{successcount}} en {{errorcount}} worden vervangen door de aantallen, bijv. {{successcount}} verzoek(en) goedgekeurd. Leeg = x gelukt, y niet gelukt
Fouten tonenaan = de foutteksten van de mislukte regels worden aan de gebruiker getoond; uit = alleen de aantallen, de details staan in het Synergy-foutenlog
Stored procedurekeuzelijst met alle procedures in de database
Tabel 1 … 5de _CSEasy…-tabellen die na de procedure in volgorde worden uitgevoerd
Parametersverschijnen automatisch zodra je een procedure kiest, met een voorstel per parameter

Per parameter vul je een vaste waarde in of een van de specials. Een special mag ook in een langere tekst staan; dan wordt hij daarin vervangen.

SpecialWaarde
@_Keyde aangevinkte sleutel (de CHKKEY…-kolom)
@_SessionIDde sessie-GUID waarmee de procedure de _CSEasy…-tabellen vult
@_CurrentUserhet resource-ID van de gebruiker die de actie uitvoert
Let op

@_SessionID en @_CurrentUser heten in EasyVerify precies zo. Maar @ID werkt hier niet als sleutel — dat is een EasyVerify-conventie voor de kaartpagina's; gebruik @_Key. Een verkeerde special levert een SQL-conversiefout op die alleen in het foutenlog staat (of op het scherm met Fouten tonen).

Voorbeeld: aangevinkte verzoeken goedkeuren

create procedure dbo.spCSEasyList_Actions_GoedkeurenVerzoeken(@ID uniqueidentifier, @SessionID uniqueidentifier)
as
begin
    insert into _CSEasy_Request (_BCAction, _Session, ID, Status)
    values (1, @SessionID, @ID, 1)   -- 1 = bewerken; Status 1 = goedgekeurd
end

Actie: procedure dbo.spCSEasyList_Actions_GoedkeurenVerzoeken, parameters @ID = @_Key en @SessionID = @_SessionID, Tabel 1 = _CSEasy_Request. EasyVerify werkt de verzoeken bij en bouwt de workflow opnieuw op. De _CSEasy…-tabellen en hun kolommen staan beschreven in de EasyVerify-quickstart.

Wat de gebruiker ziet

De gebruiker vinkt regels aan en klikt op de knop. Na de bevestigingsvraag wordt de actie per regel uitgevoerd, elke regel in een eigen EasyVerify-sessie: een regel die mislukt, houdt de andere niet tegen. Daarna volgt de resultaatmelding en wordt de lijst herladen. Bulkacties werken alleen op de volledige lijstpagina, niet in de widget, bij de Excel-export, bij afdrukken of in de JSON-uitvoer.

13Totalen en subtotalen

Een lijst kan een totaal generaal krijgen en subtotalen per groep, tot drie niveaus diep (bijvoorbeeld per debiteur, daarbinnen per medewerker). Je richt het in via de knop Totalen op de lijstdefinitie; de configuratie staat los van de query, op kolomnummer.

Kolomnummers tel je van links naar rechts over de zichtbare kolommen, precies zoals bij de standaard sorteerkolom (hoofdstuk 07): URL…- en TermID…-kolommen tellen niet mee, een CHKKEY…-kolom wel. Op de onderhoudspagina's kies je de kolom uit een lijst met nummer, kop en type, dus tellen hoeft alleen als de query niet zonder verplichte parameters kan draaien.

Totaalkolommen

VeldBetekenis
Kolomde kolom die getotaliseerd wordt; één regel per kolom
AggregaatSom, Aantal, Gemiddelde, Minimum, Maximum. Som en gemiddelde alleen op getalkolommen
Meetellenof lege waarden (NULL) meetellen, zie hieronder
Decimalenleeg = afgeleid van de kolom: geheel getal 0, decimaal 2, gemiddelde 2, aantal 0
AggregaatMeetellen uit (standaard, zoals SQL)Meetellen aan
SomNULL telt niet meeidem, vinkje doet niets
Aantaltelt de regels met een waardetelt alle regels
Gemiddeldesom / regels met een waardesom / alle regels
Minimum, MaximumNULL wordt genegeerdidem, vinkje doet niets

Tien regels, negen met 10 en één leeg: gemiddelde 10 met meetellen uit, 9 met meetellen aan.

De keuzelijst toont alleen kolommen die nog géén totaal hebben. Bewaar je een totaalkolom terwijl er nog geen enkel niveau is, dan maakt EasyList niveau 0 (totaal generaal) er vanzelf bij: zonder niveau levert een totaalkolom namelijk geen enkele totaalregel op.

Niveaus

VeldBetekenis
Niveau0 = totaal generaal (zonder kolom); 1 t/m 3 = subtotalen, van buiten naar binnen
Kolomde groepeerkolom: elke andere waarde begint een nieuwe groep
Kopje (+ Term ID)de tekst van de totaalregel, met placeholders
Aantal tonenhet aantal regels van de groep tussen haakjes achter het kopje

Placeholders in het kopje: {value} = de waarde van de groepeerkolom, {4} = de waarde van kolom 4 uit de eerste regel van de groep (opgemaakt zoals in de lijst), {count} = het aantal regels. Een term mag dezelfde placeholders bevatten. Voorbeelden: Totaal voor debiteur {4}:, Overall totaal:.

Elk niveau kan maar één keer voorkomen en op dezelfde kolom groeperen als een ander niveau heeft geen zin: de keuzelijsten laten daarom alleen de vrije niveaus en kolommen zien. Zijn alle vier de niveaus in gebruik, dan zegt de pagina dat.

Werking

  • Alle totalen worden berekend over de volledige resultaatset, na parameters, niet alleen over de getoonde pagina.
  • Een groepering dwingt de sortering: eerst op de groepeerkolommen, daarbinnen op wat de gebruiker aanklikt. Anders zouden groepen versnipperd raken. Dat gebeurt ook als sorteren op de lijst uitstaat; die instelling gaat alleen over de sorteerknoppen in de kolomkoppen.
  • Totaalregels staan vet met een lijn erboven, en na het totaal van het buitenste groepsniveau komt een witregel, zodat de groepen los van elkaar staan. Dat geldt op het scherm én in de Excel-export. Transport- en subtotaalregels op een paginagrens krijgen die witregel niet.
  • Het groepstotaal staat na de laatste regel van de groep. Loopt een groep door over een paginagrens, dan komt onderaan de pagina Subtotaal: met de stand tot en met die pagina, en bovenaan de volgende pagina hetzelfde bedrag als Transport:. Het totaal generaal staat op elke pagina onderaan.
  • In Excel komen de groepstotalen en het totaal generaal als regels mee (hoofdstuk 09); in JSON niet; in de widget en in een ingesloten lijst (js=1, inscript=1, jquery=1) wel. De opmaak van de totaalregels zit in de regel zelf, dus die blijft ook in een vreemde pagina staan. In demomodus worden de totalen over de getoonde regels berekend.
  • Een URL…-kolom vóór een getotaliseerde kolom wordt in totaalregels genegeerd; totaalregels hebben in deze versie geen links.
  • Klopt de configuratie niet (kolomnummer bestaat niet, som op een tekstkolom), dan wordt dat totaal overgeslagen en ziet een beheerder een notificatie boven de lijst; de lijst zelf blijft werken.

Voorbeeld

Query met kolommen ID, Bedrag, Relatie, Debiteurnummer (kolom 1 t/m 4):

TotaalkolommenNiveaus
kolom 1 · Aantal0 · Overall totaal:
kolom 2 · Som1 · kolom 3 (Relatie) · Totaal voor debiteur {4}:

Resultaat: na elke relatie een vetgedrukte regel Totaal voor debiteur 12345: met het aantal onder ID en de som onder Bedrag, en onderaan Overall totaal:. Ook de totalen gaan mee bij im-/export (hoofdstuk 10).

14Demo en licentie

Zonder geldige EasyList-licentie draait de tool in demomodus: maximaal 10 rijen (bij minder dan 10 rijen de helft), met rode meldingen onder de lijst en het werkelijke aantal records. De lijst blijft verder volledig werken, zodat je alles kunt uitproberen. Loopt de licentie bijna af, dan komt er een notificatie boven de lijst.

Bulkacties en de licentie

Bulkacties (hoofdstuk 12) vallen onder de licentie van EasyVerify. Zit die module niet in de licentie, dan toont de lijst de actieknoppen niet en meldt de pagina Bulkacties dat de functionaliteit niet werkt; inrichten blijft mogelijk. Een net geïnstalleerde licentie is na opnieuw inloggen actief.

15Als het niet werkt

SymptoomOorzaak
Je wordt doorgestuurd naar Instellingener is geen verzoektype ingesteld (Installatie → Per module)
Lege pagina of Geen toeganghet verzoek staat nog op EasyList aangemaakt of Concept, of de beveiligingsvelden sluiten je uit
The following data is missing: SQL Queryhet veld SQL Query is leeg
… missing: Connection StringConnectie is leeg of verwijst naar een niet-bestaande connectie
Not supported: commit trande query bevat commit … tran
Missing: Parametersverplichte parameters ontbreken en Parameters opvragen? staat op 0
Een kolom is onzichtbaarde alias begint met URL of TermID
Een link opent in het verkeerde vensterde vierde letter van de URL…-alias
Getal toont als 29131 i.p.v. 00.029.131de alias eindigt niet op HID
HTML wordt letterlijk getoondde alias begint niet met HTML, of de kolom is geen tekstkolom
Geen actieknoppen boven de lijstBulkacties toestaan staat uit, de query heeft geen CHKKEY…-kolom, de actie is niet geactiveerd of niet voor jouw rol, EasyVerify zit niet in de licentie, of je kijkt in een widget/export
Bulkactie: x gelukt, y niet gelukt zonder detailszet Fouten tonen aan op de actie, of kijk in het Synergy-foutenlog; vaak een verkeerde special (@ID in plaats van @_Key) of een parametertype dat niet past
Melding Totalen: kolom n bestaat nietde query is gewijzigd en het kolomnummer verschoven; kies de kolom opnieuw op de pagina Totalen
Totalen staan er nieter is geen totaalkolom ingericht, of je kijkt in de JSON-uitvoer
Deel twee

EasyScript

Je eigen HTML en JavaScript op de standaardpagina's van Synergy: een extra sectie op de relatiekaart, een tabblad met vier onderliggende secties, een knop in de knoppenbalk, een EasyList in een iframe op de medewerkerkaart. Zonder Synergy-code aan te passen en zonder deploy.

De kern: een sectie = een pagina + een stuk script, en dat script mag placeholders gebruiken die EasyScript vult met de gegevens van het record dat op de pagina staat.

01Het menu

Alles zit onder Menu: Easy by DataKings (Menu.aspx?Layout=CSEasyMenu).

TabbladMenu-itemWat
InvoerEasy Script → Sectieeen nieuwe sectie
InvoerEasy Script → Importerensecties uit een exportbestand inlezen (hoofdstuk 09)
OverzichtenEasy Script → Overzichtalle secties, met filters
InrichtingEasy Script → Importeren / Exporterenhoofdstuk 09
InrichtingEasy Menu → LicentieEasy Menu → Licentie

Gebruikers zonder menu kunnen deze pagina's als favoriet opnemen. Er is geen instellingenpagina voor EasyScript zelf — alles zit in de sectie. Secties aanmaken, bewerken, vertalen, im- en exporteren kan alleen een beheerder; anderen zien de onderhoudspagina's read-only.

02Je eerste sectie

  1. Easy by DataKings → Invoer → Easy Script → Sectie.
  2. Kies bij Pagina de Synergy-pagina waar de sectie moet komen (hoofdstuk 03).
  3. Vul een Titel in en kies Type (hoofdstuk 04).
  4. Zet je HTML/JavaScript in het veld Script, of laat het schrijven met een van de Toevoegen-knoppen (hoofdstuk 06).
  5. Zet Geactiveerd aan en bewaar.
  6. Open de betreffende Synergy-pagina en controleer het resultaat.

Staat de sectie op de verkeerde plek op de kaart? De positie en zichtbaarheid van de gegenereerde sectie regel je met de standaard onderhoudsfunctie van de kaart (Aanpassen / Customize) in Synergy zelf, niet in EasyScript.

03Ondersteunde pagina's

25 pagina's. Dit is de complete lijst — een pagina die er niet in staat kan niet gebruikt worden. De kolom Business component is de naam waarmee {{Property}}-placeholders worden opgelost en waarop de property-criteria (hoofdstuk 07) in EasyVerify worden gezocht.

Keuze bij PaginaASPXSoortBusiness component
RelatieCRMAccountCard.aspxkaartAssociates
Relatie (Bewerken)CRMAccountMaint.aspxbewerkenAssociates
ContactpersoonCRMContactCard.aspxkaartContact
Contactpersoon (Bewerken)CRMContactMaint.aspxbewerkenContact
PersoonCRMPersonAccountCard.aspxkaartAssociates
Persoon (Bewerken)CRMPersonAccountMaint.aspxbewerkenAssociates
MedewerkerHRMResourceCard.aspxkaartEmployee
Medewerker (Bewerken)HRMResource.aspxbewerkenEmployee
ProjectProCard.aspxkaartPRProject
Project (Bewerken)ProEdit.aspxbewerkenPRProject
ArtikelLogItemCard.aspxkaartItem
Artikel (Bewerken)LogItem.aspxbewerkenItem
SerienummerLogItemNumber.aspxkaartItemNumber
VerkoopkanskaartCRMOpportunityCard.aspxkaartOpportunities
Verkoopkanskaart (Bewerken)CRMOpportunityMaint.aspxbewerkenOpportunities
Rol - LidSysRoleMember.aspxbewerkenHRRole
VerzoekWflRequest.aspxkaart (gedraagt zich als zoekpagina)Request
Relaties zoeken (Zoeken)CRMSearch.aspxzoekenAssociates
Zoeken medewerkers (Zoeken)HRMResourceSearch.aspxzoekenEmployee
Artikelen zoeken (Zoeken)LogSearch.aspxzoekenItem
Documenten zoeken (Zoeken)DocSearch.aspxzoekenBDDocument
Projecten (Zoeken)ProSearch.aspxzoekenPRProject
Verzoeken zoeken (Zoeken)WflSearch.aspxzoekenRequest
Workspace (Workspace)Home.aspxworkspaceWorkspaces
Easy ListCSEasyList.aspxkaart (gedraagt zich als zoekpagina)Request

Het achtervoegsel zegt wat voor soort pagina het is:

  • geen achtervoegsel — de kaart, weergavemodus
  • (Bewerken) — de onderhoudspagina; je script is actief in de bewerkmodus
  • (Zoeken) — een zoekpagina; alleen type Script, criteria niet beschikbaar
  • (Workspace) — de workspace/homepage; alleen Script of Widget

Kaart en onderhoudspagina zijn losse regels: wil je een sectie in beide modi, dan maak je twee secties aan.

Twee uitzonderingen

Verzoek (WflRequest.aspx) en Easy List (CSEasyList.aspx) hebben geen achtervoegsel maar gedragen zich als zoekpagina: ook daar is alleen type Script beschikbaar — je plaatst dus ruw script, geen kaartsectie. Criteria zijn er wél.

04Types

TypeCodeWat het doetBeschikbaar op
SectieSeen echte kaartsectie, met titel, zoals Synergy ze zelf ook heeftkaart- en bewerkpagina's
TabTeen sectie met tabbladen; de tabbladen zijn secties die je aan deze tab koppeltkaart- en bewerkpagina's
ScriptJruw script, direct in het formulier geplaatst, zonder sectie eromheenalle pagina's
WidgetWals Script, maar bedoeld voor de workspacealleen Workspace

Welke types de dropdown aanbiedt hangt af van de gekozen pagina:

PaginaBeschikbare types
kaart en (Bewerken)Sectie, Tab, Script
Verzoek, Easy List, alle (Zoeken)alleen Script
WorkspaceScript, Widget

Tabbladen ordenen. Maak eerst een sectie van type Tab. Maak daarna secties van type Sectie en zet bij Moeder: Tab de tab waaronder ze moeten hangen. In de tab-sectie staat een lijstje met pijltjes om de volgorde te bepalen. Een tab zonder zichtbare onderliggende secties wordt helemaal niet gerenderd.

Rij: Volledig zet de sectie in een eigen kaartrij over de volle breedte, in plaats van in de standaardkolom. Alleen beschikbaar voor een losse sectie (geen tabblad) op een kaart- of bewerkpagina.

Toon titel bepaalt of de kop van een tab-sectie getoond wordt.

Volgorde op de kaart. Eerst worden alle tabs gerenderd, daarna de losse secties, alfabetisch op titel; de kolom Volgorde geldt alleen voor de tabbladen binnen een tab. Een uitgeschakelde tab verbergt al zijn onderliggende secties. Een tab met onderliggende secties kan niet verwijderd worden (de knop staat uit); in het lijstje op de tab kun je per tabblad Geactiveerd omschakelen.

05Het script en de placeholders

Het scriptveld is vrije HTML/JavaScript. jQuery en de scriptfuncties van EasyList (de pop-up voor URLW…-links en het ophalen van lijsten, hoofdstuk 06) zet EasyScript zelf al op de pagina, dus die kun je gebruiken.

Twee soorten placeholders worden vóór het renderen vervangen:

{{KeyValue}}
de sleutelwaarde van het record op de pagina — op de medewerkerkaart het res_id, op de relatiekaart het cmp_wwn
{{<PropertyName>}}
de waarde van die property uit de business component van de pagina, bijv. {{FullName}}, {{City}}, {{Status}}

{{KeyValue}} komt uit het sleutelveld van de pagina, of anders uit de URL. {{<PropertyName>}} wordt opgelost door de business component van de pagina in editmodus te openen op de sleutelwaarde en die property uit te lezen. Waarden worden geformatteerd naar het type:

TypeWeergave
Boolean1 of 0
Datumin de notatie van de gebruiker
Guidmet accolades, {…}
Getal / percentage / seconden2 decimalen in gebruikersnotatie
Binary / Pictureleeg
overigde tekstwaarde

Quotes worden automatisch geëscaped als de placeholder tussen enkele of dubbele quotes staat: '{{FullName}}' levert 'O\'Brien'. Het teken waartussen de placeholder staat wordt geëscaped, net als backslashes en regeleindes in de waarde. {{KeyValue}} wordt nooit geëscaped, en staat de placeholder niet tussen quotes, dan gebeurt er niets. Dit is JavaScript-escaping: staat de placeholder in een HTML-attribuut (title="{{Description}}"), dan hoort daar HTML-encoding; dat onderscheid maakt EasyScript niet.

Een onbekende property levert stilzwijgend een lege waarde op — een typefout in een propertynaam zie je dus niet als foutmelding, alleen als leeg resultaat. Kan de business component zelf niet geopend worden op de sleutelwaarde, dan blijven alle {{…}} letterlijk in de uitvoer staan.

Op een bewerkpagina zonder sleutelwaarde (dus bij een nieuw record) wordt {{<PropertyName>}} niet vervangen door een waarde maar door een SysGet('<PropertyName>')-aanroep, zodat je de actuele waarde uit het formulier leest in plaats van uit de database.

06De generatoren

Onder het scriptveld staan Toevoegen-knoppen die het script voor je schrijven. Ze openen een modaal scherm; na Genereren: Script staat het resultaat in je sectie en kun je het daar nog aanpassen. Alle generatoren plakken hun code achter wat er al in het scriptveld staat.

KnopWat je krijgtWaar
Toevoegen: Easy Listeen EasyList in je sectie, in een iframe of een divzie hieronder
Toevoegen: Knoppeneen eigen knoppenbalk in je sectietype Sectie, Script en Widget
Toevoegen: Knoppen op knoppenbalkextra knoppen op de bestaande knoppenbalk van de paginatype Sectie, Script en Widget
Toevoegen: Monitor itemsextra tegels in de monitor van de kaartkaarten met een monitor
Toevoegen: Monitor (Vervangen)een bestaande monitortegel een andere link of tekst gevenkaarten met een monitor

Een sectie van type Tab heeft zelf geen script en dus ook geen generatoren. De knoppen zijn er alleen voor beheerders.

Toevoegen: Easy List

Zet een EasyList in je sectie. Voorwaarde: de EasyList gebruikt @P1 voor de primaire sleutel van de pagina — res_id bij medewerkers, cmp_wwn bij relaties, enzovoort.

Je kiest de EasyList en het type: iframe of div. Binnen tabbladen adviseren wij een iframe. De generator kijkt zelf welke @P1…@P99 in de query voorkomen, vult @P1 met {{KeyValue}} en zet voor de overige parameters een /* TODO check parameter */ klaar. De parameterdetectie stopt bij het eerste gat: @P1 en @P3 zonder @P2 levert alleen @P1 op.

Onder Easy List: Opties vink je aan:

OptieEffect
Verberg titel en knoppen&noheader=1 in de URL
Verberg titel&notitle=1
Geen parameters opvragen&noparam=1
Json uitvoer&json=1
Lazy loadingstandaard aan: de lijst wordt pas opgehaald als de sectie in beeld komt, en lijsten op dezelfde pagina één voor één (zie hieronder)

&js=1 wordt altijd meegegeven: EasyList weet dan dat de aanroep uit een script komt en laat bijvoorbeeld de bulkactieknoppen weg.

Gegenereerd resultaat, met lazy loading

<script>
(function() {
  var P1 = '{{KeyValue}}';
  var Url = 'CSEasyList.aspx?ID={…}&js=1&noheader=1&P1=' + P1;
  CSEasyListLoadFrame('iframeEL…', Url);
})();
</script>
<iframe STYLE="width: 99%; height: 300px;" id="iframeEL…" frameborder="0"></iframe>

Bij div staat er CSEasyListLoad('divEL…', Url); en krijgt de div een minimale hoogte, zodat hij op de pagina een vlak heeft dat “in beeld” kan komen.

Lazy loading

  • De lijst wordt pas opgehaald als de sectie in beeld komt — net ervoor, zodat hij er meestal al staat als de gebruiker ernaartoe scrolt. Een sectie onder de vouw of op een tabblad dat niet openstaat, kost niets tot de gebruiker er komt, en vaak dus nooit.
  • Staan er meerdere lijsten op een kaart, dan worden ze één voor één opgehaald in plaats van allemaal tegelijk. Synergy verwerkt de verzoeken van één gebruiker toch na elkaar; zo staat de eerste lijst er meteen, in plaats van alles pas aan het eind. Ook de eigen secties van Synergy, zoals Verzoeken en Documenten, hoeven dan niet achter een rij lijsten te wachten.
  • Een oudere browser die dit niet ondersteunt, haalt de lijsten meteen op, maar nog steeds één voor één.
  • Vink je Lazy loading uit, dan krijg je het script van vroeger: de lijst wordt direct bij het laden van de pagina opgehaald.
  • Bestaande secties veranderen niet vanzelf. Wil je een oudere sectie ook zo laten laden, genereer het script dan opnieuw, of vervang de regel die de lijst ophaalt door CSEasyListLoadFrame('<id van de iframe>', Url); of CSEasyListLoad('<id van de div>', Url);.

Waar de knop staat

Deze knop is alleen zichtbaar als het EasyList-verzoektype is ingesteld (EasyList → Instellingen), en niet bij type Script op kaart-, bewerk- en workspacepagina's (daar alleen bij Sectie en Widget; op Verzoek juist wel bij Script), niet op de pagina Easy List zelf en niet op zoekpagina's. Op Verzoek en Easy List laat de generator de <script>-tags weg en zet hij het iframe- of div-element als commentaarregel klaar.

Toevoegen: Knoppen

Maakt een eigen knoppenbalk (<div class="exButtonBar">) in je sectie. Per knop:

VeldBetekenis
Titelde tekst op de knop, bijv. nieuw document
URLde Synergy-pagina. Laat het stuk t/m …/docs/ weg. Met de knop Toevoegen: ID zet je de sleutel van de pagina erin, bijv. CSEasyList.aspx?id={081afff1-…}&P1={{KeyValue}}
Javascripteen JavaScript-functie die al op de pagina beschikbaar is. Ook hier kan {{KeyValue}}

Je kiest per set knoppen de uitlijning, links of rechts.

Toevoegen: Knoppen op knoppenbalk

Zelfde invoer, ander resultaat: de knoppen worden met jQuery toegevoegd aan de bestaande knoppenbalk van de pagina ($('.exButtonBar').first()), zodat ze naast Sluiten/Bewaren staan in plaats van in je eigen sectie. Uitlijning is hier niet instelbaar. Deze generator levert alleen de jQuery, zónder <script>-tags; zet die er zelf omheen als je sectie ze nog niet heeft.

Toevoegen: Monitor items

Zet extra tegels in de monitor van de kaart, naast die van Synergy zelf. Per tegel:

VeldBetekenis
Titelde tekst onder het icoon; verplicht
URLwaar de tegel naartoe gaat; verplicht. Met Toevoegen: ID zet je {{KeyValue}} erin, bijv. CSEasyList.aspx?ID={…}&P1={{KeyValue}}
Popupaan = de pagina opent in een pop-up binnen Synergy in plaats van in hetzelfde venster
Afbeeldingeen icoon uit de afbeeldingenmap van Synergy (alle .svg-bestanden), met een voorbeeld ernaast

Met Toevoegen: Monitor items in de knoppenbalk van de wizard komt er een regel bij. Regels zonder titel of URL worden overgeslagen. Het gegenereerde script bouwt de tegels op zoals Synergy ze zelf maakt en laat Synergy daarna de indeling van de monitor opnieuw bepalen; het icoon krijgt vanzelf de kleur van het thema van de gebruiker, net als de standaardtegels. Elke tegel krijgt een vast ID op basis van de titel: staat hij er al, dan wordt hij niet nog eens toegevoegd.

Een eigen icoon kan ook: zet een .svg in de map docs\images van de Synergy-installatie en hij staat in de keuzelijst. De themakleur werkt voor vormen als path, g, circle en polygon; een losse rect, line of ellipse direct onder de svg houdt zijn eigen kleur.

Toevoegen: Monitor (Vervangen)

Hergebruikt een bestaande, ongebruikte tegel uit de monitor van de kaart. Je geeft het <div>-ID van die tegel, plus een nieuwe URL en/of nieuwe tekst. Het ID achterhaal je met rechtermuisklik → Inspecteren; bij de tegel Kalender is dat bijvoorbeeld Mon_Calender.

Gegenereerd resultaat

<script>
$(document).ready(function() {
  $('#Mon_Calender').find('a').attr('href', 'MijnPagina.aspx?ID={{KeyValue}}');
  $('#Mon_Calender').find('span').html('Mijn eigen actie');
});
</script>

Beide monitorgeneratoren staan alleen op kaarten die een monitor hebben: Relatie, Persoon, Contactpersoon, Medewerker, Project, Artikel, Serienummer en Verkoopkanskaart.

07Zichtbaarheid: rollen en criteria

Rol. Kies één of meer HR-rollen. De sectie wordt alleen gerenderd als de gebruiker minimaal één van die rollen heeft. Geen rol gekozen = zichtbaar voor iedereen.

Geactiveerd. Staat dit uit, dan wordt de sectie helemaal niet ingelezen. Handig om iets tijdelijk uit te zetten zonder het weg te gooien.

Criteria. Hiermee maak je een sectie voorwaardelijk, afhankelijk van het record op de pagina. Er zijn twee varianten, te kiezen met de schakelaar Criteria: SQL.

SQL-criteria (standaard)

Je typt alleen het where-gedeelte, zonder where. EasyScript bouwt zelf:

select top 1 1 as Result
from   <tabel van de pagina> (nolock)
where  <sleutelkolom> = @P1 and (<jouw criteria>)

@P1 is de sleutelwaarde van het record; komt er een rij terug, dan wordt de sectie getoond. Een voorbeeld voor de relatiekaart: cmp_status = 'C', of cmp_wwn in (select cmp_wwn from … ). @userid wordt vervangen door het resource-ID van de ingelogde gebruiker. Het veld Tabelnaam laat zien tegen welke tabel je criteria draaien; dat veld is read-only.

Property-criteria

Zet Criteria: SQL uit en je kunt in plaats van kolomnamen de properties van de business component gebruiken (@PropertyName); er komt een dropdown met de beschikbare properties en een knop om er één in je criteria te plakken. Dit leunt op de paginadefinities van EasyVerify: EasyVerify moet voor dezelfde business component een onderhoudspagina kennen. Is die er niet, dan springt de schakelaar terug naar SQL en verdwijnt de dropdown; ook bij bewaren wordt SQL afgedwongen, zodat de sectie niet stil verdwijnt. Bij het renderen op een kaart (niet-bewerk) zoekt EasyScript de EasyVerify-paginadefinitie op de ASPX-naam; heeft EasyVerify geen definitie voor die kaart, dan wordt een sectie met property-criteria niet getoond.

Verbinding. Criteria kunnen tegen een andere database draaien: Synergy, Globe<nr> of een van de connectiestrings uit Easy Menu → Instellingen. Dezelfde query (select top 1 1 from <tabel> where <sleutelkolom> = @P1 and (…)) draait dan in die database, dus tabel en sleutelkolom van de pagina moeten daar bestaan.

Let op
  • SQL-criteria zonder sleutelwaarde tonen de sectie niet. Op een nieuw record is er geen KeyValue. Property-criteria op een bewerkpagina worden tegen de waarden op het scherm geëvalueerd en werken daar wél.
  • Een fout in je criteria verbergt de sectie, zonder melding op de kaart. Er komt wel een regel in het Synergy-foutenlog: EasyScript: criteria van een sectie op <pagina> konden niet worden uitgevoerd (…), met de foutmelding en de criteria. Test criteria dus met een record waarvan je weet dat het moet matchen, en kijk bij twijfel in het log.
  • Criteria zijn niet beschikbaar op zoek- en workspacepagina's.

08Titels en vertalingen

VeldBetekenis
Titelde sectiekop
Term: IDterm-ID voor een vertaalde kop; 0 = de Titel gebruiken
Titel: Vertaaldeigen vertalingen per taal, via het bewerkicoon in dit veld; een vinkje erachter betekent dat er vertalingen zijn

De volgorde is: is er een eigen vertaling voor de taal van de gebruiker, dan wint die; anders het term-ID; anders de Titel. Bewaar je Titel: Vertaald, dan gaat Term: ID op 0 en wordt Titel overschreven met de tekst in jouw taal; de talen worden vooringevuld vanuit de term. Verwijderen in de vertaalpopup wist alle vertalingen.

09Overzicht, importeren en exporteren

Overzicht toont alle secties met kolommen Titel, Omschrijving, Pagina, Categorie, Type, Moeder-tab, Criteria, Geactiveerd, Rij: Volledig en Gewijzigd (standaardsortering, aflopend). Filteren kan op Geactiveerd, Titel (begint met / bevat / gelijk aan), Gewijzigd, Type, Moeder-tab, Pagina en Categorie. De kop toont het versienummer.

Een sectie kan een optionele Categorie krijgen. Die heeft geen invloed op de werking, maar met tientallen secties maakt het je overzicht, export en import een stuk hanteerbaarder. De categorieën zijn van de hele suite (Overzichten → Easy Menu → Categorieën); Easy List en Easy Verify gebruiken dezelfde lijst. Verwijder je een categorie, dan blijven de secties bestaan, zonder categorie.

Exporteren / Importeren zet secties over binnen je OTAP-straat of haalt ze uit een andere omgeving. Op de exportpagina filter je ook op Categorie. Secties worden geëxporteerd naar een XML-bestand dat je op de doelomgeving weer inleest; een sectie met hetzelfde ID wordt overschreven, tabs gaan vóór hun tabbladen, en per sectie moet een Verbinding gekozen zijn (anders Missing: Connection). De categorie gaat mee met ID én omschrijving: bij het importeren wordt eerst op ID gezocht, dan op een precies gelijke omschrijving, en anders wordt de categorie aangemaakt. De pagina van een sectie gaat mee op ID; de ondersteunde pagina's hebben in elke omgeving hetzelfde ID.

Widget. Op de workspace kun je een EasyScript-widget plaatsen (galerij-categorie Easy, widget EasyScript): je geeft de widget een titel en kiest de sectie die hij moet uitvoeren. De keuzelijst toont alleen geactiveerde secties van type Widget op pagina Workspace. Een Widget-sectie draait uitsluitend in die widget; een Script-sectie op Workspace draait voor iedereen bij elke workspace-load.

10Demo en licentie

Zonder geldige EasyScript-licentie draait de tool in demomodus: het renderen stopt na de eerste tab (met één tabblad) of de eerste sectie, met DEMO MODUS - <titel> - DEMO MODUS als kop. Tabs worden eerst ingelezen, dus met een tab op de pagina zie je alleen die tab en geen losse secties. Secties van type Script en Widget worden niet begrensd. In demomodus krijgt de sectie bovendien per aanroep een nieuw control-ID, waardoor de kaartaanpassing de positie niet kan onthouden. De licentiestatus wordt per sessie gecached, dus na het invoeren van een licentie moet je opnieuw inloggen om het effect te zien. De onderhoudspagina's tonen zonder licentie Demo license met de reden.

11Als het niet werkt

SymptoomOorzaak
De sectie verschijnt nietGeactiveerd staat uit, of de gekozen Rol sluit je uit
De sectie verschijnt niet, en er zijn criteriade criteria matchen niet, er is geen sleutelwaarde (nieuw record, SQL-criteria), de criteria-query gooit een fout (kijk in het Synergy-foutenlog), of EasyVerify heeft geen paginadefinitie voor deze kaart (property-criteria)
Maar één sectie zichtbaar, met DEMO MODUS in de kopgeen geldige licentie
Een {{Property}} blijft leegtypefout in de propertynaam, of het type is Binary/Picture — er komt geen foutmelding
Een tab-sectie is helemaal weggeen enkele onderliggende sectie is zichtbaar (rol of criteria)
Sectie staat op de verkeerde plekpositie regel je via de onderhoudsfunctie van de kaart in Synergy, niet in EasyScript
EasyList in een tabblad rendert scheefgebruik iframe in plaats van div
Knop Toevoegen: Easy List ontbreekthet EasyList-verzoektype is niet ingesteld, je zit op een zoekpagina of op Easy List zelf, het type is Script op een kaart-/bewerk-/workspacepagina, of je bent geen beheerder
Knoppen voor de monitor ontbrekende pagina heeft geen monitor (alleen de acht kaarten uit hoofdstuk 06), of het type is Tab
Een EasyList in een sectie laadt pas als je ernaartoe scroltzo werkt Lazy loading (hoofdstuk 06); genereer het script zonder dat vinkje als de lijst direct geladen moet worden
{{Property}} blijft letterlijk staande business component kon niet geopend worden op de sleutelwaarde (hoofdstuk 05)
Fout in het Synergy-log over “… not found”de kaart of kaartkolom van de pagina is niet gevonden; meestal een Synergy-versieverschil in de paginadefinitie
Deel drie

EasyVerify

Controles en acties op de standaardpagina's van Synergy zonder code: een melding op de relatiekaart als een veld niet klopt, een blokkade bij het bewaren van een medewerker die niet aan een voorwaarde voldoet, een stored procedure die na het opslaan van een verzoek draait, of een reeks mutaties via de executietabellen, of een n8n-workflow die wordt aangeroepen.

De kern: een verificatie = pagina + criteria (@Property in SQL) + actie, op het moment van tonen of van bewaren.

01Het menu

Alles zit onder Menu: Easy by DataKings.

TabbladMenu-itemWat
InvoerEasy Verify → Verificatieeen nieuwe verificatie
InvoerEasy Verify → Importerenverificaties uit een exportbestand inlezen (hoofdstuk 11)
OverzichtenEasy Verify → Overzichtalle verificaties, met filters
OverzichtenEasy Menu → Categorieëngedeeld met EasyList en EasyScript (Easy Menu → Categorieën)
InrichtingEasy Verify → Instellingenhoofdstuk 09
InrichtingEasy Verify → Tabellende executietabellen (hoofdstuk 08)
InrichtingEasy Verify → Importeren, Exporterenhoofdstuk 11

Rechten. Alles wat muteert is voor beheerders (Synergy-beheerdersrol). Niet-beheerders zien de overzichten en bestaande verificaties, categorieën en tabellen read-only; Exporteren, Importeren en het aanmaken van een nieuwe verificatie, categorie of tabel geven Geen toegang.

In het Overzicht zet een beheerder een verificatie aan of uit door op het vinkje in de kolom Actief te klikken; de knop Categorieën staat er ook. De lijstfilters worden als algemene instelling onthouden, dus voor alle gebruikers dezelfde.

02De pagina's waarop EasyVerify werkt

EasyVerify hangt aan een vaste lijst Synergy-pagina's. Er is geen onderhoudsscherm voor; een pagina toevoegen is maatwerk. De ID's van de pagina's zijn in alle omgevingen gelijk, zodat im- en export ertussen werkt.

Keuze in het veld PaginaASPXSoortBusiness component
ArtikelLogItemCard.aspxkaartItem
Artikel (Bewerken)LogItem.aspxonderhoudItem
ContactpersoonCRMContactCard.aspxkaartContact
Contactpersoon (Bewerken)CRMContactMaint.aspxonderhoudContact
CrediteurencodeCRMDivCreditor.aspxkaartDivisionCreditor
Crediteurencode (Bewerken)CRMDivCreditorMaint.aspxonderhoudDivisionCreditor
DebiteurencodeCRMDivDebtor.aspxkaartDivisionDebtor
Debiteurencode (Bewerken)CRMDivDebtorMaint.aspxonderhoudDivisionDebtor
DocumentDocView.aspxkaartBDDocument
Document (Bewerken)DocDocumentEdit.aspxonderhoudBDDocument
MedewerkerHRMResourceCard.aspxkaartEmployee
Medewerker (Bewerken)HRMResource.aspxonderhoudEmployee
PersoonCRMPersonAccountCard.aspxkaartAssociates
Persoon (Bewerken)CRMPersonAccountMaint.aspxonderhoudAssociates
ProjectProCard.aspxkaartPRProject
Project (Bewerken)ProEdit.aspxonderhoudPRProject
RelatieCRMAccountCard.aspxkaartAssociates
Relatie (Bewerken)CRMAccountMaint.aspxonderhoudAssociates
Rol - Lid (Bewerken)SysRoleMember.aspxonderhoudHRRole
Serienummer (Bewerken)LogItemNumber.aspxonderhoudItemNumber
VerkoopkansCRMOpportunityCard.aspxkaartOpportunities
Verkoopkans (Bewerken)CRMOpportunityMaint.aspxonderhoudOpportunities
Verzoek (Bewerken)WflRequest.aspxonderhoudRequest

Daarnaast staat er een verborgen regel voor CSEasyList.aspx (business component Request), die EasyList en EasyScript gebruiken; die is niet te kiezen.

Kaart = de weergavepagina: verificaties worden geëvalueerd bij het laden, met het record uit de database. Onderhoud (achtervoegsel Bewerken) = de bewerkpagina: verificaties lopen bij het laden én, met timing Bewaren, bij het opslaan, met de waarden zoals ze op het scherm staan. Alleen op onderhoudspagina's zijn de timing Bewaren, de gewijzigde waarden en de vorige waarden beschikbaar (hoofdstuk 05).

Twee kanttekeningen bij deze lijst
  • Vorige waarden (@Prev_…) bestaan niet voor Verkoopkans en Serienummer; voor Rol - Lid alleen @Prev_Level. De keuzelijst laat zien wat er per pagina is.
  • Relatie en Persoon delen de business component Associates. Bij het bewaren kijkt EasyVerify naar de eerste onderhoudspagina van die component; verificaties met timing Bewaren op Persoon (Bewerken) vuren daardoor nooit, en het bewaren van een persoon triggert de Bewaren-verificaties van Relatie (Bewerken). Zet een Bewaren-verificatie voor personen dus op Relatie (Bewerken) en onderscheid ze in de criteria (bijvoorbeeld op @Type).

03Je eerste verificatie

  1. Easy by DataKings → Invoer → Easy Verify → Verificatie.
  2. Kies de Pagina. Die keuze ligt daarna vast: een verificatie kun je niet naar een andere pagina verhuizen.
  3. Geef een unieke Omschrijving en eventueel een Categorie.
  4. Vul de Criteria in: het where-gedeelte zonder where, met @Property-placeholders uit de keuzelijst ernaast (knop Toevoegen). Leeg = altijd raak.
  5. Kies Actie en Weergave-opties (tonen of bewaren), en vul het Bericht in.
  6. Zet Actief aan, bewaar, en open de betreffende Synergy-pagina met een record dat aan de criteria voldoet.

De knop Kopiëren op een bestaande verificatie maakt een inactieve kopie met dezelfde instellingen (Omschrijving (Kopie), bij dubbelen (Copy 1), (Copy 2) …) en opent die meteen.

04De velden van een verificatie

SectieVeldBetekenis
AlgemeenCategoriegroepering voor het overzicht en de export; geen invloed op de werking
Omschrijvingverplicht en uniek
Opmerkingenvrije toelichting
Paginade Synergy-pagina (hoofdstuk 02); na aanmaken niet meer te wijzigen
Verbindingde database waarop de criteria draaien: Synergy, Globe<nr> per actieve backoffice-divisie, of een connectie uit Easy Menu → Instellingen. Standaard Synergy. Geldt niet voor de actie
CriteriaSQL-voorwaarde met placeholders (hoofdstuk 05)
ActieBericht, BPA Platform (Orbis) Task, Stored Procedure, Tabel uitvoeren, Geen toegang., Easy WordMerge - Definitie, n8n (hoofdstuk 07)
OptiesActiefalleen actieve verificaties worden geëvalueerd
Weergave-opties (Uitvoeren bij een actie)Tonen = bij het laden van de pagina; Bewaren = bij het opslaan, alleen op onderhoudspagina's
FormaatTekst of HTML voor het bericht
TypeInformatie (notificatie), Fout (rode melding) of Pop-up (alert)
ValidatieBerichtde tekst, met dezelfde placeholders als de criteria; verplicht bij actie Bericht
Stored Procedure / BPA Platform (Orbis) Task / Easy WordMergede keuzelijst die bij de actie hoort
n8n: Verbinding / Pad / JSONbij actie n8n: de n8n-omgeving uit de instellingen, het pad achter de basis-URL en de JSON die verstuurd wordt (hoofdstuk 07)
Prioriteitvolgorde van evalueren en tonen; 0 = als laatste, bij gelijke prioriteit alfabetisch op Omschrijving
Tabel(len) uitvoeren 1–5bij actie Tabel uitvoeren (hoofdstuk 08)
Parametersper parameterde waarde die naar de procedure, taak of definitie gaat; het icoontje bij een parameter opent een popup met de propertylijst en plakt @Property achteraan het veld

Wat kan waar. Op een onderhoudspagina met timing Bewaren: Type alleen Fout, Formaat alleen Tekst, en de acties Bericht, Orbis, Stored Procedure, Tabel uitvoeren, Easy WordMerge en n8n. Met timing Tonen op een onderhoudspagina: Bericht, Orbis, Stored Procedure en Geen toegang. Op een kaart alleen timing Tonen, met Bericht, Orbis, Stored Procedure, Tabel uitvoeren en Geen toegang. Orbis en WordMerge verschijnen alleen als de integratie aan staat.

De keuzelijst met properties (naast Criteria en Bericht) heeft de groepen Eigenschappen, Gewijzigd, Vorige waarden, Modus en Vaste waarde, en toont precies wat op deze pagina en timing beschikbaar is; Modus biedt _Action = 0 (nieuw) en _Action = 1 (bewerken). Properties van het type Binary, Picture en Seconds ontbreken. De knop Toevoegen plakt @Naam op de cursorpositie. De popup bij de parameters toont Gewijzigd en Vorige waarden ook bij timing Tonen, waar ze niet werken; kies daar alleen uit Eigenschappen en Vaste waarde.

Parametervoorstellen. Bij Stored Procedure en Tabel uitvoeren vult EasyVerify lege parametervelden voor met een voorstel: een parameter waarvan de naam eindigt op sessionid, session_id of session krijgt @_SessionID (alleen de eerste); een parameter met dezelfde naam als een property krijgt die property; @RequestID wordt @ID; @CustomerID wordt op Verzoek @CustomerID, op Document @Associate en elders @ID; @Project, @ProjectNr en @ProjectNumber worden op Verzoek @ProjectNumber, op Document en Project @ProjectNr en blijven elders leeg. Orbis- en WordMerge-parameters krijgen geen voorstel.

05Criteria en placeholders

EasyVerify vervangt elke @Property in de criteria door de SQL-literal van de waarde van het record (met quotes, in de juiste notatie) en voert dan uit:

select 1 where <criteria>

Komt er minstens één rij terug, dan is de verificatie raak. Voorbeelden:

@Status = 'C' and @Country <> 'NL'
@Amount > 10000 or @Amount is null
dbo.fnCSEasyIsValidEmail(@Email) = 0

De query draait op de gekozen Verbinding; met Globe<nr> of een eigen connectie kun je dus voorwaarden op een andere database leggen (@CustomerCode in (select debnr from cicmpy where …)).

PlaceholderWaardeBeschikbaar
@<Property>de waarde van die property van de business component van de paginaaltijd
@_Actionbij Tonen op een onderhoudspagina 0 = nieuw, 1 = bewerken, 3 = verwijderen; bij Bewaren 0 = nieuw en 1 = alles anders (ook verwijderen); op een kaart -1altijd; de groep Modus biedt alleen 0 en 1
@_CurrentUserresource-ID van de ingelogde gebruikeraltijd
@_SessionIDéén GUID per paginalading of bewaaractie, gedeeld door alle verificaties in die runbedoeld als parameter (alle vier de acties); in criteria geeft hij een SQL-fout (GUID zonder quotes) en telt dus als raak, in een bericht toont hij de GUID. De keuzelijst biedt hem alleen bij Tabel uitvoeren
@_<Property>_Changed1 als de property in deze bewaaractie gewijzigd is, anders 0alleen onderhoud + Bewaren, en alleen voor de properties in de groep Gewijzigd; een andere property levert null of een SQL-fout op
@Prev_<Property>de waarde vóór de wijzigingalleen onderhoud + Bewaren, en alleen voor de properties in de groep Vorige waarden. Met timing Tonen is hij leeg: null in de criteria

Lege waarden worden letterlijk null: @Prop = 'x' is dan onwaar, @Prop is null werkt. Placeholders zijn hoofdletterongevoelig en gelden altijd voor de hele naam: @IDCustomer wordt niet door @ID geraakt, en een naam die geen property is (@StatusText naast @Status) blijft letterlijk staan en geeft dus een SQL-fout. Gebruik alleen namen uit de keuzelijst.

Let op: een fout in de criteria telt als raak

Levert de SQL een fout op (typefout, onbekende kolom, een @x die geen property is, een property die na het inloggen is toegevoegd), dan wordt dat in het Synergy-foutenlog gezet als Error executing validation criteria for validation <omschrijving>: <fout> en behandelt EasyVerify de verificatie alsof ze matcht: het bericht verschijnt, de actie wordt uitgevoerd, het bewaren wordt geblokkeerd. Zie je een verificatie “altijd” afgaan, kijk dan eerst in het foutenlog. Ben je beheerder, dan zet EasyVerify de SQL-fout er als extra notificatie bij op de pagina zelf: Easy Verify: Error executing validation criteria for validation …. Bij het bewaren verschijnt die alleen als er toch al een melding komt.

06Berichten

TypeHoe het verschijnt
Informatieblauwe notificatie boven de pagina
Foutrode foutmelding boven de pagina
Pop-upJavaScript-alert bij het laden; meerdere pop-ups worden samengevoegd

Het bericht mag dezelfde placeholders bevatten als de criteria; de waarden worden dan opgemaakt zoals de gebruiker ze kent (datum en tijd in gebruikersnotatie, Ja/Nee, getallen met de decimalen van de property, percentages met twee decimalen, GUID's met accolades). Met Formaat HTML wordt de tekst rauw gerenderd, met Tekst ge-encodeerd.

Timing. Tonen evalueert bij elke aanroep van de pagina, dus ook na elke postback. Bewaren evalueert in de repository-hook bij het opslaan van de business component (dus in principe ook bij opslaan via een webservice of import) en blokkeert het bewaren: een raak bericht komt als foutmelding terug op het formulier en er wordt niets opgeslagen. Is bij Bewaren één Bericht-verificatie raak, dan worden de acties (procedure, tabel, Orbis, WordMerge) van diezelfde bewaaractie overgeslagen. Ook een mislukte stored procedure, executietabel of WordMerge blokkeert het bewaren; Orbis-fouten worden alleen gelogd.

De meldingen worden op een vaste plek in de pagina gezet: op het verzoek boven het werkstroomblok, op de medewerkerkaart boven de foto, op de documentpagina's boven de inhoud, elders bovenin de scrollbare inhoud. Lukt dat niet, dan staat Error adding controls on page … in het foutenlog.

07Acties

Bericht. Alleen de melding (hoofdstuk 06).

Geen toegang. De gebruiker krijgt de standaard Geen toegang-pagina van Synergy en de evaluatie stopt daar: berichten en acties van andere verificaties op dezelfde lading vervallen. Alleen met timing Tonen. Combineer met een rol of eigenschap in de criteria, bijvoorbeeld @_CurrentUser not in (select res_id from …).

Stored Procedure. Keuzelijst met alle procedures in de database die parameters hebben, als schema.naam; per parameter een veld. Een parameterwaarde die met @ begint wordt vervangen door één getypeerde waarde: een property als datum, getal of GUID, @_SessionID als GUID, @_CurrentUser als getal, @_Action en @_X_Changed als tekst, @Prev_X als opgemaakte tekst. Een parameter is dus óf een vaste tekst óf één placeholder, niet een combinatie; een @… die geen placeholder is gaat letterlijk mee, een leeg veld als NULL. De aanroep is exec <schema.naam> @Param = …, altijd op de Synergy-database (het veld Verbinding geldt alleen voor de criteria), met een time-out van 300 seconden. Een fout in de procedure wordt gelogd als Error executing Stored Procedure <naam>: …, als Fout getoond en blokkeert bij Bewaren het opslaan.

Tabel uitvoeren. Een stored procedure vult één of meer executietabellen met de sessie-GUID, waarna EasyVerify die tabellen in volgorde verwerkt (hoofdstuk 08). Vereist altijd een procedure én minimaal één tabel; geef de procedure de parameter @_SessionID mee. Een fout in de verwerking wordt gelogd als Error executing table <tabel>: … en blokkeert bij Bewaren.

BPA Platform (Orbis) Task. Zet een TaskCentre-taak in de wachtrij met de parameters als taakvariabelen (alleen invoervariabelen; de map System wordt overgeslagen). Alleen zichtbaar als Orbis aan staat. Uitgeschakelde taken staan gemarkeerd met (Gedeactiveerd !) en zijn wel te kiezen, maar bewaren geeft dan een fout. Fouten bij het uitvoeren worden alleen gelogd en blokkeren niets.

n8n. Roept een n8n-webhook aan met een POST. Je kiest de n8n-verbinding (de omgeving uit de instellingen) en vult het pad in dat daarachter komt, bijvoorbeeld webhook/4fb3a1e3-115f-4434-99df-fd6f5f03b72d. In de JSON gebruik je @Property-placeholders:

{
  "RequestID": "@ID",
  "Bedrag": @Amount,
  "Sessie": "@_SessionID"
}

De waarden gaan er machineleesbaar in, niet in jouw notatie: een datum als 2026-09-14T10:30:00, getallen met een punt, ja/nee als true/false, een GUID zonder accolades en een lege waarde als null. Tekst wordt JSON-geëscaped, dus een naam met een aanhalingsteken breekt de JSON niet.

De aanhalingstekens hoef je zelf niet goed te zetten: het type van de property bepaalt ze. Een getal, een ja/nee en een lege waarde komen zonder quotes in de JSON, ook als je "@Bedrag" schreef; tekst, datums en GUID's komen er altijd mét quotes in, ook als je ze vergeten bent. Staat de placeholder midden in een zin ("Beste @FullName,"), dan blijft het gewoon tekst en komt alleen de waarde ervoor in de plaats — een lege waarde wordt daar niets in plaats van null. Een placeholder die als sleutel gebruikt wordt ("@Naam": 1) blijft altijd tekst tussen quotes.

De specials in de JSON. @_SessionID komt als tekst (de GUID tussen quotes), @_CurrentUser en @_Action komen als getal. Let op: @_Action is hier dus 1 en niet "1", ook als je hem tussen quotes schreef. Een n8n-workflow die op === "1" vergelijkt, ziet niets — vergelijk op === 1. Bij de actie Stored Procedure gaat @_Action wél als tekst mee.

Een @Naam die geen property is blijft letterlijk staan, dus controleer je namen met de keuzelijst.

Alleen op onderhoudspagina's met timing Bewaren, en alleen als n8n aan staat. EasyVerify wacht op het antwoord: alles buiten 2xx is een fout, net als een n8n die niet bereikbaar is, en dat blokkeert het bewaren. Duurt een workflow lang, zet die in n8n dan op Respond immediately. Het antwoord zelf wordt niet gebruikt.

Easy WordMerge - Definitie. Genereert documenten met een vrijgegeven WordMerge-definitie met selectievelden (Dev-, Test- en Archief-definities ontbreken in de lijst); de parameters zijn die selectievelden. Alleen op onderhoudspagina's met timing Bewaren en alleen met de module EasyWordMerge in de licentie. Geen definitie, geen gegevens en fouten blokkeren het bewaren.

08Executietabellen (_CSEasy_<BusinessComponent>)

Een executietabel is een kopie van de kolommen van een business component, plus systeemkolommen. Een stored procedure zet er regels in; EasyVerify voert die regels uit via de business component, met alle validaties en workflow van Synergy. Dezelfde tabellen en dezelfde engine gebruiken de bulkacties van EasyList.

Aanmaken: Inrichting → Easy Verify → Tabellen → Nieuw: kies de business component en bewaar; de tabel _CSEasy_<Component> wordt gegenereerd met een kolom per property van de hoofdgegevensbron (maximaal 1024; tekst als nvarchar, getallen als int/float, datums als datetime, ja/nee als tinyint, GUID's als uniqueidentifier, binair als varbinary(max)). Let op: een bestaande tabel met die naam wordt daarbij eerst verwijderd, inclusief inhoud.

SysteemkolomStandaardBetekenis
_IDidentityregelnummer
_Session(verplicht)de sessie: alleen regels met _Session = @_SessionID en _Status = 0 worden verwerkt
_BCAction00 nieuw, 1 bewerken, 2 verwijderen, 3 nieuw-of-bewerken (nieuw als de sleutelkolom leeg is)
_BCComponentde component van de tabelmag per regel verschillen
_Status00 nieuw, 1 gelukt, 2 fout (met _ErrorMessage)
_SortOrder0verwerkingsvolgorde binnen de sessie, daarna op _SysCreated
_SkipAllNulls11 = lege kolommen worden niet naar de property geschreven (property blijft zoals hij was); 0 = leeg wordt echt leeg gemaakt, behalve de kolommen in _SkipNulls
_SkipNullsleegkommalijst kolommen die bij leeg toch overgeslagen worden
_AddNewPropsleegkommalijst properties die bij nieuw al bij het aanmaken meegegeven moeten worden (bijvoorbeeld Type bij een verzoek)
_UpdateColumnsleegkommalijst properties waarvan de waarde ná het opslaan teruggeschreven wordt in de regel (bijvoorbeeld het gegenereerde ID of HID)
_RebuildWorkflow0alleen bij Request: 1 = na het opslaan het type rechtstreeks in Absences zetten en de werkstroom opnieuw opbouwen; fouten daarin worden alleen gelogd
_SysCreated, _SysModifiedgetdate()aanmaak- en verwerkingstijdstip (_SysModified wordt bij succes bijgewerkt)
_ErrorMessageleegde fout bij _Status = 2

Verwerking. Per regel: nieuw/bewerken/verwijderen op de business component, alle kolommen zonder _ naar de gelijknamige property (een kolom die geen property is geeft een fout), opslaan, _Status op 1. Bij een fout krijgt die regel _Status = 2 met de melding en stopt de verwerking: de volgende regels en tabellen van die sessie blijven op _Status = 0 staan. Verwijderregels blijven ook na succes op _Status = 0 staan.

Voorbeeld: een procedure die verzoeken goedkeurt

create procedure dbo.spCSEasy_GoedkeurenVerzoek(@ID uniqueidentifier, @SessionID uniqueidentifier)
as
begin
    insert into _CSEasy_Request (_BCAction, _Session, ID, Status, _RebuildWorkflow)
    values (1, @SessionID, @ID, 1, 1)
end

09Instellingen

Inrichting → Easy Verify → Instellingen. Bewerken kan alleen een beheerder; anderen zien de pagina read-only. De kop toont het versienummer; zonder geldige licentie staat bovenaan Demo licentie met de reden.

SectieVeldEffect
AlgemeenActiefuit = de hele oplossing staat stil: geen meldingen, geen acties, en de overzichtspagina meldt De oplossing is uitgeschakeld. Handig bij een storing
BPA Platform (Orbis)Actiefaan = de actie BPA Platform (Orbis) Task verschijnt en Orbis-verificaties worden uitgevoerd; toont de drie velden eronder
Server, Inlognaam, Wachtwoordde TaskCentre-verbinding. Alle drie versleuteld opgeslagen, inlognaam en wachtwoord gemaskeerd in de weergave; bij bewaren wordt de verbinding direct getest. Orbis uitzetten wist de drie waarden
n8nActiefaan = de actie n8n verschijnt en n8n-verificaties worden uitgevoerd; toont de velden eronder
Time-out (sec.)hoe lang EasyVerify op n8n wacht, standaard 30
Verbinding 1…5per n8n-omgeving een naam en de basis-URL, en optioneel een headernaam en -waarde voor authenticatie. De headerwaarde wordt versleuteld opgeslagen en nooit getoond
SQL Functies(script)een kant-en-klaar installatiescript voor de SQL-functies, zie hieronder. De pagina voert het niet zelf uit

Er is geen instelling voor EasyWordMerge: die integratie staat aan zodra de module EasyWordMerge in de licentie zit. Bewaren van de instellingen leegt de sessie en daarmee alle caches (hoofdstuk 12). De integratie met BPA Platform (Orbis) gebruikt de TaskCentre-client op de webserver; die wordt pas aangesproken als Orbis aan staat en een verificatie hem gebruikt.

Van een n8n-verbinding onthoudt de verificatie alleen de naam. Zo wijst dezelfde verificatie in elke omgeving naar de n8n van die omgeving: je legt in acceptatie en productie een verbinding met dezelfde naam vast, met een andere URL.

Omdat de verificatie alleen die naam onthoudt, is de naam van een verbinding die in gebruik is niet te wijzigen: dat veld staat vast en de hulptekst zegt welke verbindingen in gebruik zijn en door hoeveel verificaties. De URL en de header pas je wél gewoon aan; leegmaken kan niet zolang de verbinding gebruikt wordt.

SQL-functies voor criteria

De sectie SQL Functies toont een script waarmee je vier functies voor reguliere expressies en e-mailcontrole in SQL Server installeert. Je voert het zelf uit in SQL Server Management Studio. Het zet CLR aan (sp_configure 'clr enabled'), zet TRUSTWORTHY ON op de database, verwijdert bestaande functies, leest de meegeleverde CSEasyVerify.SQL.dll uit de bin-map van de webserver in, registreert die als vertrouwde assembly met PERMISSION_SET = SAFE, maakt de vier functies en sluit af met test-selects. SQL Server moet dat pad dus kunnen lezen (zelfde machine of een share) en de uitvoerder heeft serverrechten nodig: laat het door de DBA doen.

FunctieDoet
dbo.fnCSEasyRegexMatch(tekst, patroon)1 als het patroon matcht, 0 als niet, NULL als tekst of patroon NULL is
dbo.fnCSEasyRegexMatches(tekst, patroon)tabel met alle matches (kolom MatchValue)
dbo.fnCSEasyRegexReplace(tekst, patroon, vervanging)vervangt
dbo.fnCSEasyIsValidEmail(tekst)1 bij een geldig e-mailadres, 0 bij ongeldig, NULL of leeg

10Categorieën

Alleen een omschrijving (uniek). Ze groeperen het overzicht en de export; verwijder je een categorie, dan blijven de verificaties bestaan zonder categorie. De categorieën zijn van de hele Easy-suite — Easy List en Easy Script gebruiken dezelfde lijst — en staan onder Overzichten → Easy Menu → Categorieën (zie Easy Menu).

11Importeren en exporteren

Exporteren filtert op actief, categorie, gewijzigd sinds, type, weergave-opties, pagina en actie; je vinkt de verificaties aan en krijgt EasyVerify - Export.xml met de verificaties en de gebruikte categorieën.

Importeren: kies het bestand (Easy Verify export file), klik Tonen voor de controlelijst (per verificatie Actie, Type, Weergave-opties, of ze al bestaat, en de connectie in gebruik en in het bestand) en kies per regel de Verbinding (voorgevuld met de connectie uit het bestand als die hier bestaat; verplicht). Bij een verificatie met actie n8n staat er een tweede keuzelijst voor de n8n-verbinding, op dezelfde manier voorgevuld en eveneens verplicht. Dan Importeren. Bestaande verificaties (op ID) worden overschreven, nieuwe krijgen hetzelfde ID als in de bron; de omschrijving wordt uniek gemaakt met (n). De categorie wordt zo gekoppeld: bestaat de ID uit het bestand hier, dan die; bestaat hij niet maar is er een categorie met precies dezelfde omschrijving, dan wordt daaraan gekoppeld (zo komen dezelfde categorieën uit twee omgevingen weer samen); anders wordt de categorie uit het bestand aangemaakt met zijn eigen ID. Een bestaande verificatie zonder categorie in het bestand houdt haar huidige categorie. Actief komt één-op-één uit het bestand; er is geen goedkeurstap. Elke verificatie wordt in een eigen transactie verwerkt: een mislukte regel wordt gemeld en de rest gaat door.

Pagina's worden op ID gematcht; omdat de scripts vaste ID's gebruiken, werkt dat tussen omgevingen. Een verificatie met Tabel uitvoeren importeert alleen als die tabellen (met de Easy-kolommen) in de doeldatabase bestaan. Een stored procedure wordt bij het uitvoeren op naam aangeroepen, maar in de verificatie staat ook het object-ID van de bron-database; na import is de procedure op de bewerkpagina niet voorgeselecteerd en kun je de verificatie pas weer bewaren als je hem opnieuw kiest.

12Demo en licentie

Zonder geldige EasyVerify-licentie draait de tool in demomodus: per paginalading of opslag wordt alleen de eerste verificatie (op prioriteit) geëvalueerd, berichten krijgen het voorvoegsel Easy Verify Demo Mode -, en er wordt hoogstens één actie uitgevoerd.

Per sessie worden gecachet: de licentiestatus van EasyVerify en EasyWordMerge, de vervanglijsten van de engine per business component, en de keuzelijsten van stored procedures, Orbis-taken en WordMerge-definities. Het openen van het Overzicht ververst de drie keuzelijsten; het bewaren van de instellingen en een import legen de hele sessie. Na het invoeren van een licentie of het toevoegen van een property dus even de instellingen bewaren of opnieuw inloggen.

13Als het niet werkt

SymptoomOorzaak
Het bericht verschijnt altijd, ook als het niet zou moeteneen fout in de criteria telt als raak (hoofdstuk 05); als beheerder zie je de SQL-fout eronder op de pagina, anders staat hij in het Synergy-foutenlog bij Error executing validation criteria. Ook een property die na het inloggen is toegevoegd geeft dit: de vervanglijst is gecachet (hoofdstuk 12)
Het bericht verschijnt nooitActief uit, de oplossing staat uit, demomodus toont alleen de eerste verificatie, of de pagina heeft geen sleutelwaarde (log: Supposed to check for page … but no key value.)
Het bewaren wordt geblokkeerd zonder dat je een verificatie herkenteen verificatie met timing Bewaren is raak, of een stored procedure/tabel/WordMerge faalde; de melding staat op het formulier en in het log
Een Bewaren-verificatie op Persoon (Bewerken) doet nietsbij het bewaren kijkt EasyVerify voor Associates naar de pagina Relatie (Bewerken) (hoofdstuk 02)
Tabel uitvoeren doet nietsde procedure vult _Session niet met @_SessionID, of _Status staat niet op 0
Verwerking stopt halverwegeeen regel met _Status = 2; lees _ErrorMessage
Een property staat niet in de keuzelijsthet type is Binary, Picture of Seconds
Na import staat de stored procedure niet geselecteerdhet opgeslagen ID is van de bron-database; kies de procedure opnieuw en bewaar
Orbis-taak start nietOrbis staat uit, de taak is gedeactiveerd in TaskCentre, of de verbinding faalt (log)
Het bewaren wordt geblokkeerd met Error calling n8n …n8n antwoordde niet met 2xx of is niet bereikbaar. Een beheerder ziet de volledige URL en de statuscode; een gewone gebruiker krijgt alleen De n8n-taak kon niet uitgevoerd worden. Neem contact op met uw Exact-beheerder. Het volledige bericht staat in het foutenlog
Unknown n8n connection …de verbinding uit de verificatie staat niet meer in de instellingen. Hernoemen is geblokkeerd zolang ze in gebruik is, dus dit komt van een import of een handmatige wijziging
n8n krijgt @Naam letterlijk binnendie naam is geen property van deze pagina; kies hem uit de keuzelijst
Geen melding op een pagina, log zegt Card … not found of missing both Card and ErrorMessages controlde pagina-opbouw van Synergy wijkt af (versieverschil); de melding kan niet geplaatst worden
Deel vier

Easy WordMerge

Documenten uit je Synergy-gegevens: een brief aan elke relatie, een projectplanning vanaf de projectkaart, certificaten voor alle deelnemers in één keer. Je legt een query en een Word-sjabloon vast in een definitie; EasyWordMerge voegt ze samen tot Word, PDF of HTML, bewaart de documenten in Synergy en kan daarna een e-mail sturen of een verzoek aanmaken.

De kern: een definitie = een query + een Word-sjabloon, en de alias van elke kolom is de naam van het samenvoegveld in dat sjabloon.

01Het menu

Alles zit onder Menu: Easy by DataKings.

TabbladMenu-itemWat
InvoerEasy WordMerge → WordMergeeen nieuwe definitie
InvoerEasy WordMerge → Importerendefinities inlezen uit een exportbestand
OverzichtenEasy WordMerge → Overzichtalle definities, met filter op status en groep
OverzichtenEasy WordMerge → Templatesde sjabloondocumenten
OverzichtenEasy WordMerge → Basis templatesde huisstijldocumenten voor Word sjabloon genereren (hoofdstuk 05)
OverzichtenEasy WordMerge → Groependefinities groeperen (hoofdstuk 14)
OverzichtenEasy WordMerge → Integratieknoppen op Synergy-pagina's (hoofdstuk 13)
OverzichtenEasy WordMerge → Genererenalle vrijgegeven definities, per groep, om te starten
InrichtingEasy WordMerge → Instellingenhoofdstuk 16
InrichtingEasy WordMerge → Importeren / Exporterendefinities overzetten tussen omgevingen (hoofdstuk 17)

Definities onderhouden mag een beheerder en iedereen met de rol die in de instellingen bij Onderhouden: Definities staat; anderen zien een definitie read-only. Genereren mag iedereen die de definitie mag starten (hoofdstuk 12).

02Je eerste document

Voorwaarde: in de instellingen staat minimaal één documenttype dat sjablonen bevat (zie Installatie → Per module).

  1. Easy by DataKings → Invoer → Easy WordMerge → WordMerge. Er opent een nieuwe definitie in status Ontwikkeling; alleen de Titel is verplicht.
  2. Kies bij Verbinding de database en vul de query in, in vier delen: de SELECT-, FROM-, WHERE- en ORDER BY-clausule, elk met het sleutelwoord erbij. Geef elke kolom een alias: dat wordt de naam van het veld in het sjabloon. Bewaar.
  3. Klik in de kop op Word sjabloon genereren en kies een basis template. Je krijgt een Word-document in je huisstijl met alle velden van de definitie. Vink je Als document in Synergy aanmaken en koppelen aan deze definitie aan, dan staat het sjabloon meteen bij Template.
  4. Zet de velden op hun plek in Word, gooi de pagina met tags weg en bewaar het document weer in Synergy (hoofdstuk 05).
  5. Op het tabblad Uitvoerformaten staat al Docx klaar. Moeten de documenten in Synergy bewaard worden, zet dan Bewaar gegenereerd document aan (hoofdstuk 09).
  6. Klik Wijzig status naar Test modus en daarna Genereren (Voorbeeld): je krijgt één verzameldocument om te downloaden. Er wordt niets bewaard en er gaan geen acties af.
  7. Klopt het, klik dan Geef definitie vrij. Nu kan iedereen met rechten genereren: via het menu, vanaf de definitie of met een knop op een Synergy-pagina.

03De definitie en de statussen

SectieVeldBetekenis
DefinitieTitelnaam van de definitie; verplicht
Statusalleen te wijzigen met de knoppen in de knoppenbalk (hieronder)
Omschrijvingvrije toelichting, bijvoorbeeld het doel
Templatehet Synergy-document met het sjabloon: een .docx of .docm, van een documenttype dat sjablonen bevat. Heeft het document meer bijlagen, dan kiest de gebruiker bij het genereren welke
GenererenNieuwe pagina per recordaan = elk record begint op een nieuwe pagina; uit = alles achter elkaar, bijvoorbeeld voor etiketten
Uitvoeren via achtergrond procesde definitie mag door de achtergrondtaak worden gegenereerd (hoofdstuk 15)
Genereren: OverslaanVoorbeeldde knop Voorbeeld in de laatste stap vervalt
Resultaatna het genereren geen resultaatpagina, maar terug naar waar de gebruiker vandaan kwam (hoofdstuk 14)
QueryVerbindingSynergy, Globe<nr> of een connectie uit Easy Menu → Instellingen
SELECT- t/m ORDER BY-clausulede query, in vier delen (hoofdstuk 04)

In de kop staan Word sjabloon genereren, Genereer VBScript module voor MS Word (hoofdstuk 05) en Exporteren. In de knoppenbalk staan de statusknoppen, Kopiëren (een kopie met (Kopie) achter de titel, inclusief lijsten en sjabloon) en Genereren. De tabbladen onderaan — Kolommen, Lijsten, Grafieken, Uitvoerformaten, Vaste bijlagen, Acties, Beveiliging, Integratie en Selectie velden — komen in de volgende hoofdstukken aan bod.

Statussen

StatusWijzigenGenereren
Ontwikkelingja; weinig is verplichtnee
Test modusjaalleen als voorbeeld, door wie definities mag onderhouden: één verzameldocument om te downloaden, niets bewaard, geen acties
Vrijgegevennee, de definitie is read-onlyja, door iedereen met rechten; documenten worden bewaard en acties uitgevoerd
Gearchiveerdneenee

Wil je een vrijgegeven definitie aanpassen, zet hem dan terug naar Ontwikkeling; dat kan altijd. Naar Test modus of Vrijgegeven kan pas als de query kolommen oplevert, er minimaal één uitvoerformaat is, er een sjabloon gekoppeld is en elke lijst kolommen heeft; anders meldt de pagina Kan de status niet wijzigen omdat: met wat er ontbreekt.

04De query en de kolommen

De query schrijf je in vier delen, elk mét het sleutelwoord: SELECT …, FROM … (inclusief joins), WHERE … en ORDER BY …. De WHERE-clausule bepaalt de basisset, bijvoorbeeld “alle verzoeken van type 40”. Dat je bij het genereren op één project wilt filteren, regel je níét in de WHERE maar met een selectieveld of een integratie (hoofdstuk 08 en 13): die vullen de WHERE aan met kolom = gekozen waarde.

SELECT  c.cmp_name       AS Relatienaam,
        c.cmp_fadd1      AS Adres,
        a.HID            AS VerzoekHID,
        a.Description    AS Omschrijving,
        a.StartDate      AS Datum
FROM    Absences a
        INNER JOIN cicmpy c ON c.cmp_wwn = a.CustomerID
WHERE   a.Type = 40 AND a.Status = 1
ORDER BY c.cmp_name
  • Eén SELECT-opdracht. Meerdere opdrachten, UNION en muterende opdrachten zoals DELETE worden geweigerd, net als ---commentaar in de FROM-, WHERE- en ORDER BY-clausule.
  • Elke kolom heeft een alias nodig die met een letter begint, uniek is en maximaal 128 tekens telt. De alias is de veldnaam in het sjabloon, dus kies herkenbare namen: Relatienaam zegt meer dan cmp_name.
  • Valideren controleert de query zonder te bewaren; bij bewaren gebeurt dat ook. Kopiëren zet de hele query in één tekstvak, om te testen in SQL Server Management Studio. Maak SELECT-clausule vult de SELECT met alle kolommen van de FROM.

Kolommen

Na het bewaren leest EasyWordMerge de kolommen uit de query. Het tabblad Kolommen toont per kolom de Alias (de veldnaam in het sjabloon), de Kolomnaam (de oorspronkelijke naam, bruikbaar in een WHERE, bijvoorbeeld a.ProjectNumber), de Gegevenssoort en de Weergave-opties. Klik op een kolom om de weergave in te stellen:

GegevenssoortWeergave-opties
Geheel getal0 · 0.000 (met duizendtalscheiding) · 00.000.000 (als verzoek- of documentnummer). Type Gebruik waarde of Document actie (hoofdstuk 09)
Getal (decimaal)0,00 · 0.000,00
Datum/tijddd-mm-yyyy · dd-mm-yyyy HH:mm · dd mmmm yyyy (3 september 2026) · HH:mm
TekstHoofdletters · Kleine letters · Eerste letter hoofdletter; plus Voorkom dubbele spatie: staan voornaam, tussenvoegsel en achternaam naast elkaar en is het tussenvoegsel leeg, dan komt er geen dubbele spatie
Ja/Nee0 of 1 · Ja of Nee · ja of nee
BinairType Afbeelding (bijvoorbeeld een productfoto) of Document: een Word-document dat op die plek wordt ingevoegd
GUIDType Document (Samenvoegbare bijlage) of Document (Bestaand document) (hoofdstuk 10 en 09)

Datums en getallen worden opgemaakt volgens de instellingen van de gebruiker die genereert. Zonder weergave-optie komt de waarde zoals hij uit de database komt. Een kolom die ergens in gebruik is (als lijstparameter, selectieveld of integratie) kun je niet uit de query halen; de melding zegt waar hij gebruikt wordt.

05Het sjabloon in Word

Het sjabloon is een gewoon Word-document (.docx of .docm) met samenvoegvelden, dezelfde velden die Word zelf gebruikt bij afdruk samenvoegen. De naam van elk veld is een alias uit de definitie. Daarnaast kent EasyWordMerge een paar vaste velden:

VeldBetekenis
TableStart:Mainbegin van het deel dat per record herhaald wordt (Begin van document)
TableEnd:Maineinde daarvan (Eind van document). Ontbreken ze, dan zet EasyWordMerge ze zelf aan het begin en eind van het document
<Alias>de waarde van die kolom
Image:<Alias>een afbeelding uit een binaire kolom
Document:<Alias>een Word-document uit een binaire kolom, ingevoegd op die plek
TableStart:<Lijst> … TableEnd:<Lijst>een herhalende lijst (hoofdstuk 06)
Chart:<Naam>een grafiek (hoofdstuk 07)
env_hr_…gegevens van de medewerker die genereert, bijvoorbeeld env_hr_fullname (hoofdstuk 12)

Staat in de instellingen Niet-merge velden kunnen gebruiken ({{tag}}) aan, dan mag je in plaats van een veld ook gewoon {{Alias}} als tekst typen.

Velden in het sjabloon zetten

Word sjabloon genereren (in de kop van de definitie) is de snelste weg. Je kiest een basis template: een huisstijldocument van een documenttype dat in de instellingen als Bevat WordMerge basis templates staat. Je krijgt een .docx met de naam van de definitie: de huisstijl blijft staan, omsloten door begin en einde van het document, en op een aparte pagina erachter staan alle tags — per lijst al een kant-en-klare tabel met de kolomnamen als koprij. Knip de velden naar hun plek en gooi de tagpagina daarna weg. Met het vinkje Als document in Synergy aanmaken en koppelen aan deze definitie en een Documenttype voor het sjabloon staat het resultaat direct als sjabloon bij de definitie.

Genereer VBScript module voor MS Word levert een .bas-bestand met per veld een macro. Handig om later een veld toe te voegen aan een bestaand sjabloon:

  1. Klik in de kop op Genereer VBScript module voor MS Word en bewaar het bestand.
  2. Open het sjabloon in Word en ga met Alt + F11 naar de Visual Basic-editor.
  3. Klik met rechts op ThisDocument van jouw document en kies Bestand importeren. Het .bas-bestand mag daarna weg.
  4. Zet de cursor waar een veld moet komen, kies Beeld → Macro's en voer de macro van dat veld uit.

Een bestaande module verwijder je eerst (in de editor: Module1 met rechts verwijderen). Wil je de macro's in het document houden, bewaar het dan als .docm.

Met de hand kan ook: in Word Invoegen → Snelonderdelen → Veld → MergeField, met de alias als veldnaam. Dat is ook de plek om de mogelijkheden van Word zelf te gebruiken, zoals tekst die alleen verschijnt als een veld gevuld is.

Tips

  • Kop- en voettekst. Velden werken daar ook; zet daar dan ook TableStart:Main en TableEnd:Main omheen.
  • Begin- en eindcodes klein maken. De codes verdwijnen bij het samenvoegen. Maak ze in het sjabloon een heel kleine letter, dan zie je beter hoe het resultaat eruit komt te zien.
  • Hyperlinks. Een link naar een verzoek maak je met een veld in de URL: …/WflRequest.aspx?BCAction=1&ID={«VerzoekID»}. Een GUID hoort tussen { en }; een project- of artikelcode niet. Moet de tekst van de link zelf ook een veld zijn, bewerk de link dan met Alt + F9 in de veldcodeweergave.
  • Sjabloon aanpassen na een wijziging in de query. Tekstuele wijzigingen doe je gewoon in Word. Komt er een kolom bij, genereer dan de macro's opnieuw of maak het sjabloon opnieuw met Word sjabloon genereren.

06Lijsten

Een lijst is een tweede query die binnen het document herhaald wordt, bijvoorbeeld de openstaande verzoeken van de relatie of de leden van een project. Je voegt hem toe op het tabblad Lijsten.

VeldBetekenis
Naamhet voorvoegsel van de lijst in het sjabloon: TableStart:<Naam>
Omschrijvingter informatie
Gebruik 'Geen gegevens' tagaan = je kunt in het sjabloon een tekst opnemen die verschijnt als de lijst leeg is
Verbindingstandaard die van de definitie
SELECT- t/m ORDER BY-clausulede query van de lijst, met dezelfde regels als die van de definitie

Na het eerste bewaren verschijnen twee tabbladen. Kolommen werkt als bij de definitie. Bij Lijst parameters koppel je een kolom van de definitie aan een kolom van de lijst (Definitie: kolom → Lijst: Kolom): de lijst toont dan per record alleen de regels met dezelfde waarde. Koppel je ProjectNr aan ProjectNr, dan krijgt elke projectbrief alleen de regels van zijn eigen project.

In Word

  • Als tabel. Maak een tabel met een koprij en één datarij. Zet TableStart:<Lijst> vóór het eerste veld in de eerste cel van de datarij en TableEnd:<Lijst> ná het laatste veld in de laatste cel. Die rij wordt per regel herhaald. Word sjabloon genereren zet deze tabel al voor je klaar.
  • Als opsomming. Zet de start- en eindcode om de velden in één opsommingsregel.
  • Geen gegevens. Zet de tekst tussen TableStart:<Lijst>_NoData en TableEnd:<Lijst>_NoData, bijvoorbeeld in een extra tabelrij met samengevoegde cellen.

07Grafieken

Een grafiek is een lijst, anders getekend: de rijen van de lijst zijn de categorieën, de kolommen die je kiest zijn de reeksen. De lijstquery levert de rijen met een gewone GROUP BY; de volgorde is de ORDER BY van de lijst.

SELECT   FORMAT(Datum, 'yyyy-MM') AS Maand,
         SUM(Omzet)               AS Omzet,
         SUM(Begroting)           AS Begroting
FROM     …
WHERE    Datum >= DATEADD(month, -12, GETDATE())
GROUP BY FORMAT(Datum, 'yyyy-MM')
ORDER BY 1

Op het tabblad Grafieken voeg je een grafiek toe:

VeldBetekenis
Naamwordt de tag Chart:<Naam> in het sjabloon
Bronlijstde lijst met de gegevens
GrafieksoortKolom, Kolom (gestapeld), Staaf, Staaf (gestapeld), Lijn, Vlak, Taart of Ring
Labelkolomde kolom met de namen van de categorieën, hier Maand
Kleurkolomoptioneel: een kolom met per rij een kleur #RRGGBB
Maximaal aantal rijen0 = alle rijen
Weergave-optiestitel, legenda (tonen en positie), gegevenslabels (tonen en notatie), titels van de assen, breedte en hoogte
Reeksenper reeks een getalkolom, een bijschrift voor de legenda, een volgorde en eventueel een kleur

Kleur kent drie niveaus: niets opgeven (Word kiest volgens het thema van het document), een kleur per reeks, of een kleur per rij uit de kleurkolom. Met die laatste bepaalt SQL de kleur: CASE WHEN Status = 'Vervallen' THEN '#E15759' ELSE '#4E79A7' END AS Kleur. Bij taart en ring is dat het zinnigste niveau; die tekenen bovendien maar één reeks. Een lege of ongeldige kleur wordt overgeslagen.

Zet Chart:<Naam> als veld in het sjabloon, binnen de hoofdregio en buiten een lijstregio. In Word wordt het een echte grafiek die de ontvanger nog kan bijstellen; in PDF en HTML wordt hij meegetekend. Is de lijst leeg, dan komt er geen grafiek en verdwijnt het veld. Dezelfde lijst mag daarnaast gewoon als tabel in het document staan.

08Selectievelden

Een selectieveld vraagt bij het genereren om een waarde en filtert daarop: de WHERE-clausule van de definitie wordt aangevuld met Kolomnaam = gekozen waarde. Je gebruikt ze als de definitie vanuit het menu of de definitie zelf gestart wordt; bij een integratie komt de waarde van de pagina (hoofdstuk 13).

VeldBetekenis
Label (+ Term)de tekst bij het invoerveld; wordt vanzelf gevuld als je een onderwerp kiest
Sorteringvolgorde op het scherm
Geactiveerduit = het veld wordt niet gevraagd. Handig voor een veld waarmee je alleen test
OnderwerpProject, Moederproject, Debiteur, Crediteur, Relatie, Contactpersoon, Assortiment, Artikel, Medewerker, Verkoopkans, Offerte, Verzoek, Datum, Datumtraject, Ja/Nee-veld, Tekst, Geheel getal of Double
Filterbij een onderwerp met een bladeraar: een extra criterium voor die bladeraar, zoals bij een verzoekveld. Eronder staan de bladeraar, de tabel, het voorvoegsel en een voorbeeld. Het filter wordt bij bewaren gecontroleerd
Selectiebij Tekst en Geheel getal: vaste keuzes, zoals bij een verzoekveld: Waarde1,Omschrijving1,TermID;Waarde2,Omschrijving2,TermID. Minimaal Waarde1;Waarde2; dan is de waarde ook de omschrijving. Bij Geheel getal moet elke waarde een geheel getal zijn. Staan er keuzes, dan kies je bij het genereren uit een keuzelijst; anders typ je de waarde zelf in
Gekoppeld: Selectie veldbij Contactpersoon: een ander selectieveld (relatie, debiteur of crediteur) waarvan de contactpersonen getoond worden
Definitie: kolom, Kolomnaamde kolom waarop gefilterd wordt. De keuzelijst vult de kolomnaam; je mag ook een kolom opgeven die niet in de SELECT staat, zoals a.ProjectNumber. Soort en bestaan worden gecontroleerd. Een kolomnaam kan maar één keer per definitie

09Uitvoerformaten en bewaren

Op het tabblad Uitvoerformaten bepaal je in welk formaat de documenten komen: Docx, PDF of Html. Een nieuwe definitie krijgt Docx. Het formaat met Standaard staat bij het genereren voorgeselecteerd en wordt door de achtergrondtaak gebruikt.

Staat Bewaar gegenereerd document uit, dan wordt er één document gemaakt met alle brieven erin, om te downloaden — de pagina waarschuwt daar ook voor. Staat het aan, dan wordt elk document als Synergy-document bewaard:

VeldBetekenis
Onderwerp, Bestandsnaammogen samenvoegcodes bevatten: [Alias], bijvoorbeeld Bevestiging [Relatienaam]. Het icoon ernaast zet een alias voor je achteraan
Typehet documenttype
Versiehoe een nieuwe versie genummerd wordt
Document: EigenschappenRelatie, Contactpersoon, Project, Assortiment, Artikel, Verkoopkans, Beveiligingsniveau, Medewerker en Tags: per veld een kolom uit de query van dezelfde soort (een GUID bij Relatie, tekst bij Project). Verplichte velden van het documenttype zijn gemarkeerd
RechtenAanmaker Eigenaar, Divisie – Document, Divisie – Aanmaker, Rol, Kostenplaats, Kostenplaatsgroep of Project – Lid, met de bijbehorende waarde

Een bestaand document bijwerken

Standaard wordt elk document nieuw aangemaakt. Wil je een document opnieuw genereren in hetzelfde Synergy-document, zet dan in de query een GUID-kolom met het ID van dat document, met type Document (Bestaand document), en een getalkolom met type Document actie:

WaardeWat er met het bestaande document gebeurt
0niets: er komt een nieuw document
1er komt een nieuwe versie van het document
2het gegenereerde bestand komt er als extra bijlage bij
3de bestaande bijlage wordt vervangen

10Bijlagen

Vaste bijlagen zijn Word-documenten (.doc, .docx, .docm) uit Synergy die bij elk gegenereerd document komen, bijvoorbeeld de leveringsvoorwaarden. Per bijlage kies je het Bijlage samenvoegtype:

  • Samenvoegbare bijlage — de bijlage wordt achter het document geplakt, als nieuwe pagina, en velden erin worden ook gevuld;
  • Bestandsbijlage — de bijlage gaat als los bestand mee bij het bewaren en bij een e-mail.

Een Synergy-document met meerdere bijlagen levert ze allemaal. Bijlagen uit de query: een GUID-kolom met type Document (Samenvoegbare bijlage) plakt de bijlagen van dát document achter het gegenereerde document, per record verschillend.

11Acties

Een actie draait nadat de documenten zijn gegenereerd en bewaard, alleen bij Genereren (niet bij een voorbeeld of in test modus). Op het tabblad Acties kies je de actie, de Volgorde en het Moment van actie: Na losse document (per document) of Na genereren van alle documenten (één keer, met het verzameldocument).

ActieDoet
Verzoek — Aanmakeneen nieuw verzoek, met het document als bijlage als je dat wilt
Verzoek — Aanmaken of bewerkenidem, of een bestaand verzoek bijwerken als het ID gevuld is
Verzoek — Bewerkeneen bestaand verzoek bijwerken, bijvoorbeeld de status of een vrij veld
Verzoek — Verwijdereneen verzoek verwijderen
E-mail — E-mail versturenhet document mailen: afzender, geadresseerde, CC, BCC en onderwerp
Bestand — Opslaanhet document als bestand op de server zetten: pad en bestandsnaam
Documenten — Aanmakenéén Synergy-document met alle gegenereerde documenten achter elkaar, bijvoorbeeld om certificaten in één keer af te drukken: type, onderwerp en bestandsnaam

Per parameter kies je waar de waarde vandaan komt: Veldcode (een kolom uit de query), Vaste waarde (tekst, eventueel met samenvoegcodes) of Omgevingsgegeven (de huidige datum, het gegenereerde document, of ID, naam of e-mail van de gebruiker die genereert). Verplichte velden van het verzoektype worden pas bij het uitvoeren gecontroleerd, niet bij het inrichten.

E-mail

E-mail versturen loopt via de SMTP-server die in Synergy is ingesteld. Werkt de organisatie met Microsoft 365, dan is daar meestal een relay voor nodig, omdat gewone SMTP-aanmelding daar uitstaat.

Een eigen actie kan als maatwerk worden toegevoegd; die verschijnt dan vanzelf in de keuzelijst.

12Beveiliging en medewerkergegevens

Op het tabblad Beveiliging geef je Rollen en Functies op: wie genereert, moet alle opgegeven rollen en functies hebben. Meestal is één rol genoeg. Zonder rollen en functies mag iedereen met toegang tot EasyWordMerge de definitie starten. De controle geldt bij het starten én bij het tonen van knoppen en lijsten via een integratie.

Onder Medewerker gegevens en Manager gegevens (tabblad Kolommen, knop Bewerken) vink je aan welke gegevens van de medewerker die genereert, en van diens manager, in het sjabloon beschikbaar zijn. De velden heten env_hr_… en voor de manager env_hr_man_…:

VeldInhoud
env_hr_res_id, env_hr_usr_idmedewerkernummer en inlognaam
env_hr_fullname, env_hr_initials, env_hr_firstname, env_hr_middlename, env_hr_lastnamenaam, in delen
env_hr_email, env_hr_phonezakelijk e-mailadres en telefoonnummer
env_hr_pred_description, env_hr_job_descriptionaanhef en functieomschrijving
Image:env_hr_signaturede handtekening van de medewerkerkaart, als afbeelding
env_hr_freefield1 t/m env_hr_freefield20de vrije velden van de medewerker
env_hr_costcentre(_code), env_hr_costunit(_code)kostenplaats en kostendrager
env_hr_jobtitle_code, env_hr_focus, env_hr_roomfunctiecode, focus, kamer
env_hr_physical_location(_code), env_hr_jobgroup(_code), env_hr_jobactivity(_code)locatie, functiegroep, functieactiviteit

Hoe minder je aanvinkt, hoe korter de macro-module. Let op bij de achtergrondtaak: daar is “de medewerker die genereert” de gebruiker onder wie de taak draait (hoofdstuk 15).

13Integratie in Synergy

Met een integratie komt er een knop op een Synergy-pagina die een definitie start voor het record dat op de pagina staat. Je richt hem in op het tabblad Integratie van de definitie (voor één definitie), of via Overzichten → Easy WordMerge → Integratie (ook voor een knop met meerdere definities).

VeldBetekenis
Paginade Synergy-pagina, zie de lijst hieronder
Label (+ Term), Sorteringde tekst op de knop en de volgorde van de knoppen
Button typeDefinitie: de knop start één definitie. Definities: er hangen meerdere definities onder
Toon als buttonsbij Definities: aan = de definities verschijnen als extra knoppen; uit = een lijst op een nieuwe pagina
Actiefuit = de knop verschijnt niet
Criteriaeen SQL-voorwaarde op de tabel van de pagina; de knop verschijnt alleen als het record eraan voldoet. Bijvoorbeeld op de relatiekaart alleen klanten met een open verzoek van type 40
Mijn werkstroomalleen op Verzoek: de knop verschijnt alleen als het verzoek in de werkstroom van de gebruiker staat
Eerst verzoek bewarenalleen op Verzoek: het verzoek wordt bewaard voordat het genereren start, zodat net ingevulde velden meegaan
Definitie, Definitie: kolom, Kolomnaamwelke definitie, en op welke kolom de sleutel van de pagina gefilterd wordt: de WHERE wordt aangevuld met kolomnaam = sleutel. Het datatype moet passen: een GUID bij relaties en verzoeken, tekst bij projecten en artikelen
Typeop een zoekpagina: wat de gevonden sleutel is, bijvoorbeeld Relatie of Contactpersoon bij Relaties zoeken

Pagina's: Relatie, Persoon, Contactpersoon, Medewerker, Project, Artikel, Verkoopkanskaart en Verzoek, en de zoekpagina's Relaties zoeken, Zoeken medewerkers, Artikelen zoeken, Projecten zoeken, Verkoopkansen zoeken en Verzoeken zoeken. Op een zoekpagina staan de knoppen boven de resultaten en worden alle gevonden records gegenereerd.

Een knop verschijnt alleen als er minimaal één vrijgegeven definitie onder hangt. Wie definities mag onderhouden, ziet ook definities in Test modus. Zonder licentie krijgt de knop DEMO achter de tekst.

Een definitie maken vanuit een zoekopdracht. Op de zoekpagina's staat voor wie definities mag onderhouden een icoon in de kop: Maak een Definitie op basis van deze zoekopdracht. Dat opent een nieuwe definitie met de query van de zoekopdracht al ingevuld.

Standaard Word Merge van Synergy verbergen. Met Uitschakelen standaard Word Merge in de instellingen verdwijnen de standaardknoppen voor brieven en e-mails van Synergy op de pagina's en zoekpagina's, zodat gebruikers alleen EasyWordMerge zien.

14Genereren

Een definitie start je op vier manieren: via Overzichten → Easy WordMerge → Genereren (alle vrijgegeven definities, per groep), vanaf de definitie zelf met Genereren, met een knop op een Synergy-pagina, of automatisch: via de achtergrondtaak (hoofdstuk 15) of een EasyVerify-actie bij het bewaren.

  1. Invoer. Afhankelijk van de definitie: welke bijlage van het sjabloon, de selectievelden en het uitvoerformaat. Vanaf een integratie is de sleutel al gevuld en wordt er niet om een selectie gevraagd.
  2. Bevestigen. Een overzicht van wat je gekozen hebt, met twee vinkjes: Bewerken in Word link (bij Docx: een link om het document direct in Word te openen) en Openen bij 1 document (bij bewaren: is er één document, dan ga je er direct naartoe). De standaard staat in de instellingen.
  3. Voorbeeld voegt samen en biedt het resultaat aan als download; er wordt niets bewaard en er gaan geen acties af. Genereren bewaart de documenten en voert de acties uit.

Heeft de definitie geen actieve selectievelden, één uitvoerformaat en een sjabloon met één bijlage, dan begint het genereren direct bij Bevestigen. Na het genereren toont de resultaatpagina de bewaarde documenten met een link, of komt het verzameldocument als download. Met Overslaan: Resultaat op de definitie ga je direct terug naar waar je vandaan kwam, of naar het document bij Openen bij 1 document. Samen met één sjabloon en geen selectievelden maakt dat van een integratieknop een knop die met één klik een document maakt.

Groepen

Met groepen houd je de pagina Genereren overzichtelijk; de achtergrondtaak kan ook per groep draaien. Een groep heeft een Titel (uniek, eventueel met term), een Omschrijving en een Sortering. Met Bewerken vink je de definities aan die erin horen en zet je ze met de pijltjes in volgorde. Definities zonder groep staan los op de pagina Genereren.

15Achtergrondtaak

Een definitie kan op vaste tijden vanzelf draaien, bijvoorbeeld elke nacht de bevestigingen van nieuwe inschrijvingen. De achtergrondtaak neemt alleen definities die Vrijgegeven zijn en waarbij Uitvoeren via achtergrond proces aan staat. Bij het bewaren van zo'n definitie wordt gecontroleerd dat:

  • er een sjabloon is met precies één .docx- of .docm-bijlage;
  • het uitvoerformaat met Standaard het document bewaart: een taak heeft niemand om een download aan te geven.

Er is ook niemand om selectievelden in te vullen. De WHERE-clausule van de definitie moet dus precies de records opleveren die gegenereerd moeten worden. Zorg dat een record de volgende keer niet opnieuw meekomt, bijvoorbeeld met een actie die een verzoek bijwerkt en een WHERE die daarop controleert. Vaste bijlagen gaan gewoon mee. “De gebruiker die genereert” — voor de medewerkergegevens en de omgevingsgegevens van een actie — is de gebruiker onder wie de taak draait, vaak een systeemgebruiker.

WatOpdracht
alle definities voor de achtergrondtaak/ASSEMBLY:CSEasyWM.Jobs /CLASS:GenerateDefinitions
één definitie/ASSEMBLY:CSEasyWM.Jobs /CLASS:GenerateDefinition /HID:<nummer> — het nummer van de definitie, bijvoorbeeld 22 voor 00.000.022
de definities van één groep/ASSEMBLY:CSEasyWM.Jobs /CLASS:GenerateDefinitionGroup /HID:<nummer> — het nummer van de groep

Voorbeeld: alle definities

cd "<installatiemap van Synergy>\bin"
Exact.Process.exe /DBCONFIG:<omgeving> /ASSEMBLY:CSEasyWM.Jobs /CLASS:GenerateDefinitions

Hoe je zo'n taak inplant, staat bij Installatie → Achtergrondtaken. Combineer je de drie varianten, let dan op de tijden: een definitie die in een groep zit én onder “alle” valt, kan anders twee keer draaien. Het verloop staat in het proceslog van Synergy (Systeem → Overzichten → Log → Processen): start en einde per definitie, het aantal gemaakte documenten, Geen gegevens gevonden of de fout.

16Instellingen

Inrichting → Easy WordMerge → Instellingen. Alleen een beheerder kan bewerken; bewaren leegt de sessie.

SectieVeldEffect
BeveiligingOnderhouden: Definitiesde rol die definities mag onderhouden; verplicht. Beheerders mogen het altijd
DocumenttypesBevat WordMerge sjablonende documenttypes waarin sjablonen staan; alleen documenten daarvan zijn te kiezen als sjabloon. Verplicht
Bevat WordMerge basis templatesde documenttypes met huisstijldocumenten voor Word sjabloon genereren; optioneel
Exact Synergy EnterpriseUitschakelen standaard Word Mergeverbergt de standaardknoppen van Synergy voor brieven en e-mails (hoofdstuk 13)
Na het genererenBewerken in Word link, Openen bij 1 documentde standaardwaarde van de twee vinkjes bij Bevestigen
Genereren: Instellingen overslaanOverslaan: Voorbeeld, Overslaan: Resultaatde standaard voor een nieuwe definitie
OTAP BeheerVerwijder niet-gebruikte veldenaan (standaard): velden in het sjabloon waarvoor geen kolom is, verdwijnen uit het resultaat. Uit: ze blijven staan, zodat je ziet welk veld niet gevuld wordt
SamenvoegoptiesNiet-merge velden kunnen gebruiken ({{tag}}){{Alias}} als gewone tekst in het sjabloon wordt ook gevuld

Of een documenttype sjablonen bevat, kun je ook bij het documenttype zelf aanvinken (tabblad Meer eigenschappen). Is er geen enkel type met sjablonen, dan waarschuwt de definitie daarvoor.

17Importeren en exporteren

Met Exporteren (ook via het icoon in de kop van een definitie) kies je, gefilterd op status en groep, één of meer definities en download je ze als XML-bestand. Alles gaat mee: de query, kolommen, lijsten, grafieken, selectievelden, uitvoerformaten, bijlagen, acties, beveiliging, medewerkergegevens, integraties én het sjabloondocument.

Met Importeren kies je het bestand en het Documenttype voor de sjablonen, en klik je Tonen. De controlelijst toont per definitie en per lijst de verbinding die hier in gebruik is en die uit het bestand; kies per regel de verbinding (verplicht) en klik Importeren. Een definitie met hetzelfde ID wordt overschreven en haar sjabloondocument bijgewerkt; een nieuwe definitie krijgt een nieuw sjabloondocument van het gekozen type. De documenttypes die bij de uitvoerformaten staan, moeten in de doelomgeving bestaan.

18Demo en licentie

Zonder geldige EasyWordMerge-licentie draait de tool in demomodus: alleen het eerste record wordt gegenereerd, lijsten tonen maximaal twee regels, er staat een watermerk Easy WordMerge by DataKings - DEMO MODE over het document en de integratieknoppen krijgen DEMO achter de tekst. De pagina's melden Demo licentie met de reden.

19Als het niet werkt

SymptoomOorzaak
Waarschuwing dat er geen documenttype met sjablonen isin de instellingen staat geen type bij Bevat WordMerge sjablonen
Het sjabloon is niet te kiezen bij Templatehet document is niet van een type met sjablonen, of heeft geen .docx/.docm-bijlage
Kan de status niet wijzigen omdat:er ontbreken kolommen, een uitvoerformaat, het sjabloon of de kolommen van een lijst (hoofdstuk 03)
De query wordt geweigerdUNION, meerdere opdrachten, een muterende opdracht, ---commentaar buiten de SELECT, of een kolom zonder bruikbare alias (hoofdstuk 04)
Een veld blijft leeg of staat er letterlijkde veldnaam wijkt af van de alias; met Verwijder niet-gebruikte velden uit zie je welk veld het is
De hele brief staat er per record twee keer inTableStart:Main staat dubbel in het sjabloon, bijvoorbeeld doordat de tagpagina van Word sjabloon genereren is blijven staan
Een lijst is leegde lijstparameters koppelen de verkeerde kolommen, of er zijn geen gegevens; gebruik de tag Geen gegevens
Geen grafiek in het documenter is geen grafiek met die naam, de lijst is leeg, of de tag staat in een lijstregio
De knop verschijnt niet op de paginade integratie staat niet op Actief, de definitie is niet vrijgegeven, de criteria matchen niet (of geven een fout), Mijn werkstroom staat aan terwijl het verzoek niet in jouw werkstroom staat, of je rol of functie ontbreekt
De e-mail komt niet aaner is in Synergy geen SMTP-server ingesteld, of de server weigert (Microsoft 365 zonder relay)
De achtergrondtaak doet nietsde definitie is niet vrijgegeven, Uitvoeren via achtergrond proces staat uit, of de WHERE levert niets op; kijk in het proceslog
Watermerk DEMO MODEgeen geldige licentie
Deel vijf

Easy Office 365

Synergy en Microsoft 365 in elkaars verlengde: verzoeken verschijnen als afspraak in de Outlook-agenda van de medewerker, afspraken die in Outlook worden gemaakt of verschoven komen terug als verzoek, en e-mails die een medewerker in een Outlook-map zet, worden als document in Synergy bewaard, gekoppeld aan de juiste relatie.

De kern: Synergy en Outlook praten via achtergrondtaken met elkaar. Wat er in Synergy gebeurt, zet een opdracht klaar; de taak voert hem uit en haalt tegelijk op wat er in Outlook veranderd is.

01Het menu

Alles zit onder Menu: Easy by DataKings.

TabbladMenu-itemWat
InvoerEasy Office365 → Synchroniseren aanzettenmedewerkers aan- of uitzetten en bestaande verzoeken klaarzetten (hoofdstuk 07)
InrichtingEasy Office365 → Instellingen: Kalenderde agendakoppeling (hoofdstuk 03 en 04)
InrichtingEasy Office365 → Instellingen: E-mailde e-mailkoppeling en de mappen (hoofdstuk 09)
InrichtingEasy Office365 → Synchroniseren aanzettenzoals onder Invoer

De instellingen kan alleen een beheerder wijzigen. Per verzoektype richt je de agendakoppeling in op het verzoektype zelf (hoofdstuk 05).

02Hoe het werkt

De koppeling bestaat uit twee delen die los van elkaar aan en uit kunnen:

DeelWat er gebeurt
AgendaVerzoeken van de ingestelde verzoektypen komen als afspraak in de Outlook-agenda van de medewerker van het verzoek. Afspraken die de medewerker in Outlook maakt, verschuift of verwijdert, gaan terug naar Synergy als nieuw, bijgewerkt of afgekeurd verzoek. De Outlook-categorie van een afspraak bepaalt het verzoektype
E-mailOnder de Inbox (en eventueel Verzonden items) van de medewerker staat een map, standaard Easy Synergy, met daaronder een map per configuratie. Een e-mail die de medewerker daarin zet, wordt een Synergy-document van het ingestelde type, gekoppeld aan de relatie en contactpersoon van de afzender of geadresseerde, en eventueel een verzoek

Alleen medewerkers met het ingestelde ja/nee-veld op hun medewerkerkaart en een zakelijk e-mailadres in het ingestelde domein doen mee. Het gesprek met Microsoft 365 loopt via Microsoft Graph, met een eigen app-registratie van de klant. Niets hiervan gebeurt direct bij het bewaren: de achtergrondtaken (hoofdstuk 11) doen het werk, dus zonder ingeplande taken gebeurt er niets.

03Verbinding met Microsoft 365

Maak in Microsoft Entra ID (voorheen Azure AD) van de klant een app-registratie met een clientgeheim. De koppeling werkt namens de organisatie, zonder dat medewerkers inloggen, en heeft daarom toepassingsmachtigingen op Microsoft Graph nodig, met toestemming van een beheerder:

MachtigingWaarvoor
User.Read.Allde verbindingstest bij het bewaren van de instellingen
Calendars.ReadWriteafspraken lezen, maken, wijzigen en verwijderen
MailboxSettings.ReadWritede Outlook-categorieën per verzoektype bijhouden
Mail.ReadWritealleen voor e-mail: berichten lezen, de mappen aanmaken en berichten als gelezen markeren

Vul de gegevens in op Instellingen: Kalender en Instellingen: E-mail, sectie Verbinding:

VeldBetekenis
tenantIdde tenant (map-ID) van de organisatie
clientIdde toepassings-ID van de app-registratie
clientSecrethet clientgeheim; in de weergave staat er **********
E-mail domeinhet domein van de mailboxen, bijvoorbeeld @datakings.nl. Alleen medewerkers met een zakelijk e-mailadres in dit domein doen mee, en afspraken van een organisator in dit domein mogen in Synergy gewijzigd worden (hoofdstuk 06)

Agenda en e-mail hebben elk hun eigen verbinding; dat mag dezelfde app-registratie zijn. Bij bewaren wordt de verbinding getest; mislukt dat, dan wordt er niets bewaard. De gegevens worden versleuteld opgeslagen. Verloopt het clientgeheim, vul dan een nieuw in; tot die tijd staat er een fout in het log.

04Agenda: instellingen

Inrichting → Easy Office365 → Instellingen: Kalender.

SectieVeldEffect
AlgemeenActiefuit = de agendataken doen niets; handig bij een storing
Log: Informatieook informatieve regels in het proceslog, niet alleen fouten
Log: Debugper agenda-item een uitgebreide regel in het log, om een probleem uit te zoeken; niet laten aanstaan
Begindatumverzoeken en afspraken van vóór deze datum doen niet mee. Te kiezen tussen twee maanden terug en vandaag
Verzoektype bestaande verzoeken niet wijzigenaan = een andere categorie in Outlook verandert het type van een bestaand verzoek niet (behalve bij het standaardtype, hieronder)
Neem verzoek HID op in agenda-tekstaan = het verzoeknummer komt onderaan de tekst van de afspraak
Gebruikers: Selectie - Vrije veldenwelk vrij ja/nee-veld van de medewerker (vrij veld 16 t/m 20) aangeeft dat een medewerker meedoet. Dit veld zet je met Synchroniseren aanzetten (hoofdstuk 07)
VerbindingtenantId, clientId, clientSecret, E-mail domeinhoofdstuk 03
VerzoektypeStandaardhet verzoektype voor een afspraak in Outlook zonder herkenbare categorie
Wijzigen: Typeeen vrij tekstveld van het standaardtype. Staat er een verzoektype in, dan wordt het verzoek bij bewaren omgezet naar dat type en de werkstroom opnieuw opgebouwd, ook voor alle verzoeken van dezelfde reeks. Op het verzoek wordt het veld een keuzelijst met de gekoppelde verzoektypen

Onderaan staat de lijst Verzoektypes met alle verzoektypen waarvoor de agenda aan staat en hun instellingen; een klik op het ID opent het verzoektype.

05Agenda: instellingen per verzoektype

Bij het bewerken van een verzoektype staat een sectie Easy Office365:

VeldEffect
Synchroniseren kalenderverzoeken van dit type doen mee
Weergeven alshoe de afspraak in Outlook staat: Bezet, Elders aan het werk of Afwezig. Wordt ook gebruikt om bij een afspraak zonder categorie een type te kiezen
Direct uitnodigen: Contactpersoonde contactpersoon van het verzoek wordt meteen als deelnemer uitgenodigd. Hij moet dan een e-mailadres hebben
Later kunnen uitnodigen: Deelnemersop het verzoek staat een knop Deelnemers om later contactpersonen uit te nodigen (hoofdstuk 08)
Gebruiken: Prioriteitde prioriteit van het verzoek en het urgentieniveau in Outlook volgen elkaar
Gebruiken: Herinneringde afspraak krijgt in Outlook een herinnering; niet bij een hele dag
Enkel Synergy naar OutlookSynergy is leidend: wijzigingen in Outlook worden niet overgenomen, en wijkt de afspraak af, dan zet de volgende run hem terug zoals het verzoek is
Omschrijving locatiehet verzoekveld waarin de locatie van een afspraak uit Outlook komt
Gebruiken: Kleur, Kleurde kleur van de Outlook-categorie van dit type

06Agenda: wat er gesynchroniseerd wordt

Van Synergy naar Outlook

Een verzoek wordt klaargezet voor Outlook als het nieuw is of als de begin- of einddatum, het type, de omschrijving of de locatie wijzigt, mits de medewerker meedoet, het type is ingericht, de begindatum na de Begindatum uit de instellingen ligt en het geen concept is. De medewerker moet een zakelijk e-mailadres hebben. Wordt het verzoek afgekeurd, dan verdwijnt de afspraak (of wordt hij afgewezen als het een uitnodiging was); krijgt het een andere medewerker, dan verhuist de afspraak naar diens agenda.

In OutlookKomt uit
Onderwerpde omschrijving van het verzoek
Tekstde opmerkingen van het verzoek, eventueel met het verzoeknummer eronder
Begin en eindede begin- en einddatum; van 00:00 tot 23:00 wordt een afspraak voor de hele dag
Categorie<categorie van het verzoektype> | <verzoektype>
Weergeven als, urgentie, herinneringde instellingen van het verzoektype
Privéhet vinkje Privé van het verzoek
Deelnemersde contactpersonen bij Deelnemers
Bijlagende bijlagen van het verzoek, bij de eerste keer versturen

Een locatie en een Teams-vergadering vanuit Synergy meesturen is maatwerk per klant.

Van Outlook naar Synergy

  • Een nieuwe afspraak wordt een nieuw verzoek voor de medewerker. Het type volgt uit de Outlook-categorie: die heet net als het verzoektype, <categorie> | <verzoektype>, of alleen het deel na de |. Zonder herkenbare categorie telt Weergeven als, en anders wordt het het standaardtype uit de instellingen.
  • De categorieën hoeft de medewerker niet zelf te maken: de agendataak zet ze maximaal eens per uur klaar in elke mailbox, met de kleur van het verzoektype.
  • Een gewijzigde afspraak werkt het verzoek bij: onderwerp, tekst, begin en einde, privé, locatie en eventueel urgentie. Een andere categorie verandert het type als het verzoek het standaardtype heeft, of als het in de werkstroom van de medewerker staat en Verzoektype bestaande verzoeken niet wijzigen uit staat. De werkstroom wordt dan opnieuw opgebouwd.
  • Bijlagen: Outlook is leidend. Komt een afspraak binnen, dan worden de bijlagen van het verzoek gelijkgemaakt aan die van de afspraak; een bijlage die alleen in Synergy aan het verzoek hangt, verdwijnt daarbij. Een bijlage die je later in Synergy toevoegt, gaat niet vanzelf naar Outlook.
  • Een verwijderde of geannuleerde afspraak keurt het verzoek af.
  • Een terugkerende afspraak wordt een verzoek per keer; op het verzoek staat een icoon waarmee je alle verzoeken van de reeks opzoekt.
  • Deelnemers van een afspraak worden bij het standaardtype en bij types met Later kunnen uitnodigen opgezocht als contactpersoon, en vullen dan de relatie en contactpersoon van het verzoek.
  • Is de medewerker niet de organisator en is de organisator geen collega uit het e-maildomein, dan zijn datum, tijd, medewerker en omschrijving in Synergy niet te wijzigen: dat moet de organisator doen.
De eerste keer

Bij de eerste synchronisatie van een medewerker zoekt de taak bij elke afspraak een bestaand verzoek van die medewerker met hetzelfde begin en einde (en zo nodig dezelfde omschrijving) en koppelt die, in plaats van een dubbel verzoek te maken.

07Synchroniseren aanzetten

Invoer → Easy Office365 → Synchroniseren aanzetten. Deze pagina synchroniseert zelf niets: hij zet klaar wat de achtergrondtaak daarna doet. Kies bij Actie:

ActieWat er gebeurt
Aanzetten van gebruikersde lijst toont de medewerkers bij wie de agenda nog uit staat, met een e-mailadres in het domein, en per verzoektype het aantal verzoeken vanaf vandaag. Per medewerker vink je aan: Activeer Synch (het ja/nee-veld aanzetten), Verstuur verzoeken (de bestaande verzoeken naar Outlook sturen) en eventueel Vul ExchangeID
Uitzetten van gebruikershet ja/nee-veld weer uit. Er worden geen koppelingen of afspraken verwijderd; wat al klaarstaat, wordt nog afgehandeld
Bijwerken verzoekenvoor een verzoektype dat later is aangezet: de verzoeken die er al waren, alsnog klaarzetten voor alle medewerkers die meedoen

Klik daarna Synchroniseer voor geselecteerde medewerkers en voer de achtergrondtaak uit. Afgekeurde verzoeken tellen niet mee.

Let op

Vink Vul ExchangeID alleen aan als er eerder al met dezelfde agenda gesynchroniseerd is, bijvoorbeeld bij een overstap van een oudere koppeling. Anders kan de taak afspraken niet terugvinden en ontstaan er dubbele.

08Op het verzoek

Bij een verzoek van een type met agendakoppeling staan extra knoppen:

KnopDoet
Deelnemerseen pop-up met de deelnemers: uitnodigen of niet, de contactpersoon, het e-mailadres, het soort deelnemer en de reactie uit Outlook (geaccepteerd, afgewezen) met het tijdstip. Alleen bij types met Later kunnen uitnodigen, niet bij afgekeurde verzoeken en concepten
Tonen: Kalender tekstde tekst van de afspraak zoals die in Outlook staat; voor de medewerker van het verzoek en beheerders
Start Teams meetingals de afspraak een Teams-vergadering is: direct deelnemen
icoon Easy Office365: Log in de kophet log van dit verzoek: wanneer het is klaargezet, verstuurd en ontvangen, met de verstuurde en ontvangen gegevens. Voor de medewerker van het verzoek en beheerders

Bij een nieuw verzoek van een type met Direct uitnodigen meldt de pagina dat contactpersonen worden uitgenodigd zodra het verzoek bewaard is, en staat bij de opmerkingen dat die tekst als uitnodiging wordt verzonden.

09E-mail: instellingen en mappen

Inrichting → Easy Office365 → Instellingen: E-mail.

SectieVeldEffect
AlgemeenActief, Log: Informatie, Log: Debugals bij de agenda
Gebruikers: Selectie - Vrije veldenhet ja/nee-veld op de medewerkerkaart dat aangeeft wie meedoet; mag een ander veld zijn dan bij de agenda. Zet het per medewerker aan op de medewerkerkaart
VerbindingtenantId, clientId, clientSecret, E-mail domeinhoofdstuk 03
MapInkomende emailde naam van de hoofdmap onder de Inbox, standaard Easy Synergy
Uitgaande email: Actief, Uitgaande emailook verzonden mail verwerken, uit een hoofdmap onder Verzonden items (standaard ook Easy Synergy)
Configuratie(lijst)per submap wat er met een e-mail gebeurt; Toevoegen: Configuratie maakt een nieuwe

De hoofdmap en de submappen maakt de taak zelf aan in elke mailbox die meedoet. Een configuratie:

SectieVeldEffect
AlgemeenOmschrijving, Actiefnaam en aan/uit
Mapde naam van de submap, bijvoorbeeld Offertes
Markeer als gelezenhet bericht wordt na verwerking in Outlook als gelezen gemarkeerd
Bewaren alsDocumenttypehet type van het document dat van de e-mail gemaakt wordt
Verzoektypeoptioneel: er komt ook een verzoek, met het document eraan
Document: FunctiesToestaan: Dubbeluit = een e-mail die al als document bestaat, wordt overgeslagen
Gebruiken: Reactieseen antwoord op een eerder bewaarde e-mail komt als reactie onder dat document
Verzoek: FunctiesToestaan: Dubbeluit = bij een antwoord wordt het bestaande openstaande verzoek van dat gesprek gebruikt in plaats van een nieuw; dat verzoek komt weer op ongelezen
Document: Bijwerkenhet bestaande verzoek krijgt het nieuwe document als gekoppeld document
Aanmakenbij inkomende mail, bij uitgaande mail of bij beide

10E-mail: wat er bewaard wordt

Elke nieuwe e-mail in een submap wordt een Synergy-document van het ingestelde type, op naam van de medewerker van de mailbox, als e-maildocument met onderwerp, tekst (inclusief ingesloten afbeeldingen), afzender, geadresseerden, CC en verzenddatum. De bijlagen van de e-mail gaan mee. Bij een inkomende e-mail zoekt de taak de afzender op als contactpersoon, bij een verzonden e-mail de geadresseerden, en vult daarmee de relatie en contactpersoon van het document. Staat scripting uit bij het documenttype, dan wordt de tekst van de e-mail op dezelfde manier opgeschoond als Synergy dat zelf doet.

Is er een verzoektype ingesteld, dan komt er een verzoek bij met het onderwerp als omschrijving, de ontvangstdatum als begindatum, het document eraan en dezelfde relatie en contactpersoon. Lukt dat niet omdat er verplichte velden ontbreken, dan wordt het verzoek als concept bewaard. De taak leest per map alleen wat er sinds de vorige keer bij is gekomen; een e-mail verplaatsen naar een andere submap is dus een nieuwe verwerking.

11Achtergrondtaken

Er zijn vier taken. Plan ze in zoals bij Installatie → Achtergrondtaken beschreven.

TaakOpdrachtDoet
Agenda/ASSEMBLY:CSEasyO365.Jobs /CLASS:CalenderSynchde klaargezette verzoeken naar Outlook sturen én de wijzigingen uit Outlook ophalen. Eens per uur ook de categorieën bijwerken. Dit is de gebruikelijke keuze
Agenda: alleen versturen/ASSEMBLY:CSEasyO365.Jobs /CLASS:CalenderSynchSendalleen van Synergy naar Outlook
Agenda: alleen ontvangen/ASSEMBLY:CSEasyO365.Jobs /CLASS:CalenderSynchReceivealleen van Outlook naar Synergy
E-mail/ASSEMBLY:CSEasyO365.Jobs /CLASS:EmailSynchde e-mailmappen verwerken

Voorbeeld

cd "<installatiemap van Synergy>\bin"
Exact.Process.exe /DBCONFIG:<omgeving> /ASSEMBLY:CSEasyO365.Jobs /CLASS:CalenderSynch
Exact.Process.exe /DBCONFIG:<omgeving> /ASSEMBLY:CSEasyO365.Jobs /CLASS:EmailSynch

Hoe vaak is een keuze: zo vaak als je wilt dat een wijziging doorkomt, bijvoorbeeld elke vijf minuten. Laat een taak niet overlappen met zichzelf. Gebruik voor de agenda óf CalenderSynch, óf de twee losse taken. Staat de koppeling op Actief uit of is er geen geldige licentie, dan doet de taak niets en staat dat in het log.

12Log en controle

  • Het proceslog van Synergy (Systeem → Overzichten → Log → Processen) toont per run fouten, en met Log: Informatie aan ook wat er gedaan is.
  • Het log per verzoek (het icoon in de kop van het verzoek) toont wanneer het verzoek is klaargezet, verstuurd en ontvangen, met de gegevens die heen en weer gingen.
  • Voor een beheerder die een probleem uitzoekt, is er een handmatige run: open CSEasyO365Run.aspx in de browser (hij staat niet in het menu). Die doet agenda en categorieën in één keer, met de meldingen op het scherm; hij kan botsen met een achtergrondtaak die op hetzelfde moment draait.

13Demo en licentie

Zonder geldige licentie voor Easy Office365 zet Synergy geen verzoeken klaar voor Outlook en doen de achtergrondtaken niets; ze melden dat in het proceslog. De instellingenpagina's tonen de reden.

14Als het niet werkt

SymptoomOorzaak
Er gebeurt helemaal nietsde achtergrondtaak is niet ingepland of draait onder een account zonder rechten; kijk in het proceslog
Bewaren van de instellingen geeft Error validating the connection to Microsoft GraphtenantId, clientId of clientSecret klopt niet, het geheim is verlopen, of de toepassingsmachtigingen hebben nog geen toestemming van een beheerder
Een verzoek komt niet in Outlookde medewerker doet niet mee (ja/nee-veld, e-mailadres, domein), het type heeft Synchroniseren kalender uit, de begindatum ligt vóór de Begindatum, of het is een concept
Bewaren van het verzoek geeft Ontbrekend: Medewerker - E-mailde medewerker van het verzoek heeft geen zakelijk e-mailadres
Bewaren geeft Ontbrekend: Contactpersoon - E-mailhet type nodigt de contactpersoon direct uit en die heeft geen e-mailadres
U bent niet de organisator van dit agenda itemde afspraak komt van iemand anders; die moet de datum wijzigen
Een afspraak uit Outlook krijgt het verkeerde typede categorie ontbreekt of is anders gespeld dan het verzoektype; kies een van de categorieën die de taak klaarzet
Wijzigingen in Outlook komen niet terughet type staat op Enkel Synergy naar Outlook, of alleen de verstuurtaak is ingepland
Dubbele verzoeken na het aanzettenVul ExchangeID is gebruikt terwijl er niet eerder gesynchroniseerd was, of afspraken hadden een andere tijd dan de verzoeken
De map Easy Synergy verschijnt niet in Outlookde medewerker doet niet mee voor e-mail, de e-mailtaak draait niet, of Mail.ReadWrite ontbreekt
Een e-mail is niet aan de juiste relatie gekoppeldhet e-mailadres van de afzender of geadresseerde staat niet bij een contactpersoon
Deel zes

Easy Act2Sign

Documenten digitaal laten ondertekenen vanuit Synergy, via het ondertekenplatform Stiply. Je legt een dossier vast in een verzoek, met de documenten en per ondertekenaar een eigen verzoek. Een achtergrondtaak stuurt het dossier naar Stiply, volgt de voortgang en zet de ondertekende documenten terug bij het verzoek.

De kern: een dossier = een dossierverzoek met documenten + een ondertekenaarsverzoek per persoon; Klaar om te verzenden aanvinken is het startsein.

01Het menu

Alles zit onder Menu: Easy by DataKings.

TabbladMenu-itemWat
InvoerEasy Act2Sign → Aanmakeneen nieuw dossierverzoek
OverzichtenEasy Act2Sign → Verzendende dossiers die klaarstaan om verzonden te worden; per dossier direct versturen
OverzichtenEasy Act2Sign → Bijwerkende verzonden dossiers met hun status; per dossier de status direct ophalen
OverzichtenEasy Act2Sign → Stuur herinneringenper dossier een herinnering sturen aan wie nog moet ondertekenen
OverzichtenEasy Act2Sign → Verwijderenlopende dossiers bij Stiply intrekken
OverzichtenEasy Act2Sign → Foutende openstaande foutverzoeken (hoofdstuk 09)
OverzichtenEasy Act2Sign → Logboekalle verzonden dossiers met hun resultaat en aantallen (hoofdstuk 10)
OverzichtenEasy Act2Sign → Aanmaken, Bijwerkenhet proceslog van de twee achtergrondtaken
InrichtingEasy Act2Sign → Instellingenhoofdstuk 03

De overzichtspagina's zijn voor beheerders die ook de rol hebben die op het dossierverzoektype staat.

02Hoe het werkt

Act2Sign gebruikt drie verzoektypen, die als verzoektypebestand worden meegeleverd:

VerzoektypeRol
Act2Sign - Dossierhet dossier: titel, documenten, de e-mail aan de ondertekenaars, de volgorde en de termijn. Hier komt ook de status terug, met de ondertekende documenten
Act2Sign - Signeeéén ondertekenaar, gekoppeld aan het dossier: wie, hoe hij zich identificeert, welke velden hij invult
Act2Sign - Errorwordt vanzelf aangemaakt als een dossier niet verstuurd kon worden (hoofdstuk 09)
  1. Je maakt een dossierverzoek en de ondertekenaarsverzoeken, en vinkt Klaar om te verzenden aan. Bij het bewaren wordt het dossier gecontroleerd (hoofdstuk 07).
  2. De taak Dossiers aanmaken stuurt de dossiers die klaarstaan naar Stiply, zodra Verzenden op bereikt is. Het dossier en de ondertekenaars gaan naar Goedgekeurd en krijgen het ID van Stiply.
  3. Stiply mailt de ondertekenaars. Zij ondertekenen in hun browser.
  4. De taak Dossiers bijwerken haalt de voortgang op en zet die bij de verzoeken. Is alles ondertekend, dan komen de ondertekende documenten als bijlage bij het dossier en gaan dossier en ondertekenaars naar Gerealiseerd. Wordt het dossier geweigerd of verloopt het, dan gaat het naar Afgekeurd.

03Instellingen

Inrichting → Easy Act2Sign → Instellingen.

SectieVeldBetekenis
VerzoekenDossier, Signer, Foutde drie verzoektypen. Fout is optioneel: zonder foutverzoektype staat een mislukte verzending alleen in het proceslog
BeveiligingOmschrijving, Client ID, Secretde API-gegevens van Stiply. Er kunnen meerdere verbindingen zijn, bijvoorbeeld per bedrijfsonderdeel; op het dossier kies je welke (veld Connectie). Bij bewaren wordt de verbinding getest. Van een verbinding die door een lopend dossier gebruikt wordt, kan alleen de omschrijving nog wijzigen
Proxy server settingsUse Proxy, Proxy serverals de webserver alleen via een proxy naar internet kan
Current user (background job), Gebruikersnaam, Wachtwoordmet het account van de achtergrondtaak, of met een eigen account; het wachtwoord wordt versleuteld opgeslagen

04Een dossier aanmaken

  1. Easy by DataKings → Invoer → Easy Act2Sign → Aanmaken. Er opent een nieuw dossierverzoek.
  2. Vul de Titel in, kies de Connectie en het Document dat ondertekend moet worden, eventueel met bijlagen. Vul het onderwerp en de tekst van de e-mail aan de ondertekenaars in, de volgorde en de termijn (hoofdstuk 05). Bewaar.
  3. Voeg in de lijst Ondertekenaars met Nieuw per persoon een ondertekenaarsverzoek toe (hoofdstuk 06).
  4. Klik op het dossier Klaar om te verzenden. Klopt er iets niet, dan zegt de melding wat.
  5. De achtergrondtaak verstuurt het dossier; wil je niet wachten, verstuur het dan via Overzichten → Easy Act2Sign → Verzenden.

05Het dossierverzoek

SectieLabelVrij veldBetekenis
DossierVerantwoordelijkeEmployeeIDde medewerker van het dossier
TitelDescriptionde naam van het dossier bij Stiply; verplicht
Verzenden op, omStartDateniet eerder versturen dan dit moment
Klaar om te verzendenVrij: Ja/Nee 1het startsein; met de knop Klaar om te verzenden wordt het aangevinkt en bewaard
ConnectieVrij: Nummer 5de Stiply-verbinding uit de instellingen
DocumentenDocumentDocIDhet Synergy-document met de te ondertekenen bestanden
Bijlage algemene voorwaarde, Bijlage 1 … 4Vrij: GUID 1 … 5documenten die ter informatie meegaan
E-MailOnderwerp, MessageVrij: Tekst 1, Opm.: Verzoekde e-mail die Stiply aan de ondertekenaars stuurt
OndertekenaarsVolgordeVrij: Nummer 1Sequential (na elkaar) of Parallel (tegelijk)
Verloopt in, eenheidVrij: Nummer 2, Vrij: Tekst 2de termijn om te ondertekenen: 1 t/m 9 dagen, weken of maanden
Re-direct na ondertekenenVrij: Tekst 3de pagina waar de ondertekenaar daarna op uitkomt
LoggingOndertekende documentenAttachmentshier komen de ondertekende documenten
Dossier ID, Laatste status, Laatste status detail, Laatste status datum, AfgerondVrij: Tekst 15, 14 en 13, de werkelijke begin- en einddatumworden door Act2Sign gevuld

Alleen bestanden van het type .docx, .doc, .pdf en .xlsx gaan mee, en alleen van een document dat in Synergy goedgekeurd is (geen concept); samen maximaal ongeveer 18 MB. Op het dossier staan ook een lijst met de ondertekenaars en hun status, en het log met de voortgang uit Stiply.

06Ondertekenaars

Per persoon een verzoek van type Act2Sign - Signee, gekoppeld aan het dossier (veld Dossier).

SectieLabelBetekenis
OndertekenaarVolgordede volgorde bij Sequential
relatie en contactpersoon, of medewerker, of Naam / E-mail / Mobiel nummerwie het is. Een contactpersoon of medewerker levert naam, e-mail en mobiel nummer zelf; bij een medewerker kies je met Gebruik zakelijk adres tussen zakelijk en privé. Anders vul je de drie velden zelf in
RolOndertekenaar, CC (krijgt een kopie), DC of Fiatteur (keurt eerst goed)
Authenticatiehoe de ondertekenaar zich identificeert: Link in e-mail, SMS One-Time Password (vraagt een mobiel nummer), iDin of iDin Complete
TaalNederlands, Engels, Duits, Spaans of Frans
Re-direct na ondertekenenafwijkend van het dossier
E-mail (overrule Dossier E-mail)Onderwerp, (Afwijkende) messageeen eigen e-mail voor deze ondertekenaar
OndertekenveldenHandtekeningJa of Vrije positie (de ondertekenaar kiest zelf waar)
Initialen, Datum van ondertekenen, Naam van ondertekenaarwelke velden er nog meer bij komen
Te uploaden documentenVerzoek documenten te uploaden, Begeleidende tekst, Upload document 1 … 3 (+ verplicht?)de ondertekenaar vragen om documenten mee te sturen, zoals een kopie legitimatie
Extra invoervelden(regels)velden die de ondertekenaar invult: per regel een naam, het soort (tekst, datum, vinkje, keuzerondje), verplicht of niet en de groep bij keuzerondjes
LoggingSignee ID, Laatste status, Afgerond, Reden van afkeurenworden door Act2Sign gevuld

Een ondertekenaarsverzoek keur je niet los af en verwijder je niet los: dat gaat via het dossier.

07Versturen en de controles

Bij het aanvinken van Klaar om te verzenden wordt het dossier gecontroleerd. Het moet voldoen aan:

  • een titel en minimaal één document met inhoud;
  • minimaal één ondertekenaar met de rol Ondertekenaar, en hoogstens tien;
  • elke ondertekenaar een e-mailadres, en alle e-mailadressen verschillend;
  • elke ondertekenaar met rol Ondertekenaar een handtekeningveld (Ja of Vrije positie);
  • bij SMS One-Time Password een geldig mobiel nummer;
  • met een Fiatteur of een handtekening op een vrije positie: de volgorde Sequential.

De taak Dossiers aanmaken neemt daarna elk dossier dat Open is, Klaar om te verzenden heeft en waarvan Verzenden op bereikt is, met de ondertekenaarsverzoeken die open zijn. Stiply staat maximaal 300 aanroepen per minuut toe; de taak houdt daar rekening mee.

08Voortgang, herinneringen en verlengen

  • Voortgang. De taak Dossiers bijwerken leest de status van elk verzonden dossier en elke ondertekenaar: Laatste status en de datum komen op de verzoeken, en het log op het dossier toont alle stappen. Een ondertekenaar die weigert, krijgt de reden in Reden van afkeuren.
  • Klaar. Als alles ondertekend is, komen de ondertekende documenten als bijlage bij het dossier en gaan dossier en ondertekenaars naar Gerealiseerd. Bij iDIN worden de gegevens van de identificatie apart bewaard en op het ondertekenaarsverzoek getoond.
  • Geweigerd of verlopen. Het dossier gaat naar Afgekeurd, met de reden.
  • Herinnering. Met Stuur herinnering op het dossier, of via Overzichten → Stuur herinneringen, krijgt wie nog niet getekend heeft een herinnering. Het dossier zelf wordt niet opnieuw verstuurd.
  • Termijn verlengen. Vul op het goedgekeurde dossier Nieuwe datum: 1 in (of later Nieuwe datum: 2); de nieuwe uiterste datum ligt in de toekomst en hoogstens negen maanden verder. Bij bewaren gaat de verlenging direct naar Stiply en krijgen de ondertekenaars bericht. Originele uiterste ondertekendatum houdt de eerste datum vast. Deze drie datumvelden staan niet in elke versie van het verzoektype; voeg ze zo nodig toe (vrije datumvelden 5, 1 en 2).
  • Intrekken. Keur je het dossier af, dan wordt het bij Stiply verwijderd en worden de ondertekenaars afgekeurd. Zet je het terug naar Open, dan gaan de ondertekenaars ook weer open. Bij Verwerkt wordt het dossier bij Stiply opgeruimd; de ondertekende documenten staan dan al in Synergy.

09Fouten

Lukt het versturen niet — Stiply weigert een document, een e-mailadres klopt niet — dan maakt de taak een verzoek van het foutverzoektype, met het dossier erin, de fout in Opgetreden fout en de maker van het dossier als medewerker. Zolang er een open foutverzoek is, wordt het dossier niet opnieuw geprobeerd. Herstel de oorzaak, vink op het foutverzoek Dossier opnieuw versturen aan en realiseer het; bij de volgende run gaat het dossier opnieuw, en de oude foutverzoeken verdwijnen. Overzichten → Easy Act2Sign → Fouten toont de openstaande fouten.

10Overzichten en logboek

Via de overzichten kan een beheerder de taken ook per dossier met de hand uitvoeren: versturen, status bijwerken, een herinnering sturen of een lopend dossier verwijderen. Het Logboek toont per verzonden dossier wanneer het verzonden en afgehandeld is, of het ondertekend of geweigerd is, en de aantallen documenten, bijlagen, SMS'jes en iDIN-controles. Daarmee blijft ook zichtbaar hoe vaak een dossier opnieuw is aangeboden, bijvoorbeeld na een afkeuring.

11Achtergrondtaken

Twee taken; plan ze in zoals bij Installatie → Achtergrondtaken beschreven.

TaakOpdrachtDoet
Dossiers aanmaken/ASSEMBLY:Act2Sign.Synergy.Jobs /CLASS:CreateDossiersde dossiers die klaarstaan naar Stiply sturen
Dossiers bijwerken/ASSEMBLY:Act2Sign.Synergy.Jobs /CLASS:UpdateDossiersde voortgang ophalen en de ondertekende documenten binnenhalen

Voorbeeld

cd "<installatiemap van Synergy>\bin"
Exact.Process.exe /DBCONFIG:<omgeving> /ASSEMBLY:Act2Sign.Synergy.Jobs /CLASS:CreateDossiers
Exact.Process.exe /DBCONFIG:<omgeving> /ASSEMBLY:Act2Sign.Synergy.Jobs /CLASS:UpdateDossiers

Het verloop staat in het proceslog; in het menu staan er twee directe links naar (Aanmaken en Bijwerken onder Overzichten). Zonder geldige licentie doen de taken niets en melden ze dat in het log.

12Licentie

Act2Sign vraagt de module Easy Act2Sign in de licentie. Zonder die module melden de pagina's Demo licentie met de reden en versturen de achtergrondtaken niets.

13Als het niet werkt

SymptoomOorzaak
Aanmaken opent de instellingenhet dossierverzoektype is niet ingesteld
Bij Klaar om te verzenden een melding Validatiefouthet dossier voldoet niet aan de controles uit hoofdstuk 07; de melding noemt wat er ontbreekt
Het dossier wordt niet verstuurdde achtergrondtaak draait niet, Verzenden op ligt in de toekomst, het dossier is niet meer Open, of er staat een open foutverzoek
Er verschijnt een foutverzoekStiply weigerde het dossier; de fout staat in Opgetreden fout (hoofdstuk 09)
Een document ontbreekt bij Stiplyhet bestand is geen .docx, .doc, .pdf of .xlsx, of het document staat in Synergy nog in concept
De status blijft staande taak Dossiers bijwerken draait niet; haal hem per dossier op via Overzichten → Bijwerken
Een ondertekenaar afkeuren of verwijderen lukt nietdat gaat via het dossier
Bewaren van de instellingen geeft Invalid key and/or secretde Client ID of het Secret van Stiply klopt niet, of de proxy staat in de weg
Deel zeven

Easy Menu

De basis onder alle Easy-tools: het menu Easy by DataKings, de licentie, de connecties naar andere databases, de categorieën, het opzoeken van termen, een bericht bovenin Synergy en het overnemen van een medewerker met één klik.

De kern: wat de tools delen, staat op één plek; een connectie of categorie die je hier vastlegt, is in elke tool te kiezen.

01Het menu

Alle tools staan in de module Easy, met het menu Easy by DataKings en de drie standaardtabbladen Invoer, Overzichten en Inrichting. Gebruikers met de Exact add-on-rol zien het menu; de module zelf zet je in het modulemenu via de voorkeuren (zie Installatie → Licentie en menu). Van Easy Menu zelf:

TabbladMenu-itemWat
OverzichtenEasy Menu → Categorieënde categorieën van de hele suite (hoofdstuk 04)
InrichtingEasy Menu → Instellingenconnecties en overnemen (hoofdstuk 03 en 07)
InrichtingEasy Menu → Berichteneen bericht bovenin Synergy (hoofdstuk 06)
InrichtingEasy Menu → Licentiehoofdstuk 02
InrichtingTermen → Initialiseren, Zoekenterm-ID's opzoeken (hoofdstuk 05)

Wijzigen kan op al deze pagina's alleen een beheerder; categorieën en termen zijn er helemaal alleen voor beheerders.

02Licentie

Inrichting → Easy Menu → Licentie. Eén licentiebestand voor de hele suite. De pagina toont de Relatie, het Contractnummer en de Naam uit de Exact-licentie — daar hoort het bestand bij — en per module de begin- en einddatum, of hij actief is en welke versie er geïnstalleerd is (of Niet geïnstalleerd).

  1. Heb je nog geen licentie, mail dan de gegevens bovenaan de pagina naar office@datakings.nl; de pagina zegt dat ook.
  2. Klik Licentie bijwerken (alleen voor een beheerder): er verschijnt een bestandsveld.
  3. Kies het .easy-bestand en klik nogmaals Licentie bijwerken; bevestig de vraag.
  4. Log daarna opnieuw in.

Een bestand dat bij een andere Exact-licentie hoort, wordt geweigerd met Ongeldig licentiebestand. Een week voor de einddatum melden de tools dat de licentie bijna verloopt; daarna draait een module in demomodus (zie het hoofdstuk Demo en licentie van elke tool).

03Connecties

Inrichting → Easy Menu → Instellingen, sectie Connectie string. Naast de vaste keuzes Synergy (de Synergy-database) en Globe<nr> (elke actieve administratie met back-office) leg je hier tot vijf eigen connecties vast: een naam (maximaal 30 tekens) en een connectiestring.

Server=localhost;Database=A_Database;User Id=A_UserName;Password=A_Password;

Een connectie is in alle tools te kiezen: bij Connectie van een EasyList, bij de Verbinding van de criteria in EasyScript en EasyVerify, en bij de Verbinding van een WordMerge-definitie of -lijst. Zo draait een lijst, controle of document op gegevens uit een andere database.

  • De connectiestring wordt versleuteld opgeslagen. In de weergave staan er sterretjes; een beheerder ziet hem bij Bewerken.
  • Bij bewaren wordt elke connectie getest (een verbinding maken en een eenvoudige query). Mislukt dat, dan wordt er niets bewaard.
  • Naam en string zijn samen verplicht, namen zijn uniek, en Synergy en Globe<nr> van een bestaande administratie zijn gereserveerd.
  • De naam van een connectie die in gebruik is — door een EasyList of een WordMerge-definitie of -lijst — is niet meer te wijzigen: de tools onthouden de connectie op naam. De string pas je wel gewoon aan. Zo wijst dezelfde lijst in test en productie elk naar de eigen database: geef de connectie in beide omgevingen dezelfde naam.

Alle connecties, bijvoorbeeld voor een keuzelijst in een eigen verzoektype

select ConnectionName
from   vwCSEasyMenuConnection
order by DisplayOrder, ConnectionName

Die view levert Synergy, de Globe<nr>-administraties en de eigen connecties, in die volgorde: dezelfde lijst waaruit je in de tools kiest.

04Categorieën

Overzichten → Easy Menu → Categorieën. Eén lijst voor de hele suite: EasyList, EasyScript en EasyVerify gebruiken dezelfde categorieën om hun overzichten, exports en imports te groeperen. Een categorie is alleen een omschrijving, uniek. Hij heeft geen invloed op de werking van een lijst, sectie of verificatie. Verwijder je een categorie, dan blijven lijsten, secties en verificaties gewoon bestaan, zonder categorie.

Bij het exporteren gaan het ID én de omschrijving van de categorie mee. Bij het importeren geldt in alle drie de tools dezelfde regel:

  1. bestaat het ID uit het bestand, dan wordt daaraan gekoppeld;
  2. bestaat het ID niet, maar is er een categorie met precies dezelfde omschrijving, dan wordt daaraan gekoppeld — zo komen dezelfde categorieën uit twee omgevingen weer samen;
  3. anders wordt de categorie aangemaakt, met het ID uit het bestand.

De categorieën staan in de tabel CSEasyMenuCategories (kolommen ID en Description). Hoe je ze bij een EasyList kiest, staat bij EasyList → Instellingen in het verzoek.

05Termen

Wie een tool meertalig wil hebben, werkt met term-ID's: een EasyList-kolom as [Relatie, 8], het label van een parameter, de titel van een EasyScript-sectie, het label van een WordMerge-selectieveld. Synergy laat zo'n ID niet makkelijk zien; met de termen van Easy Menu zoek je het op.

Initialiseren

Inrichting → Termen → Initialiseren. Vink de talen aan en klik Initialiseren. De pagina vult een zoektabel met, per gekozen taal:

  • alle standaardtermen van Synergy;
  • de termen die in Synergy zijn aangepast, met de aangepaste tekst;
  • de overige termen die in de database staan, zoals die van add-ons en maatwerk (soort Maatwerk);
  • de labels van de velden van alle verzoektypen.

De tabel wordt daarbij eerst helemaal leeggemaakt, ook voor talen die je niet aanvinkt. Het duurt even: het zijn tienduizenden termen per taal. Doe het opnieuw na een Synergy-update, of als er verzoekvelden of eigen termen bij zijn gekomen.

Zoeken

Inrichting → Termen → Zoeken. Kies bij Talen een taal (alleen de geïnitialiseerde talen staan erbij) en zoek op ID of op een stuk van de Term; een van de twee is verplicht. Het resultaat, maximaal 9999 regels, toont het ID, de tekst en het soort: Standaard, Aangepast, Maatwerk of Verzoek (een label van een verzoekveld). Een tekst komt vaak meer dan eens voor; kies het ID waarvan ook de andere talen kloppen.

De tabel, voor technische gebruikers

De zoektabel is gewoon te bevragen, bijvoorbeeld in SQL Server Management Studio of in een EasyList:

KolomTypeInhoud
IDinthet term-ID
LanguageCodenvarchar(3)de taalcode: NL, EN, DE, …
Descriptionnvarchar(255)de tekst, afgekapt op 255 tekens
Sourcenchar(1)D standaard · C aangepast · S maatwerk: termen van add-ons en maatwerk · R label van een verzoekveld
Tabel CSEasyMenuExactTerms; de sleutel is ID + LanguageCode.

Een tekst zoeken

select ID, Description, Source
from   CSEasyMenuExactTerms
where  LanguageCode = 'NL'
  and  Description like '%relatie%'
order by ID

Nederlands en Engels naast elkaar, om het goede ID te kiezen

select nl.ID, nl.Description as Nederlands, en.Description as Engels, nl.Source
from   CSEasyMenuExactTerms nl
       left join CSEasyMenuExactTerms en
              on en.ID = nl.ID and en.LanguageCode = 'EN'
where  nl.LanguageCode = 'NL'
  and  nl.Description = 'Relatie'
order by nl.ID

Die laatste laat zien waarom dat vergelijken nodig is: term 8 en term 320 zijn allebei Relatie, maar in het Engels Account en Relation. De labels van verzoekvelden hebben ID's vanaf 9000000.

Eén term in alle talen

select LanguageCode, Description
from   CSEasyMenuExactTerms
where  ID = 8
order by LanguageCode

De tabel is een momentopname van het initialiseren; een term die je daarna in Synergy aanpast, staat er pas na opnieuw initialiseren in.

06Berichten

Inrichting → Easy Menu → Berichten. Een bericht staat voor alle gebruikers bovenin Synergy, in de balk met het menu. Handig om op een testomgeving Test omgeving te laten zien, of om onderhoud aan te kondigen.

VeldBetekenis
Omschrijvingde naam van het bericht; uniek
Actiefaan = het bericht mag getoond worden
Berichtde tekst, met HTML voor de opmaak. Onder het veld staat een voorbeeld, met de HTML erbij
Begindatum, Einddatumoptioneel: alleen tussen deze momenten
<div style="font-weight: bold; color: black; background-color: #fcb900; width: 98%;
            border: 2px solid #ff6900; margin-top: 5px; padding: 5px 0;">Test Omgeving</div>

Er staat altijd hoogstens één bericht: het oudste bericht dat actief is en binnen zijn datums valt. Het staat er zodra het menu van Synergy opnieuw laadt, bijvoorbeeld na verversen of opnieuw inloggen. Het overzicht filtert op actief, omschrijving en wijzigingsdatum; alleen een beheerder kan berichten maken en wijzigen.

07Medewerker overnemen

Een beheerder of servicedesk die in Synergy “als” een collega wil werken, gebruikt de standaard delegatie van Synergy. Easy Menu maakt dat één klik:

  • op de medewerkerkaart staat de knop Delegatie: Overnemen;
  • in Zoeken medewerkers staat bij elke medewerker een link om over te nemen (niet in de kolomweergave).

De knop en de link verschijnen alleen als de gebruiker het functierecht heeft om het delegatieprofiel van een medewerker te onderhouden (functie 180), niet zelf al een ander heeft overgenomen, en het niet om zichzelf gaat. Een klik opent de delegatie van Synergy en neemt de medewerker meteen over. Bij een geblokkeerde medewerker staat de knop uit en ontbreekt de link. In Inrichting → Easy Menu → Instellingen, sectie Delegatie, zet je beide apart aan of uit: Geactiveerd: Medewerkerkaart en Geactiveerd: Zoeken medewerkers. Standaard staan ze aan.

Deel acht

Installatie

De hele suite komt in één pakket: EasyList, EasyScript, EasyVerify, Easy WordMerge, Easy Office 365, Easy Act2Sign en Easy Menu. Je installeert het in één keer; welke modules je mag gebruiken, bepaalt de licentie.

De kern: pakket over de Synergy-installatie kopiëren, Synergy laten initialiseren, licentie inlezen — daarna per module alleen nog de eigen inrichting.

01De software plaatsen

Het pakket bevat vier mappen, met dezelfde namen als in de installatiemap van Synergy:

MapInhoud
binde programmabestanden
docsde pagina's, met in docs\images de afbeeldingen
sqlde scripts die de tabellen aanmaken en bijwerken
xmlhet menu en de beschrijving van de modules voor Synergy

Los in de hoofdmap staan de verzoektypen die je zelf importeert (hoofdstuk 03).

  1. Maak een back-up van de Synergy-database én van de installatiemap van Synergy.
  2. Waarschuw de gebruikers dat Synergy even niet beschikbaar is, en stop eventueel de application pool van Synergy in IIS.
  3. Hef de blokkering van de bestanden op: rechtermuisklik → Eigenschappen → Blokkering opheffen. Doe dat het makkelijkst op het zip-bestand, vóór het uitpakken; dan hoeft het niet per bestand.
  4. Kopieer de mappen bin, docs, sql en xml over de installatiemap van Synergy. Bestaande bestanden van een vorige release worden overschreven.
  5. Start de application pool weer en open Synergy. Je komt op de initialisatiepagina; start de initialisatie. Die maakt de tabellen aan of werkt ze bij.
  6. Alleen als een Easy-pagina daarna meldt dat een business component of een eigenschap onbekend is: Systeem → Repository heropbouwen.

Kopieer altijd het hele pakket, ook als je niet alle modules gebruikt: de modules gebruiken onderdelen van elkaar.

02Licentie en menu

  1. Lees de licentie in: Easy by DataKings → Inrichting → Easy Menu → Licentie (Easy Menu → Licentie). Log daarna opnieuw in. Zonder licentie draaien de modules in demomodus.
  2. Het menu Easy by DataKings zien gebruikers met de Exact add-on-rol. Wie de module Easy in het modulemenu wil hebben, voegt die toe via de voorkeuren en bewaart.
  3. Aanbevolen: initialiseer de termen (Easy Menu → Termen), zodat je term-ID's kunt opzoeken.

03Per module

Wat er na de installatie per module nog ingericht moet worden. Een module die je niet gebruikt, laat je gewoon staan.

EasyList

  1. EasyList werkt met een eigen verzoektype. Het bestand RequestType_EasyList.xml in de hoofdmap van het pakket gebruikt nummer 9015. Kijk bij Verzoeken → Inrichting → Verzoektypen of dat nummer vrij is. Is het bezet, maak dan een nieuw verzoektype aan en vervang in het bestand 9015 door dat nummer.
  2. Importeer het bestand: Verzoeken → Inrichting → Importeren.
  3. Koppel het verzoektype: Easy List → Instellingen. EasyList werkt uitsluitend met dít type; zolang er geen is ingesteld, stuurt elke EasyList-pagina je door naar de instellingen.

EasyScript

Niets extra: na de licentie kun je secties maken (EasyScript → Je eerste sectie).

EasyVerify

  • Controleer Easy Verify → Instellingen: Actief moet aan staan (EasyVerify → Instellingen).
  • Optioneel: de koppelingen met BPA Platform (Orbis) en n8n, op dezelfde pagina.
  • Optioneel: de SQL-functies. Het script staat op de instellingenpagina; laat het uitvoeren door de beheerder van de database.

Easy WordMerge

  • Easy WordMerge → Instellingen: de rol die definities mag onderhouden en de documenttypes met sjablonen; optioneel die met basis templates (WordMerge → Instellingen).
  • Voor documenten op vaste tijden: de achtergrondtaak (hoofdstuk 04 en WordMerge → Achtergrondtaak).
  • Voor de actie E-mail versturen: een SMTP-server in Synergy.

Easy Office 365

  1. Een app-registratie in Microsoft Entra ID met de juiste machtigingen (Office 365 → Verbinding).
  2. Instellingen: Kalender en, als je e-mail gebruikt, Instellingen: E-mail.
  3. De instellingen per verzoektype, en daarna Synchroniseren aanzetten (Office 365 → Synchroniseren aanzetten).
  4. De achtergrondtaken (hoofdstuk 04).

Easy Act2Sign

  1. Importeer RequestTypes_Act2Sign.xml uit de hoofdmap van het pakket via Verzoeken → Inrichting → Importeren: de verzoektypen voor het dossier, de ondertekenaar en de fout. Het bestand gebruikt de nummers 9050, 9051 en 9052; zijn die bezet, pas ze dan eerst aan in het bestand.
  2. Koppel de drie verzoektypen en leg de verbinding met Stiply vast: Easy Act2Sign → Instellingen (Act2Sign → Instellingen).
  3. De achtergrondtaken (hoofdstuk 04).

Easy Menu

Alles optioneel: connecties naar andere databases, een bericht bovenin Synergy en het overnemen van medewerkers (Easy Menu).

04Achtergrondtaken

Easy WordMerge, Easy Office 365 en Easy Act2Sign doen een deel van hun werk op de achtergrond. Dat gaat zoals bij de achtergrondtaken van Synergy zelf: een geplande taak in Windows op de server van Synergy start het programma Exact.Process.exe uit de map bin, met de taak als parameters.

cd "<installatiemap van Synergy>\bin"
Exact.Process.exe /DBCONFIG:<omgeving> /ASSEMBLY:<onderdeel> /CLASS:<taak>
ParameterBetekenis
/DBCONFIGde naam van de virtuele map van de Synergy-omgeving in IIS; daarmee vindt het programma de juiste database
/ASSEMBLYhet onderdeel met de taak, zie de tabel hieronder
/CLASSde taak zelf
/HIDalleen bij de WordMerge-taken voor één definitie of één groep: het nummer

Alle taken

Module en /ASSEMBLY/CLASSTaak
Easy WordMerge
CSEasyWM.Jobs
GenerateDefinitionsalle definities voor de achtergrondtaak
GenerateDefinition + /HID:<nummer>één definitie
GenerateDefinitionGroup + /HID:<nummer>de definities van één groep
Easy Office 365
CSEasyO365.Jobs
CalenderSynchagenda, beide richtingen
CalenderSynchSendagenda, alleen versturen*
CalenderSynchReceiveagenda, alleen ontvangen*
EmailSynche-mail
Easy Act2Sign
Act2Sign.Synergy.Jobs
CreateDossiersdossiers naar Stiply sturen
UpdateDossiersvoortgang en ondertekende documenten ophalen

* Voor de agenda óf de taak voor beide richtingen, óf de twee losse taken samen.

Voorbeeld: één WordMerge-definitie

cd "<installatiemap van Synergy>\bin"
Exact.Process.exe /DBCONFIG:<omgeving> /ASSEMBLY:CSEasyWM.Jobs /CLASS:GenerateDefinition /HID:22

Hoe vaak. WordMerge op het moment dat de documenten klaar moeten zijn, bijvoorbeeld 's nachts. Office 365 vaak, bijvoorbeeld elke vijf minuten. Act2Sign regelmatig, zodat een dossier kort na het klaarzetten vertrekt en de voortgang bijblijft.

Welke taken je nodig hebt en wat ze precies doen, staat bij de module: WordMerge, Office 365 en Act2Sign. Plan alleen taken in voor modules die je gebruikt.

Een taak inplannen

  1. Open op de server van Synergy de Taakplanner van Windows en kies Taak maken.
  2. Laat de taak draaien onder een Windows-account dat ook gebruiker in Synergy is, en kies Uitvoeren, ongeacht of de gebruiker is aangemeld. De taak werkt met de rechten van die gebruiker, en in de taak is dat “de huidige gebruiker”; vaak is het een aparte systeemgebruiker.
  3. Trigger: het schema, bijvoorbeeld dagelijks, met herhalen elke vijf minuten.
  4. Actie: Een programma starten. Programma: <installatiemap van Synergy>\bin\Exact.Process.exe; argumenten: de parameters uit de tabel; Beginnen in: de map bin.
  5. Instellingen: kies bij Als de taak al wordt uitgevoerd voor Geen nieuw exemplaar starten, zodat een taak nooit met zichzelf overlapt.

Het verloop van elke run staat in het proceslog van Synergy: Systeem → Overzichten → Log → Processen. Daar zie je ook of een taak niets deed, bijvoorbeeld omdat de licentie ontbreekt of de koppeling uit staat.

05Een nieuwe release

Een nieuwe release installeer je op dezelfde manier: stap 1 tot en met 6 van hoofdstuk 01. De initialisatie werkt de tabellen bij; licentie, instellingen en alles wat je gemaakt hebt blijven staan. Welke versie er per module draait, zie je bij Easy Menu → Licentie.

  • Kijk in de releasenotes of er nieuwe instellingen zijn.
  • Stop de achtergrondtaken zolang je de bestanden kopieert, en start ze daarna weer.
  • Initialiseer de termen opnieuw na een update van Synergy zelf, of als er verzoekvelden of eigen termen bij zijn gekomen.