Wednesday, December 17, 2008

Installing ADAM on Vista SP1

To date, Microsoft still hasn’t released an ADAM build for Vista. We’ve since had to hack our way to get ADAM installed; however, the release of Vista SP1 presented a new set of obstacles. Basically what you’ll see is an “Entry Point Not Found” error which references the VSSAPI.DLL. In order to overcome this, you just copy the older version of the VSSAPI.DLL into the ADAM directory on your Vista machine (Thanks siudyda.com for the post).

Here are the steps to get ADAM installed on an Vista SP1 build:

  1. Install ADAM on a non-Vista machine.
  2. Copy the %WINDIR%\ADAM folder from your non-Vista machine to the same location on your Vista machine.
  3. Create a new registry key HKLM\Software\Microsoft\Windows\CurrentVersion\ADAM_Shared. Under this key, create a new Multi-String value named “SharedFolders”.
  4. Run the adaminstall.exe from the %WINDIR%\ADAM directory. Do not import any LDIF files. Note: if you experience the error mentioned above, just copy the older version of VSSAPI.DLL into your ADAM directory.
  5. Complete the wizard and you should have a fully functional ADAM instance. All you need to do is import the LDIF files you want to design your schema.

Friday, October 31, 2008

ILM stuff using the IBM Data Access Provider

Managing data in an iSeries seems to still get a lot of questions, therefore I thought I'd share some things I've been playing around with. For those who don't already know, there is an AS/400 MA which is available via the Microsoft Identity Integration Server Host Access Management Agent FP3; only if you have an MSDN id. Although I have yet had a chance to play with it, I understand this MA allows you to actually provision user accounts into an AS/400.

Another common scenario for accessing data is when the iSeries is hosting a DB2 instance with identity data needing to be touched by ILM. Here, we can use the IBM Data Access Provider to interface through .NET. This is well documented in IBM's Redbook, "Integrating DB2 Universal Database for iSeries with Microsoft ADO .NET." For example, you can do pretty much everything such as executing SELECT, INSERT, UPDATE, DELETE, and STORED PROCEDURES. Here is a quick example for executing a SELECT statement to read data using IBM's .NET classes:

iDB2Connection conn = new iDB2Connection();
conn.ConnectionString = "DataSource=XXX.XXX.XXX.XXX;DataCompression=True;ConnectionTimeout=10;Password=XXXXXXX;UserID= XXXXXXX";

conn.Open();

iDB2Command cmd = new iDB2Command();

cmd.CommandText = "SELECT * FROM %TABLEORVIEWNAME%";
cmd.CommandTimeout = 0;
cmd.Connection = conn;

iDB2DataReader dr = cmd.ExecuteReader();

DataTable schemaTable = dr.GetSchemaTable();

ArrayList attributeList = new ArrayList();

foreach (DataRow myField in schemaTable.Rows)
{

attributeList.Add(myField["ColumnName"].ToString().Replace("\"", ""));

}

while (dr.Read())
{

for (int i = 0; i < dr.FieldCount; i++)
{
if (dr[i] is string)
{
System.Console.WriteLine(String.Format("{0}= {1}", attributeList[i], dr[i].ToString().Trim()));
}
}
System.Console.WriteLine(String.Format(""));
}

The output looks something like this:

Column 1= value
Column 2= value
Column 3= value
Column 4= value

To insert data into a table, you'd do something like this:

iDB2Connection exportConn = new
iDB2Connection();

exportConn.ConnectionString =
"DataSource=XXX.XXX.XXX.XXX;DataCompression=True;ConnectionTimeout=10;Password=XXXXXXX;UserID= XXXXXXX ";
exportConn.Open();

string commandString = String.Format("INSERT INTO %TABLENAME% (COLUMN0, COLUMN1, COLUMN2 ");
commandString = commandString + ") VALUES (";
commandString = commandString + "VALUE0, VALUE1, VALUE2)";

iDB2Command cmd = new
iDB2Command(commandString,exportConn);

try

{
cmd.ExecuteNonQuery();
cmd.Dispose();
}
catch { throw; }

exportConn.Close();

You can also leverage common techniques for managing deltas if you're building out an XMA. As you can see, it's pretty straight forward even for non-ILM scenarios.

IBM has announced the same functionality for LINQ; however at the current beta version does not support DB2 for iSeries. Note: IBM Data Service Provider for .NET – LINQ Beta 1

Wednesday, October 29, 2008

"Geneva" to support SAML 2.0

Finally confirmed, "Geneva" is to support SAML 2.0. See post on des...

Tuesday, October 7, 2008

TEC 2009 Pre-Conference Workshops announced!

Today, NetPro (Quest) announced the pre-conference workshops for TEC2009. All of which look very cool! If you are planning to deploy ILM2 in the near future, you should look into checking out (ILM MVPs David and Brad) Ensynch’s workshop on “Building a Practical Lifecycle Mgt. Application in the ILM2 Portal!” A must for experiencing the extensibility of the product!

OCG will also be doing a workshop around Federated Identity, “Solutions You Can Use for Federated Identity.” Here, we’ll be sharing “in the field” experiences when deploying federated solutions around legacy applications leveraging Citrix, modern day ASP.NET applications, RMS, and of course SharePoint. Come get your questions answered or walk away with a 1st draft design for a federated solution! I’m hoping to also include some Zermatt and CardSpace content.