Attribute-Level Imports

MIIS gives you the option of specifying individual attributes to include in your delta import. Presumably you could use this to specify which single-valued attribute to import (perhaps the Surname has changed, but nothing else has), but I’d be surprised if you got much of a performance improvement compared to just re-importing the whole row.

Where attribute-level imports can really make a difference, however, is when you’re importing multivalue attributes, allowing you to direct MIIS to the appropriate lines in the Values table, while ignoring the rest.

In addition to “Add”, “Delete” and “Modify” we use an extra keyword in the ChangeType column to indicate an attribute-level import. I use “Att_Modify”, but you can use another word if you prefer. First modify your Delta table, to add an extra column called “AttributeName”. This column will hold the name of the attribute to be imported. It will only be referred to if the ChangeType column contains “Att_Modify”. 

ObjectID ObjectType ChangeType AttributeName
Staff Group Att_Modify Member
CoffeeClub Group Add NULL

In MIIS, refresh the MA’s schema so that MIIS can see the new column. (Note that the “Configure attribute-level change” option will be greyed out until MIIS has registered the extra AttributeName column.) Now set up the Configure Delta page as shown: 

The next step is to modify the SQL script you use to generate your Delta table. You are going to need a separate section for each attribute you want to consider separately.  

/* member */
INSERT INTO ADMV_Objects_Delta
SELECT
  CASE WHEN a.ObjectID IS NULL THEN
  b.ObjectID
  ELSE a.ObjectID
  END AS ObjectID,
  “Group” AS ObjectType,
  “Att_Modify” AS ChangeType,
  “member” AS AttributeName
FROM ADMV_Values_Snapshot a FULL OUTER JOIN ADMV_Values_Archive b
ON a.ObjectID = b.ObjectID AND a.Value = b.Value
WHERE (a.AttributeName = “member” OR b.AttributeName = “member”)
AND (a.ObjectID IS NULL OR b.ObjectID IS NULL)
 

/* dlMemSubmitPerms */
INSERT INTO ADMV_Objects_Delta
SELECT
  CASE WHEN a.ObjectID IS NULL THEN
  b.ObjectID
  ELSE a.ObjectID
  END AS ObjectID,
  “Group” AS ObjectType,
  “Att_Modify” AS ChangeType,
  “dlMemSubmitPerms” AS AttributeName
FROM ADMV_Values_Snapshot a FULL OUTER JOIN ADMV_Values_Archive b
ON a.ObjectID = b.ObjectID AND a.Value = b.Value
WHERE (a.AttributeName = “dlMemSubmitPerms” OR b.AttributeName = “dlMemSubmitPerms”)
AND (a.ObjectID IS NULL OR b.ObjectID IS NULL)

This script as-is does lead to duplicate rows in the Delta table, but MIIS handles that fine. For efficiency it is preferable to remove the dupes by using another table and a SELECT DISTINCT query.