@@ -311,7 +311,7 @@ public override void Exec()
311311 dbPerm . Process = ( r . Permission == Microsoft . AnalysisServices . BackEnd . DataModelingRolePermission . Refresh || r . Permission == Microsoft . AnalysisServices . BackEnd . DataModelingRolePermission . ReadRefresh ) ;
312312 dbPerm . Read = ( ( r . Permission == Microsoft . AnalysisServices . BackEnd . DataModelingRolePermission . Read || r . Permission == Microsoft . AnalysisServices . BackEnd . DataModelingRolePermission . ReadRefresh ) ? ReadAccess . Allowed : ReadAccess . None ) ;
313313
314- if ( r . Members . Count == 0 )
314+ if ( r . Members . Count == 0 && r . ExternalMembers . Count == 0 )
315315 {
316316 RoleMemberInfo infoMember = new RoleMemberInfo ( ) ;
317317 infoMember . TargetServerName = _deploymentTargetServer ;
@@ -333,6 +333,24 @@ public override void Exec()
333333
334334 listRoleMembers . AddRange ( GetGroupMembers ( infoMember . directoryEntry , fakeDatabase , fakeRole , 1 ) ) ;
335335 }
336+ foreach ( Microsoft . AnalysisServices . BackEnd . DataModelingRoleExternalMember rm in r . ExternalMembers )
337+ {
338+ RoleMemberInfo infoMember = new RoleMemberInfo ( ) ;
339+ infoMember . TargetServerName = _deploymentTargetServer ;
340+ infoMember . database = fakeDatabase ;
341+ infoMember . role = fakeRole ;
342+ infoMember . MemberName = rm . Name ;
343+
344+ //TODO: properly handle AAD members and groups
345+ //infoMember.directoryEntry = GetDirectoryEntry(rm.Name);
346+ //infoMember.MemberName = GetDomainAndUserForDirectoryEntry(infoMember.directoryEntry);
347+ //if (string.IsNullOrEmpty(infoMember.MemberName))
348+ // infoMember.MemberName = rm.Name;
349+ listRoleMembers . Add ( infoMember ) ;
350+
351+ //TODO:
352+ //listRoleMembers.AddRange(GetGroupMembers(infoMember.directoryEntry, fakeDatabase, fakeRole, 1));
353+ }
336354
337355 foreach ( Microsoft . AnalysisServices . BackEnd . DataModelingTable table in tomTables )
338356 {
0 commit comments