Imports System.Collections.Generic Imports System.Data Imports DigitalData.Modules.Database Imports DigitalData.Modules.Interfaces Imports DigitalData.Modules.Logging Public Class ADSyncJob Inherits JobBase Implements IJob(Of ADSyncArgs) Public Sub New(LogConfig As LogConfig, Firebird As Firebird, MSSQL As MSSQLServer) MyBase.New(LogConfig, Firebird, MSSQL) End Sub Public Sub Start(Arguments As ADSyncArgs) Implements IJob(Of ADSyncArgs).Start Dim oJobName As String = [GetType]().Name Try Dim oSync = New ActiveDirectoryInterface(_LogConfig, _Firebird, _MSSQL, Arguments.RootPath) _Logger.Info("Running job {0}", oJobName) If oSync.Authenticate() = False Then _Logger.Warn("Job {0} could not be completed! Authentication failed!", oJobName) Exit Sub End If 'Dim oGroups As List(Of ADGroup) = oSync.ListGroups() ' 30.04.19: MSSQL als führendes System Dim oGroups As New List(Of String) Dim oDatatable = _MSSQL.GetDatatable("SELECT NAME FROM TBDD_GROUPS WHERE AD_SYNC = 1 AND ACTIVE = 1") _Logger.Debug("Found {0} Groups", oDatatable.Rows.Count) For Each oRow As DataRow In oDatatable.Rows oGroups.Add(oRow.Item("NAME")) Next For Each oGroup In oGroups _Logger.Debug("Syncing Group {0}", oGroup) Dim oSyncedUsers = oSync.SyncUsersForGroup(oGroup) If oSyncedUsers Is Nothing Then _Logger.Warn("Group {0} could not be synced!", oGroup) ElseIf oSyncedUsers.Count > 0 Then _Logger.Info("Synced {0} users for group {1}", oSyncedUsers.Count, oGroup) End If Next _Logger.Info("Job {0} completed!", oJobName) Catch ex As Exception _Logger.Warn("Job {0} failed!", oJobName) _Logger.Error(ex) End Try End Sub Public Function ShouldStart(Arguments As ADSyncArgs) As Boolean Implements IJob(Of ADSyncArgs).ShouldStart Return Arguments.Enabled End Function End Class