Bodo's Dynamics NAV Blog
Bodo ist ein Dynamics NAV Urgestein. Er programmiert NAV seit DOS Zeiten und hat auch keine Scheu vor .NET. Viele Neueinsteiger wurden von ihm in den letzten Jahren zu NAV Entwicklern ausgebildet. In diesem Blog veröffentlicht Bodo von Zeit zu Zeit technische Kabinettstückchen aus der Welt von Dynamics NAV und .NET.NAV 2009 – Notizen und Benachrichtigungen an Active Directory Gruppen
Mit dem NAV 2009 Role Tailored Client hat Microsoft die Notizen erfunden, die man an jeden beliebigen Datensatz hängen kann, und gleichzeitig die Möglichkeit geschaffen, andere Benutzer über die angehängte Notiz zu benachrichtigen.
Dabei werden bei der Auswahl des Benachrichtigungsempfängers die eingerichteten Windows Anmeldungen angezeigt. Sowohl die Active Directory Benutzer (z.B. der Administrator) als auch die Active Directory Gruppen (z.B. das Dynamics NAV Team), wie die folgende Abbildung zeigt:

Unglücklicherweise verschwinden Benachrichtigungen an Active Directory Gruppen im Nirwana und werden nicht den Gruppenmitgliedern zugestellt.
Diese Einschränkung wollte ich durch eine kleine Umbaumaßnahme beseitigen und bin dabei zunächst auf ein anderes Problem gestoßen, dass ich in meinem letzten Artikel dokumentiert habe: NAV 2009 – Interner Fehler 12 in Modul 40. Mit Hilfe der dort entwickelten .NET Assembly ist der Rest allerdings ein Kinderspiel.
Die Notizen werden in der Tabelle 2000000068 Record Link gespeichert. Wir müssen daher nur das OnInsert-Ereignis dieser Tabelle so erweitern, dass Record Links für alle Mitglieder der gewählten Active Directory Gruppe generiert werden.
RecordLink Record Record Link
Search DotNet 'Comporsys.LdapSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bdf4f6702c4e909e'.Comporsys.LdapSearch.Search
List DotNet 'Comporsys.LdapSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bdf4f6702c4e909e'.Comporsys.LdapSearch.WindowsGroupMemberList
Member DotNet 'Comporsys.LdapSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bdf4f6702c4e909e'.Comporsys.LdapSearch.WindowsGroupMember
WinObj DotNet 'Comporsys.LdapSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bdf4f6702c4e909e'.Comporsys.LdapSearch.WindowsObject
i Integer
// --- 001
IF NOT Notify THEN BEGIN
EXIT;
END;
Search := Search.Search('comporsys-hansa'); // ToDo: Servername sollte konfigurierbar sein
WinObj := Search.FindUserOrGroup("To User ID");
IF WinObj.Type = 'user' THEN BEGIN
EXIT;
END;
List := Search.FindGroupMember("To User ID");
FOR i := 0 TO List.Count - 1 DO BEGIN
Member := List.Item(i);
CLEAR(RecordLink);
RecordLink.COPY(Rec);
RecordLink."To User ID" := Member.MemberId;
RecordLink.INSERT;
END;
// +++ 001
Hierzu nur noch folgende Anmerkungen:
1) Der Primärschlüssel „Link ID“ der Tabelle Record Link ist auf „AutoIncrement“ gesetzt und muss bzw. darf daher nicht manuell gesetzt werden.
2) Die Methode COPY() des Record-Datentyps kopiert auch den Inhalt der BLOB-Spalte „Note“ um.
OnInsert-Trigger
RecordLink Record Record Link
Search DotNet 'Comporsys.LdapSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bdf4f6702c4e909e'.Comporsys.LdapSearch.Search
List DotNet 'Comporsys.LdapSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bdf4f6702c4e909e'.Comporsys.LdapSearch.WindowsGroupMemberList
Member DotNet 'Comporsys.LdapSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bdf4f6702c4e909e'.Comporsys.LdapSearch.WindowsGroupMember
WinObj DotNet 'Comporsys.LdapSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bdf4f6702c4e909e'.Comporsys.LdapSearch.WindowsObject
i Integer
// --- 001
IF NOT Notify THEN BEGIN
EXIT;
END;
Search := Search.Search('comporsys-hansa'); // ToDo: Servername sollte konfigurierbar sein
WinObj := Search.FindUserOrGroup("To User ID");
IF WinObj.Type = 'user' THEN BEGIN
EXIT;
END;
List := Search.FindGroupMember("To User ID");
FOR i := 0 TO List.Count - 1 DO BEGIN
Member := List.Item(i);
CLEAR(RecordLink);
RecordLink.COPY(Rec);
RecordLink."To User ID" := Member.MemberId;
RecordLink.INSERT;
END;
// +++ 001
Neueste Einträge
- Dynamics NAV und das Ausdrucken externer Dateien
- Fehlende Icons in der Toolbar der Seitenansicht für die Berichte
- Dynamics NAV Web Services und die Reihenfolge der Ereignistrigger
- Der Unterschied zwischen den Sicherheitsmodellen Standard und Enhanced
- NAV 2009 R2 – Login-Dialog für den Role Tailored Client
- [UPDATE] NAV 2009 – Kritischer Fehler in Berichten für den Role Tailored Client
- NAV 2009 – Kritischer Fehler in Berichten für den Role Tailored Client
- NAV 2009 – Security Filter, Buchungsdatum und Rec.READPERMISSION
- NAV 2009 – Funktion FORMAT, Datentyp OPTION und unterschiedliches Verhalten von Classic Client und Role Tailored Client
- NAV 2009 – Quellcode des Transformation Tools veröffentlicht
- NAV 2009 – Copy & Paste und böse Zeichen in Text- und Code-Feldern
- NAV 2009 – Unerwartetes Verhalten von Codeunit.RUN
- NAV 2009 – Notizen und Benachrichtigungen an Active Directory Gruppen
- NAV 2009 – Interner Fehler 12 in Modul 40
- NAV 2009 Form Transformation – Wo sind die deutschen (DEU) Captions hin?
- NAV 2009 und die Frage, warum die Anzahl der Inforegister PAGE.RUNMODAL beeinflusst
- NAV 2009 Web Services und das Geheimnis der Extension Codeunits
- Der NAV-Client zeigt in der Übersicht der aktiven Sessions nur die eigene Session an
- Der NAV-Client versucht, eine externe Komponente auszuführen
Nach Datum
Tag Cloud
2009 active directory add-in addin ascii bericht buchungsdatum caption classic codeunit copy drucken enhanced export extension form format gdpdu icons inforegister ldap login nav option page paste pdf r2 readpermission reihenfolge report rtc run runmodal securtiy service princial name session sicherheit sicherheitsmodelle spn sqlserver standard toolbar transformation transformation tool trigger webservices übersicht

