Just wanted to let everyone know that...
October 2nd and 3rd, I will be in Boston to help out with an ILM 2007 workshop
hosted by Microsoft and LogicTrends.
It will be at the Microsoft Office in Waltham, MA(Boston)..
Feel fee to say hi!! if you are attending!!
Tuesday, September 25, 2007
Presenting at DEC2008 in Chicago
I am proud to say that I will be speaking at DEC2008 in Chicago next year with my good friend Richard Wakeman..
The presentation will be on Extreme Group Methods using MIIS(ILM).
Managing groups with over 50k members and lots more...
The best methods to use when designing a group implementation...
Using the ECMA(Extensible Managment Agent)for generating Deltas..
Using SQL and the ECMA to generate Deltas...
I will also show you the secret of how to do individual attribute deltas for multi-valued attributes...
Stay Tuned....
The presentation will be on Extreme Group Methods using MIIS(ILM).
Managing groups with over 50k members and lots more...
The best methods to use when designing a group implementation...
Using the ECMA(Extensible Managment Agent)for generating Deltas..
Using SQL and the ECMA to generate Deltas...
I will also show you the secret of how to do individual attribute deltas for multi-valued attributes...
Stay Tuned....
Tuesday, July 03, 2007
Guess Who's a Microsoft MVP?
I am proud to say that I am now a Microsoft MVP for MIIS (ILM).
I look forward to help making the MIIS (ILM) community better than ever...
I look forward to help making the MIIS (ILM) community better than ever...
Wednesday, June 13, 2007
New Extensible Management Agent Documents added to the MIIS(ILM): Getting Started Collection
These new documents are a great tool for understanding the basic steps needed
in developing your own extensible connectivity management agents for MIIS(ILM).
Here is the link to the MIIS Web Forum announcement
Here is the link to the location of the Getting Started Collection.
I had lots of fun working with Markus on the development of these documents.
Stayed Tuned for the "Advanced Series" :)
in developing your own extensible connectivity management agents for MIIS(ILM).
Here is the link to the MIIS Web Forum announcement
Here is the link to the location of the Getting Started Collection.
I had lots of fun working with Markus on the development of these documents.
Stayed Tuned for the "Advanced Series" :)
Tuesday, May 01, 2007
Running more than one Lotus Notes Management Agent at a time
When scheduling runs with multiple Lotus Notes Management Agents in MIIS, you need to be careful because you can't run more then one Notes MA at a time.
When you try to run the second ma, it will fail throwing an error.
This can be a pretty annoying problem when you have to run multiple Notes MA's on a
different scheduling interval.
I came up with a quick way to check if there were any other Notes MA's running using WMI and VB.net
This way instead of the second Notes MA failing, it would just wait until the other Notes MA was finished.
Here's the code snippet:
Imports Microsoft.win32
Imports System.Xml
Imports System.IO.Directory
Imports System.IO
Module NotesMAStatus
Sub Main(ByVal args() As String)
Dim Service = GetObject("winmgmts:root\MicrosoftIdentityIntegrationServer")
Dim ManagementAgents = Service.ExecQuery("select * from MIIS_ManagementAgent")
Dim MA
Dim maName
Dim MARunning As Boolean = True
Do While MARunning = True
MARunning = False
For Each MA In ManagementAgents
If MA.Type.ToString.ToLower = "lotus notes" Then
'Console.WriteLine("")
'Console.WriteLine(MA.Name)
'Console.WriteLine(MA.Guid)
Dim ManagementAgent = Service.Get("MIIS_ManagementAgent.Name='" + MA.Name + "'")
Dim test = ManagementAgent.RunStatus(MA.Guid)
'Console.WriteLine(test)
Console.WriteLine("")
If test = "in-progress" Then
MARunning = True
Console.WriteLine("")
Console.WriteLine(MA.Name + " is Running")
Console.WriteLine("")
End If
End If
Next
If MARunning = True Then
System.Threading.Thread.Sleep(10000)
End If
Loop
End Sub
End Module
When you try to run the second ma, it will fail throwing an error.
This can be a pretty annoying problem when you have to run multiple Notes MA's on a
different scheduling interval.
I came up with a quick way to check if there were any other Notes MA's running using WMI and VB.net
This way instead of the second Notes MA failing, it would just wait until the other Notes MA was finished.
Here's the code snippet:
Imports Microsoft.win32
Imports System.Xml
Imports System.IO.Directory
Imports System.IO
Module NotesMAStatus
Sub Main(ByVal args() As String)
Dim Service = GetObject("winmgmts:root\MicrosoftIdentityIntegrationServer")
Dim ManagementAgents = Service.ExecQuery("select * from MIIS_ManagementAgent")
Dim MA
Dim maName
Dim MARunning As Boolean = True
Do While MARunning = True
MARunning = False
For Each MA In ManagementAgents
If MA.Type.ToString.ToLower = "lotus notes" Then
'Console.WriteLine("")
'Console.WriteLine(MA.Name)
'Console.WriteLine(MA.Guid)
Dim ManagementAgent = Service.Get("MIIS_ManagementAgent.Name='" + MA.Name + "'")
Dim test = ManagementAgent.RunStatus(MA.Guid)
'Console.WriteLine(test)
Console.WriteLine("")
If test = "in-progress" Then
MARunning = True
Console.WriteLine("")
Console.WriteLine(MA.Name + " is Running")
Console.WriteLine("")
End If
End If
Next
If MARunning = True Then
System.Threading.Thread.Sleep(10000)
End If
Loop
End Sub
End Module
Thursday, April 26, 2007
Dual Authoritative Data Sources
I have found that in some environments it is a requirement that MIIS sync data that can be authoritative from multiple sources.
After some deep thinking, I came up with a very good way of doing this.
Here's how to handle it.
On each ma you setup an import flow that flow to it's own metaverse attribute
Example:
Import Flow
Data Source 1 Metaverse
givenName => DS1_givenName
Data Source 2 Metaverse
givenName => DS2_givenName
You need to create advanced flow rule extensions to flow to each metaverse attribute.
In the advanced flows you need to check if there is a null value in the data source.
This is so that when one of your data sources flows a delete, the metaverse attribute gets populated with a value.
You can use any type of character or characters in the metaverse to represent a null metaverse value.
We do this because if you have no value in the datasource then there will be no value in the metaverse attribute. We need to have this in the metverse attribute because any time a value is flowed to the metaverse, a date value is set.
We will use this date value in the advanced export flow code to determine which value is the newest value.
Example:
Export Flow
Metaverse Data Source 1
DS1_givenName + DS2_givenName => givenName
Metaverse Data Source 2
DS1_givenName + DS2_givenName => givenName
In the export flow code you need to compare the date values on each metaverse attribute by returning the LastContributionTime value from the metaverse attribute.
Here's an example.
mventry("metaverse attribute").LastContributionTime
Once you figure out which value is the newest, then you can check each value to see if it is representing a null value, if it is then you should flow a delete to the data source otherwise just flow the attribute value.
When implementing a solution like this, you really need to think about how everything is going to flow and what data source will take precedence from the beginning.
When you project the metaverse object from the first data source and import these values, they will have that current date timestamped on the attributes.
Now when you join the other data source it will also flow values to the metaverse and these attributes will be newer than the previous data source attributes because the dates are more current then the others.
With some proper planning and testing this solution can be implemented without error.
Good Luck...
After some deep thinking, I came up with a very good way of doing this.
Here's how to handle it.
On each ma you setup an import flow that flow to it's own metaverse attribute
Example:
Import Flow
Data Source 1 Metaverse
givenName => DS1_givenName
Data Source 2 Metaverse
givenName => DS2_givenName
You need to create advanced flow rule extensions to flow to each metaverse attribute.
In the advanced flows you need to check if there is a null value in the data source.
This is so that when one of your data sources flows a delete, the metaverse attribute gets populated with a value.
You can use any type of character or characters in the metaverse to represent a null metaverse value.
We do this because if you have no value in the datasource then there will be no value in the metaverse attribute. We need to have this in the metverse attribute because any time a value is flowed to the metaverse, a date value is set.
We will use this date value in the advanced export flow code to determine which value is the newest value.
Example:
Export Flow
Metaverse Data Source 1
DS1_givenName + DS2_givenName => givenName
Metaverse Data Source 2
DS1_givenName + DS2_givenName => givenName
In the export flow code you need to compare the date values on each metaverse attribute by returning the LastContributionTime value from the metaverse attribute.
Here's an example.
mventry("metaverse attribute").LastContributionTime
Once you figure out which value is the newest, then you can check each value to see if it is representing a null value, if it is then you should flow a delete to the data source otherwise just flow the attribute value.
When implementing a solution like this, you really need to think about how everything is going to flow and what data source will take precedence from the beginning.
When you project the metaverse object from the first data source and import these values, they will have that current date timestamped on the attributes.
Now when you join the other data source it will also flow values to the metaverse and these attributes will be newer than the previous data source attributes because the dates are more current then the others.
With some proper planning and testing this solution can be implemented without error.
Good Luck...
Thursday, February 08, 2007
1st Post -- Let's get this started
I have been wanting to blog for so long now and I have decided to finally go through with it.
The main purpose of this is to blog is to talk about Micorosft's views and products for Identity Management and the occasional blurp about other vendors.
Welcome and enjoy the posts to come!
Please excuse the blog for now, as I will be customizing it for the next couple of weeks...
Thanks,
Joe Stepongzi
The main purpose of this is to blog is to talk about Micorosft's views and products for Identity Management and the occasional blurp about other vendors.
Welcome and enjoy the posts to come!
Please excuse the blog for now, as I will be customizing it for the next couple of weeks...
Thanks,
Joe Stepongzi
Subscribe to:
Posts (Atom)