<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Eric Fleischman's WebLog : Windows</title><link>http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx</link><description>Tags: Windows</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Change visibility in the directory...or lack there of (aka "what's the point of aging?")</title><link>http://blogs.technet.com/efleis/archive/2006/10/28/change-visibility-in-the-directory-or-lack-there-of-aka-what-s-the-point-of-aging.aspx</link><pubDate>Sun, 29 Oct 2006 01:14:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:483853</guid><dc:creator>efleis</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/efleis/comments/483853.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=483853</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I’m often asked about aging in adamsync so I thought I’d present the more general problem here for people to ponder. Hopefully this gives some context around the problem which aging in adamsync is supposed to address.&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Imagine you are writing a tool which sync’s changes out of AD. You (the person running this tool)&amp;nbsp;have some set of permissions…whatever they may be. You are syncing along happily.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;One day you get a phone call…”My user was moved from OU=bar in to OU=foo yet the sync target still shows me in OU=bar. What gives?” You begin to investigate only to find out that you don’t have permissions to OU=foo. As a result, you don’t have any of the objects in OU=foo in your target location. The reason is straight forward….you don’t have permissions to the target, so when the object moved from bar to foo you never saw this change. You couldn’t see this change! You didn’t have permissions to OU=foo.&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;This is one of many such cases. If you don’t have the ability to see some object in the target location, it is hard to say anything about your view of it from the source. You could still have the object in the source location and have no idea that it moved out of your view. The reason is of course straight forward….you can’t see the target so you didn’t see that mod and we don’t have any construct where the source can say “out of your purview but not here anymore.” So you simply don’t realize the object has changed.&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Historically, this was not nearly as much of a problem. Most people use DirSync to sync changes out of AD. In Win2K, in order to use DirSync you needed to be a domain admin. So, you could see &lt;I style="mso-bidi-font-style: normal"&gt;most &lt;/I&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;things that happen (out of the box anyway). In Win2k3 we built a feature for DirSync that made this problem more common….DirSync object security mode. In this mode anyone can use DirSync to sync out of any partition they so choose, and DirSync only shows changes for objects you have access to see. This is a very useful feature.&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;So now let’s consider adamsync, a simple DirSync client, and the problem I've mentioned above. When we wrote adamsync we wanted to ensure that we could handle the scenario where you are not an admin and want to sync data out. So, we default the tool to object security mode. This is fairly convenient for non-admins that wish to use the tool.&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;However, consider a very mainstream case. You are using adamsync to sync objects out of some domain NC. Objects are deleted. You don’t have permissions to see the deletions (remember I said that you “lose changes” when you move an object to a place you don’t have perms to? Well normal users don’t have permissions to the deleted objects container out of the box. So it’s a very common mainstream case for this problem….). As a result, you never reflect the deletion in your target container in ADAM. You’re woefully out of date.&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;One fix for this problem could be that you just give more perms. In the deleted objects case, just give the user who is syncing permissions to read the deleted objects container. But some people might not find that acceptable, depending upon their scenario.&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Enter aging. We wrote aging to be a periodic background thread that goes and checks to make sure objects which we haven’t seen change in a while are actually still there. So you can imagine that every now and then you go back and check to ensure that all objects you have in the target are still in the source. This is the aging approach. While the specifics are configurable, that’s the basic idea.&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Aging is just one such mechanism. There are lots of approaches to this problem that one could consider. It’s just the one we chose&amp;nbsp;for adamsync.&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;One minor point I’ll raise before ending this post. Aging in ADAMSync in R2 is unfortunately not working properly. There is a bug that basically breaks it in some cases. It’s hard to say when but you should assume you’ll hit it at some point….no idea if you will, but you never know. So if you need aging pre-LH (ie, you have a compelling scenario where you want to sync as a non-admin) please open a QFE request with PSS. Or just give perms to deleted objects for now (or whatever the container is which you can't see)…a much easier quick-fix.&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;(just updated some formatting)&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=483853" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.technet.com/efleis/archive/tags/ADAMSync/default.aspx">ADAMSync</category></item><item><title>Finding the lost&amp;found container in S.DS.P...or anything that isn't ADSI really</title><link>http://blogs.technet.com/efleis/archive/2006/10/26/finding-the-lost-found-container-in-s-ds-p-or-anything-that-isn-t-adsi-really.aspx</link><pubDate>Fri, 27 Oct 2006 01:46:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:480075</guid><dc:creator>efleis</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/efleis/comments/480075.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=480075</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I found myself writing a piece of C# which would go hunt for objects in lost&amp;amp;found today. This is a pretty straight forward task….find that container, pop in to it and search away. I usually do this by looking at the lost&amp;amp;found well known GUID (which is &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adschema/adschema/a_wellknownobjects.asp"&gt;GUID_LOSTANDFOUND_CONTAINER_W&lt;/A&gt; in the platform SDK) then just crafting the search by hand.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Anyway, I was feeling particularly lazy today so I went to take a quick look at MSDN and just use their sample. Much to my surprise the only examples I could find did this via ADSI and talked about “&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ad/ad/binding_to_well-known_objects_using_wkguid.asp"&gt;binding to well-known objects using WKGUID&lt;/A&gt;.” (I’ve &lt;I style="mso-bidi-font-style: normal"&gt;NEVER&lt;/I&gt; been a fan of the use of terms there…I don’t like how we say “binding to an object” in ADSI as that is a somewhat unnatural construct given what’s really going on under the hood. Further, it makes moving to wldap32/S.DS.P/etc. harder as the terms are different. If only I ruled the world.....) Given this, I figured I’d paste some sample code here.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;First, the LDAP work itself. To do a search for L&amp;amp;F, you want to craft a search as follows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Base DN: &amp;lt;WKGUID=&lt;I style="mso-bidi-font-style: normal"&gt;GUID_LOSTANDFOUND_CONTAINER_W&lt;/I&gt;,dc=someNC,dc=com&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Search filter: (objectclass=*)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Search scope: Base&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;To dissect that baseDN some…..WKGUID means “well known GUID”, instead of the string I pasted in italics (GUID_LOSTANDFOUND_CONTAINER_W) you would of course want to actually use the GUID there, and then after the comma you put the DN of the naming context you wish to search (for example, dc=mydomain,dc=com).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;So here’s a quick and dirty piece of C# written against System.DirectoryServices.Protocols APIs that would get this DN for you. Please note that this is sample code so you really want to robustify it some before actually putting this in an application, and clean up the little foreach I have there just because I’m being lazy. ;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;string lAndFBaseDN = String.Format("&amp;lt;WKGUID={0},{1}&amp;gt;", GlobalVars.GUID_LOSTANDFOUND_CONTAINER_W, myNCDN);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;string[] attrList = {"dn"};&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;string searchFilter = “(objectclass=*)”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SearchRequest sr = new SearchRequest(lAndFBaseDN,searchFilter,SearchScope.Base,attrList);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SearchResponse searchResponse = (SearchResponse)myLdapConnection.SendRequest(sr);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if (searchResponse.Entries.Count == 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Must be no l&amp;amp;f container in the target dn (like, target not an NC for example)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Debug.Assert(searchResponse.Entries.Count == 1, "More than one L&amp;amp;F container found. This is weird.");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// If there is more than one, we just return the first. But there should not be.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;foreach (SearchResultEntry sre in searchResponse.Entries)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;return sre.DistinguishedName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I think it goes w/o saying but you can apply similar logic to other well&amp;nbsp;known GUIDs. I just picked l&amp;amp;f as it was convenient. ;)&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=480075" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category></item><item><title>Garbage collection &amp; TSL warnings...why now?</title><link>http://blogs.technet.com/efleis/archive/2006/10/19/garbage-collection-tsl-warnings-why-now.aspx</link><pubDate>Thu, 19 Oct 2006 23:17:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:473098</guid><dc:creator>efleis</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/efleis/comments/473098.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=473098</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I was recently pinged by a friend who is rolling out LH in their production environment. They were having an interesting issue where the LH DC showed these two events, in this order:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;(event log entries snipped some for brevity)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Log Name:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Directory Service&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Source:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;NTDS General&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Event ID:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;1859&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Task Category: Garbage Collection&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Level:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Warning&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;User:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ANONYMOUS LOGON&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Description:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Internal event: The current garbage collection interval is larger than the maximum value. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Current garbage collection interval (hours):&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;40000 &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Maximum value:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;168 &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;New value:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;168 &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Log Name:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Directory Service&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Source:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;NTDS General&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Event ID:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;1088&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Task Category: Internal Configuration&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Level:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Warning&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;User:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ANONYMOUS LOGON&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Description:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Internal event: The following tombstone lifetime registry value is too low or incompatible with the following garbage collection interval specified in the Active Directory Domain Services Configuration object. As a result, the following default registry values for the tombstone lifetime and garbage collection will be used. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;This is an old domain which has been around for years. The win2k3 boxes are chugging along without a problem…only the LH boxes were throwing this event. So, the question is, what’s going on?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I took a peak at this for this friend and came up with the following. Thought I’d share it in case others see this too.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;First event, the GC one. Well, the event told you the problem. &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings"&gt;J&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt; The GC interval is set to 40000 hours. That’s roughly “a long time.” GC interval is huge, we didn’t like it. We enforce in the product that GC is no greater than a week, in hours. So we went ahead and, in memory, set this to a week.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;NOTE&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;: We do not change the setting in the DS, we simply ignore it and use our own. So the setting stays wrong in AD.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Next event, the TSL event. This is the more interesting event. Well, we check a few things here. First, we make your TSL is greater than the min….check, this customer had a value which was ok (I forget, but it was somewhere in the teens). Next we check if the TSL is greater than 3 times the GC interval. You failed. Your GC interval is now 7 days (remember before I said it would set it to a week as your GC interval was nonsensically huge) but your TSL is not 3 times that. So we freak and show you the event. We further set TSL to the default in code, which is 60 days. Again, no config change, just in memory change.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Last item…why now? What changed? Why did this customer not get this before on 2k3? No values changed, after all.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;This code is largely identical except for a small change. In 2k3 the code for this event firing code throws the event if GC logging is set to 2 or above. In LH, it fires the event if logging is set to 0 or above. Since all of the customer’s machines were set to 0, this explains why 2k3 didn’t throw an event whereas LH did.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;(Personally, I’m happy about this change…I think we should have always flagged this condition. It’s weird, we should have always drawn your attention to it.)&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=473098" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category></item><item><title>Large AD database? Probably not this large...</title><link>http://blogs.technet.com/efleis/archive/2006/06/08/434255.aspx</link><pubDate>Fri, 09 Jun 2006 01:32:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:434255</guid><dc:creator>efleis</dc:creator><slash:comments>19</slash:comments><comments>http://blogs.technet.com/efleis/comments/434255.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=434255</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Over the last few months there have been a series of threads in regard to max &amp;lt;fill in the item here...there have been many&amp;gt; in a database. These items have ranged from database size to # of objects and other such things. I figured, after the latest thread over on activedir.og, I'd do a little testing and put some numbers behind it so we could say "we have done this" and not "the system should do this."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;What should this testing accomplish?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;First, raw DB size. Gotta create a big DB or it probably doesn't matter.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Next, # of objects. For my testing, this was the real metric I was interested in. As mentioned over on &lt;A href="http://www.activedir.org/"&gt;ActiveDir&lt;/A&gt; (I would provide a link to the thread but I can’t seem to get the mail archives to work right now…I’ll try and provide one later), there is a theoretical max # of objects in the lifetime of a database which is, all said and done, 2^31 objects. I wanted to shoot for this. After all, Dean asked what error you would get, and I didn’t know. :)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I wrote a tool which started banging against an &lt;A href="http://www.microsoft.com/adam/"&gt;ADAM&lt;/A&gt; SP1 x64 instance. It was creating pretty small objects as I wanted reduce the amt of time this test took. My objects looked like this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dn: cn=leafcontX,cn=parentcontY,cn=objectsZ,ou=objdata&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;changetype: add&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;objectclass: container&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;(Of course, sub in values for X, Y and Z as appropriate)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I had it use anywhere from 16 to 40 threads for this work depending upon the phase of import, and I simply wrapped around ldifde for it….I figured, there is a well tested tool for this, why not let it do most of the hard work?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Next, I got my hands on a test box (thx &lt;A href="http://blogs.technet.com/eec/"&gt;EEC&lt;/A&gt;!), put it on a SAN, installed ADAM, and away I went.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Along the way, we did a few other perf tests (looking at increased checkpoint depths and the like) so it added a bit of time to the import. However, after about a month, I had nearly filled my 2TB partition:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;06/08/2006&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;10:41 AM 2,196,927,299,584 adamntds.dit&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I created just shy of 2^31 objects. When I went to create that next object (done here by hand in LDP to illustrate the error)…&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;***Calling Add...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;ldap_add_s(ld, "cn=sample1,OU=ObjData", [1] attrs)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Error: Add: Operations Error. &amp;lt;1&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Server error: 000020EF: SvcErr: DSID-0208044C, problem 5012 (DIR_ERROR), data -1076&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;If you look up -1076, you’ll find it is JET_errOutOfAutoincrementValues (from esent98.h). Woo hoo! I ran out of DNTs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;With this DB in hand, it was time to find out what else works and what else does not…&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Promotion of a replica fails. This makes perfect sense….it tries to create a couple of objects in the config NC, and that fails.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Create of an NC fails. Again, to be expected, this task consumes DNTs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I ran esentutl /ms. It chugged for nearly 30 seconds, but worked perfectly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I also ran esentutl /k to make sure the DB did not have any physical corruption, but also to just see how long that took. :)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Other standard tasks (kicking off garbage collection, online defrag, restarting the service, etc.) all worked perfectly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-fareast-font-family: Arial"&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Search works like a champ. Sure it takes a good bit of I/O for most interesting searches, but that’s to be expected, of course.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;It is worth noting that anything which failed did so gracefully. There were no nastygrams in my event logs either.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;So for those of you who are worrying….you can sleep well at night now. We have tried rolling over DNT, and it works just fine.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;A fun stat…..from the esentutl /ms output:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Name&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Type&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ObjidFDP&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;PgnoFDP&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;PriExt&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Owned&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Available&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;==============================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&amp;lt;EFleis – snip to save some space&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;nc_guid_Index&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Idx&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;25&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;43&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;1-m&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;10870892&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;5&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;That owned number is in pages. That’s right, my NC_GUID index is 82.9GB…bigger than most databases. :)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;While there were no major issues, we (&lt;A href="http://blogs.msdn.com/brettsh"&gt;Brett&lt;/A&gt; was looking at this too) did hit a few bumps along the way, and Brett was kind enough to write a few ESE tools for me to help monitor how we were doing. I’ll outline all of these things over the next few days as I have time to write them up. I’ll also provide more clarity around specific of what we did and saw as we went along.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=434255" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category></item><item><title>"VGA"-like drivers for networking</title><link>http://blogs.technet.com/efleis/archive/2006/05/25/430223.aspx</link><pubDate>Thu, 25 May 2006 18:20:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:430223</guid><dc:creator>efleis</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/efleis/comments/430223.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=430223</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;One of the things that has always impressed me about keyboard, mouse and monitor support is that it just works. That is, you can plug in almost any keyboard, mouse and monitor, on basically any video card, and it there is some level of support provided by your OS/BIOS/etc. Independent of the OS. Independent of the generation of hardware.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;This makes perfect sense. Without at least two of these three (some might argue that the mouse is optional, but I would disagree when you consider non-advanced users), you can’t bootstrap the system. You need to see something in order to load a better video driver. This was a feature born out of necessity.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Times have changed. User expectations around their PC have changed. Networking is mainstream now, not just for corporations. The # of high speed internet connections in the home is growing. Many, many people have and use NICs on a daily basis.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;U&gt;My wish&lt;o:p&gt;&lt;/o:p&gt;&lt;/U&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I think we should have a similar, fallback mechanism to bootstrap NICs to get users online. In the absence of a driver, I should not be required to find a floppy disk (if my PC even has a floppy drive….my new one at home does not to my knowledge) or burn a CD on another machine to get a good driver. I should be able to get online with basic functionality on a basic connection. I further expect my cable modem / dsl / etc. to work in this configuration. I expect this much to work. Then we can let something like WU or downloads from the manufacturers website give us the better driver.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I don’t know anything about writing drivers, so I ask you, the universe. Why does this not exist?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=430223" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category></item><item><title>ADAMSync on pre-R2 systems</title><link>http://blogs.technet.com/efleis/archive/2005/11/20/adamsync-on-pre-r2-systems.aspx</link><pubDate>Mon, 21 Nov 2005 03:17:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:414849</guid><dc:creator>efleis</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.technet.com/efleis/comments/414849.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=414849</wfw:commentRss><description>&lt;P&gt;From the inbox.....&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;&amp;lt;quote&amp;gt;&lt;BR&gt;You say the requirements are Win2003R2 with the ADAM installed from the R2 CD.&lt;BR&gt;Will your guides work for us aswell? Running Win2003 SP1 in AD-environment and our developers are running standard Windows XP with the ADAM downloaded from MS download site?&lt;BR&gt;&amp;lt;/quote&amp;gt;&lt;/BLOCKQUOTE&gt;Good question! From a technical perspective, pointing ADAMSync at a pre-R2 ADAM is totally ok. And of course, syncing from an AD that has no DCs running R2 is a non-issue. We didn't take any dependency on anything in R2. That said, the following should be noted:&lt;BR&gt;1) To the best of my knowledge, pointing at a pre-R2 ADAM is not an explicitly tested scenario. So perhaps there is some issue lurking here we're not aware of. I would categorize this as "exceptionaly unlikely", but I guess you never know.&lt;BR&gt;2) There might be licensing ramafications to using ADAMSync if you don't use it on an R2 box. I'm not a licensing guy, nor do I play one on TV.&amp;nbsp;I would recommend asking a licensing person this question. 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=414849" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.technet.com/efleis/archive/tags/ADAMSync/default.aspx">ADAMSync</category></item><item><title>ADAMSync can also transform users in to proxy users</title><link>http://blogs.technet.com/efleis/archive/2005/09/23/adamsync-can-also-transform-users-in-to-proxy-users.aspx</link><pubDate>Fri, 23 Sep 2005 21:04:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:411473</guid><dc:creator>efleis</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/efleis/comments/411473.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=411473</wfw:commentRss><description>&lt;P&gt;Now that we have ADAMSync synchronizing our data over, we should probably investigate the most commonly asked for transformation: proxy user transformation.&lt;BR&gt;&lt;BR&gt;When we introduced proxy bind in ADAM RTM, customers seemed to really connect with the semantic. If anything, I’d argue we have customers overusing proxy bind! But that’s a conversation for another day.&lt;BR&gt;&lt;BR&gt;However, the introduction of proxy bind opened a bit of a management scenario that had not yet been seen. When you use proxy bind, you must first have created the objects to which you will proxy bind. That means one need create and maintain these new objects in the ADAM environment which correspond with the AD users. This seems like a natural scenario for ADAMSync.&lt;BR&gt;&lt;BR&gt;In RC0 we enabled what we typically call “user to userProxy transformation.” This transformation is simple….one can take users being synchronized and create proxy users out of them. These proxy users may be of the Microsoft defined proxy user class (called userProxy) which has shipped with ADAM since RTM, they could be of the new class we added to R2 to help with this (userProxyFull), or they could be some custom class you have implemented (any class defined with an aux class of msds-proxybind will have the proxy behavior). We allow you to tweak this in your configuration file.&lt;BR&gt;&lt;BR&gt;So let’s give it a try.&lt;BR&gt;Before doing anything, we need to get a class defined that leverages the proxy bind functionality. For the sake of simplicity I’ll use the one that ships with ADAM:&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;C:\WINDOWS\ADAM&amp;gt;ldifde -i -f MS-UserProxy.LDF -s localhost -t 50000 -c "cn=configuration,dc=x" #configurationNamingContext&lt;BR&gt;Connecting to "localhost"&lt;BR&gt;Logging in as current user using SSPI&lt;BR&gt;Importing directory from file "MS-UserProxy.LDF"&lt;BR&gt;Loading entries....&lt;BR&gt;3 entries modified successfully.&lt;BR&gt;&lt;BR&gt;The command has completed successfully&lt;/BLOCKQUOTE&gt;Time for ADAMSync itself….&lt;BR&gt;I’m going to go ahead and change the heart of the sync file as follows (things modified in red):&lt;BR&gt;
&lt;BLOCKQUOTE&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;BR&gt;&amp;lt;doc&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;lt;configuration&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;description&amp;gt;sample Adamsync configuration file&amp;lt;/description&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;security-mode&amp;gt;object&amp;lt;/security-mode&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;lt;source-ad-name&amp;gt;erictest.local&amp;lt;/source-ad-name&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;source-ad-partition&amp;gt;dc=erictest,dc=local&amp;lt;/source-ad-partition&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;source-ad-account&amp;gt;&amp;lt;/source-ad-account&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;lt;account-domain&amp;gt;&amp;lt;/account-domain&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;target-dn&amp;gt;ou=SyncTargetOU&amp;lt;/target-dn&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;query&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;base-dn&amp;gt;dc=erictest,dc=local&amp;lt;/base-dn&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;object-filter&amp;gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000&gt;(objectCategory=person)&lt;/FONT&gt;&amp;lt;/object-filter&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;attributes&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;FONT color=#ff0000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt;objectSID&amp;lt;/include&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt;sourceObjectGuid&amp;lt;/include&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt;lastAgedChange&amp;lt;/include&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/attributes&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;/query&amp;gt;&lt;BR&gt;&lt;FONT color=#ff0000&gt;&amp;nbsp; &amp;lt;user-proxy&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;source-object-class&amp;gt;user&amp;lt;/source-object-class&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target-object-class&amp;gt;userProxy&amp;lt;/target-object-class&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/user-proxy&amp;gt;&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;schedule&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;aging&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;frequency&amp;gt;0&amp;lt;/frequency&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;num-objects&amp;gt;0&amp;lt;/num-objects&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/aging&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;schtasks-cmd&amp;gt;&amp;lt;/schtasks-cmd&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;/schedule&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;lt;/configuration&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;lt;synchronizer-state&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;dirsync-cookie&amp;gt;&amp;lt;/dirsync-cookie&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;status&amp;gt;&amp;lt;/status&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;authoritative-adam-instance&amp;gt;&amp;lt;/authoritative-adam-instance&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;configuration-file-guid&amp;gt;&amp;lt;/configuration-file-guid&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;last-sync-attempt-time&amp;gt;&amp;lt;/last-sync-attempt-time&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;last-sync-success-time&amp;gt;&amp;lt;/last-sync-success-time&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;last-sync-error-time&amp;gt;&amp;lt;/last-sync-error-time&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;last-sync-error-string&amp;gt;&amp;lt;/last-sync-error-string&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;consecutive-sync-failures&amp;gt;&amp;lt;/consecutive-sync-failures&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;user-credentials&amp;gt;&amp;lt;/user-credentials&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;runs-since-last-object-update&amp;gt;&amp;lt;/runs-since-last-object-update&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;runs-since-last-full-sync&amp;gt;&amp;lt;/runs-since-last-full-sync&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;lt;/synchronizer-state&amp;gt;&lt;BR&gt;&amp;lt;/doc&amp;gt;&lt;/BLOCKQUOTE&gt;The new user-proxy section is what defines the transformation.&lt;BR&gt;One can transform….well, anything to anything! :) So long as you are going from some sort of security principal in the source to a proxy user in the target, it’ll fly right along. I’m using userProxy just to keep it simple. Note that I also included objectSid as proxy users require the SID to be specified. Finally, I changed my search filter to look for object with an objectCategory=person just to isolate exactly what I wish to import.&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;C:\WINDOWS\ADAM&amp;gt;adamsync /install localhost:50000 ADAMSyncDemo.XML&lt;BR&gt;Done.&lt;BR&gt;&lt;BR&gt;C:\WINDOWS\ADAM&amp;gt;adamsync /sync localhost:50000 "ou=synctargetou" /log –&lt;BR&gt;&lt;BR&gt;&lt;EM&gt;&amp;lt;chopped for brevity&amp;gt;&lt;/EM&gt;&lt;BR&gt;&lt;BR&gt;Finished (successful) synchronization run.&lt;BR&gt;Number of entries processed via dirSync: 6&lt;BR&gt;Number of entries processed via ldap: 1&lt;BR&gt;Processing took 0 seconds (0, 1080131584).&lt;BR&gt;Number of object additions: 7&lt;BR&gt;Number of object modifications: 0&lt;BR&gt;Number of object deletions: 0&lt;BR&gt;Number of object renames: 0&lt;BR&gt;Number of references processed / dropped: 0, 0&lt;BR&gt;Maximum number of attributes seen on a single object: 5&lt;BR&gt;Maximum number of values retrieved via range syntax: 0&lt;BR&gt;&lt;BR&gt;&lt;/BLOCKQUOTE&gt;And sure enough, when I go to look for some of the users I know should be there…..&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;&amp;gt;&amp;gt; Dn: CN=Administrator,CN=Users,OU=SyncTargetOU&lt;BR&gt;&amp;nbsp;3&amp;gt; objectClass: top; syncEngineAuxObject; &lt;FONT color=#ff0000&gt;userProxy&lt;/FONT&gt;; &lt;BR&gt;&amp;nbsp;1&amp;gt; cn: Administrator; &lt;BR&gt;&amp;nbsp;1&amp;gt; distinguishedName: CN=Administrator,CN=Users,OU=SyncTargetOU; &lt;BR&gt;&amp;nbsp;1&amp;gt; instanceType: 0x4 = ( IT_WRITE ); &lt;BR&gt;&amp;nbsp;1&amp;gt; whenCreated: 09/23/2005 10:59:13 Pacific Standard Time Pacific Daylight Time; &lt;BR&gt;&amp;nbsp;1&amp;gt; whenChanged: 09/23/2005 10:59:13 Pacific Standard Time Pacific Daylight Time; &lt;BR&gt;&amp;nbsp;1&amp;gt; uSNCreated: 23644; &lt;BR&gt;&amp;nbsp;1&amp;gt; uSNChanged: 23644; &lt;BR&gt;&amp;nbsp;1&amp;gt; showInAdvancedViewOnly: TRUE; &lt;BR&gt;&amp;nbsp;1&amp;gt; name: Administrator; &lt;BR&gt;&amp;nbsp;1&amp;gt; objectGUID: 613813f4-f8cf-44ba-887b-aae4cb128580; &lt;BR&gt;&amp;nbsp;1&amp;gt; objectSid: S-1-5-21-980059532-776183279-2334900600-500; &lt;BR&gt;&amp;nbsp;1&amp;gt; objectCategory: CN=User-Proxy,CN=Schema,CN=Configuration,CN={B57A6E49-957D-434C-8584-9AA3D3946EF0}; &lt;BR&gt;&amp;nbsp;1&amp;gt; sourceObjectGuid: P upy?B$6 ; &lt;BR&gt;&amp;nbsp;1&amp;gt; lastAgedChange: 20050923175913.0Z;&lt;/BLOCKQUOTE&gt;One of the most commonly made mistakes is forgetting to include objectSID so please do include it! If you don't, you'll get the missing attribute error we have seen before.&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=411473" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.technet.com/efleis/archive/tags/ADAMSync/default.aspx">ADAMSync</category></item><item><title>Synchronizing only the attributes you really want</title><link>http://blogs.technet.com/efleis/archive/2005/09/15/synchronizing-only-the-attributes-you-really-want.aspx</link><pubDate>Thu, 15 Sep 2005 19:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:410925</guid><dc:creator>efleis</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/efleis/comments/410925.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=410925</wfw:commentRss><description>&lt;P&gt;In our previous ADAMSync runs we synchronized all attributes except those in the &amp;lt;exclude&amp;gt; tags. This is probably ok for our tinkering, but in a real scenario, you might want to consider picking those you want instead of getting everything but those you say not to.&lt;BR&gt;&lt;BR&gt;Why? Well, consider the costs. If you synchronize everything, you’re paying the costs for all of those attributes (cost for lookup in AD, shipping them over the wire, writing them in to ADAM, storage in ADAM, etc.). If you only synchronize what you need you save on those costs while still servicing what you need in your application. And of course, you can always change your mind later. :)&lt;BR&gt;&lt;BR&gt;The one tricky thing about this operation is picking the attributes you need. Consider that for some set of classes you’re creating, there is a minimum set of attributes that each class will require in order to be created properly. Should you miss some of them, you will get errors such as this one:&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;Processing Entry: Page 2, Frame 1, Entry 65, Count 1, USN 0&lt;BR&gt;Processing source entry &amp;lt;guid=09e91eb3653f004fb8f8350d6ef2d577&amp;gt;&lt;BR&gt;Processing in-scope entry 09e91eb3653f004fb8f8350d6ef2d577.&lt;BR&gt;Adding target object CN=Domain System Volume (SYSVOL share),CN=NTFRS Subscriptio&lt;BR&gt;ns,CN=EFLEIS-DF2,OU=Domain Controllers,ou=SyncTargetOU.&lt;BR&gt;Adding attributes: sourceobjectguid, objectClass, instanceType, lastagedchange,&lt;BR&gt;&lt;BR&gt;Ldap error occured. ldap_add_sW: Object Class Violation.&lt;BR&gt;Extended Info: 0000207C: UpdErr: DSID-0315116B, problem 6002 (OBJ_CLASS_VIOLATIO&lt;BR&gt;N), data 0&lt;/BLOCKQUOTE&gt;And 207C maps to:&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;C:\&amp;gt;err 207C&lt;BR&gt;# for hex 0x207c / decimal 8316 :&lt;BR&gt;&amp;nbsp; ERROR_DS_MISSING_REQUIRED_ATT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; winerror.h&lt;BR&gt;# A required attribute is missing.&lt;/BLOCKQUOTE&gt;So this can be tougher than it first appears. For my test environment (as mentioned previously, a fresh win2k3 forest), the following set of attributes was enough. But perhaps you will need more. If so, note the object that failed, and check out the attributes required on that object. Make sure you include all of them.&lt;BR&gt;&lt;BR&gt;With that having been said, let’s go ahead and trim our attribute set down a bit. I’ll go ahead and only retain a subset of the attributes.&lt;BR&gt;I’ll change this section:&lt;BR&gt;
&lt;BLOCKQUOTE&gt;&amp;lt;attributes&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt;&amp;lt;/include&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;extensionName&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;displayNamePrintable&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;flags&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;isPrivelegeHolder&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;msCom-UserLink&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;msCom-PartitionSetLink&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;reports&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;serviceprincipalname&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;accountExpires&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;adminCount&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;primarygroupid&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;userAccountControl&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;codePage&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;countryCode&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;logonhours&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;lockoutTime&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/attributes&amp;gt;&amp;nbsp; &lt;/BLOCKQUOTE&gt;To be:&lt;BR&gt;
&lt;BLOCKQUOTE&gt;&amp;nbsp;&amp;nbsp; &amp;lt;attributes&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt;description&amp;lt;/include&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt;frsstagingpath&amp;lt;/include&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt;fRSRootPath&amp;lt;/include&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt;sourceObjectGuid&amp;lt;/include&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt;lastAgedChange&amp;lt;/include&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/attributes&amp;gt;&lt;/BLOCKQUOTE&gt;Here’s where this list came from….&lt;BR&gt;I first just decided I wanted object descriptions.&lt;BR&gt;Then, I gave it a run. It complained with the error previously discussed. So I went to the class definition for the object and included the list of must contain attributes.&lt;BR&gt;The last two attributes (sourceobjectguid and lastagedchange) are ADAMSync attributes themselves. These are used for internal tracking. So I went ahead and included them.&lt;BR&gt;&lt;BR&gt;And with a little luck, it’ll work out just as well for you as it did for me.&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;Finished (successful) synchronization run.&lt;BR&gt;Number of entries processed via dirSync: 169&lt;BR&gt;Number of entries processed via ldap: 3&lt;BR&gt;Processing took 10 seconds (0, 1085404416).&lt;BR&gt;Number of object additions: 168&lt;BR&gt;Number of object modifications: 4&lt;BR&gt;Number of object deletions: 0&lt;BR&gt;Number of object renames: 3&lt;BR&gt;Number of references processed / dropped: 0, 0&lt;BR&gt;Maximum number of attributes seen on a single object: 6&lt;BR&gt;Maximum number of values retrieved via range syntax: 0&lt;BR&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=410925" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.technet.com/efleis/archive/tags/ADAMSync/default.aspx">ADAMSync</category></item><item><title>Syncing to our OU=SyncTargetOU NC instead</title><link>http://blogs.technet.com/efleis/archive/2005/09/14/syncing-to-our-ou-synctargetou-nc-instead.aspx</link><pubDate>Wed, 14 Sep 2005 19:56:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:410817</guid><dc:creator>efleis</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.technet.com/efleis/comments/410817.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=410817</wfw:commentRss><description>&lt;P&gt;Earlier in this series of posts I changed our sync target from form “OU=” to “DC=”. This was done to carefully skirt around a small issue. Now with our new found knowledge of logging in ADAMSync, let’s give it another try.&lt;BR&gt;&lt;BR&gt;So let’s go ahead in to our previous config file and change this line:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target-dn&amp;gt;dc=SyncTargetDC&amp;lt;/target-dn&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;To read:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target-dn&amp;gt;ou=SyncTargetOU&amp;lt;/target-dn&amp;gt;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;Of course, this hopefully means you have created one such NC in your ADAM environment.&lt;BR&gt;From there, I went ahead and installed and ran my config:&lt;BR&gt;
&lt;BLOCKQUOTE&gt;C:\WINDOWS\ADAM&amp;gt;adamsync /install localhost:50000 ADAMSyncDemo.XML&lt;BR&gt;Done.&lt;BR&gt;&lt;BR&gt;C:\WINDOWS\ADAM&amp;gt;adamsync /sync localhost:50000 ou=synctargetou /log OULog1.txt&lt;/BLOCKQUOTE&gt;And when I cracked open the log, there were all sorts of errors.&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;Processing Entry: Page 2, Frame 1, Entry 22, Count 1, USN 0 Processing source entry &amp;lt;guid=ba50fb2e1bdd53468913b5d023460185&amp;gt; Processing in-scope entry ba50fb2e1bdd53468913b5d023460185. Adding target object CN=Builtin,ou=SyncTargetOU. Adding attributes: sourceobjectguid, objectClass, instanceType, showInAdvancedViewOnly, creationTime, forceLogoff, lockoutDuration, lockOutObservationWindow, lockoutThreshold, maxPwdAge, minPwdAge, minPwdLength, modifiedCountAtLastProm, nextRid, pwdProperties, pwdHistoryLength, uASCompat, lastagedchange,&amp;nbsp; Ldap error occured. ldap_add_sW: Naming Violation.&amp;nbsp; Extended Info: 00002099: NameErr: DSID-03050F78, problem 2005 (NAMING_VIOLATION), data 0, best match of:&lt;BR&gt;&amp;nbsp;'ou=SyncTargetOU'&lt;BR&gt;. Ldap error occured. ldap_add_sW: Naming Violation.&amp;nbsp; Extended Info: 00002099: NameErr: DSID-03050F78, problem 2005 (NAMING_VIOLATION), data 0, best match of:&lt;BR&gt;&amp;nbsp;'ou=SyncTargetOU'&lt;BR&gt;.&lt;/BLOCKQUOTE&gt;First, notice that ADAMSync gives you all of the error text that ADAM returned to it. This is critical data.&lt;BR&gt;So the question is, why did we fail?&lt;BR&gt;Looking at the error in more detail:&lt;BR&gt;Extended Info: 00002099: NameErr: DSID-03050F78, problem 2005 (NAMING_VIOLATION), data 0, best match of:&lt;BR&gt;&lt;BR&gt;The most interesting piece of data here is the 2099, which maps to: 
&lt;BLOCKQUOTE&gt;&lt;BR&gt;C:\&amp;gt;err 2099&lt;BR&gt;# for hex 0x2099 / decimal 8345 :&lt;BR&gt;&amp;nbsp; ERROR_DS_ILLEGAL_SUPERIOR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; winerror.h&lt;BR&gt;# The object cannot be added because the parent is not on the&lt;BR&gt;# list of possible superiors.&lt;/BLOCKQUOTE&gt;And that’s the problem.&lt;BR&gt;This entry was an attempt to create the object CN=Builtin under the parent object of OU=SyncTargetOU. This makes sense, we asked it to go in to OU=SyncTargetOU.&lt;BR&gt;CN=Builtin is an object with an objectClass of builtinDomain:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;gt; Dn: CN=Builtin,DC=erictest,DC=local&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;gt; objectClass: top; builtinDomain;&lt;BR&gt;OU=SyncTargetOU is an OrganizationalUnit (specified when we created the NC in dsmgmt). We need to make it such that OrganizationalUnit is a possSuperior of builtinDomain. More info on possSuperiors can be found &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ad/ad/characteristics_of_object_classes.asp" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ad/ad/characteristics_of_object_classes.asp"&gt;here&lt;/A&gt;.&lt;BR&gt;&lt;BR&gt;So anyway, after making that change, I ran sync again…..&lt;BR&gt;
&lt;BLOCKQUOTE&gt;Finished (successful) synchronization run. &lt;BR&gt;Number of entries processed via dirSync: 168 &lt;BR&gt;Number of entries processed via ldap: 2 &lt;BR&gt;Processing took 13 seconds (0, 1085446656). &lt;BR&gt;Number of object additions: 52 &lt;BR&gt;Number of object modifications: 118 &lt;BR&gt;Number of object deletions: 0 &lt;BR&gt;Number of object renames: 112 &lt;BR&gt;Number of references processed / dropped: 58, 7 &lt;BR&gt;Maximum number of attributes seen on a single object: 18 &lt;BR&gt;Maximum number of values retrieved via range syntax: 0 &lt;/BLOCKQUOTE&gt;As we said earlier, most ADAMSync failures are schema problems. :)&lt;BR&gt;&lt;BR&gt;Update: Corrected a small typo in my before target DN. Thanks!&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=410817" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.technet.com/efleis/archive/tags/ADAMSync/default.aspx">ADAMSync</category></item><item><title>Getting a log from ADAMSync</title><link>http://blogs.technet.com/efleis/archive/2005/09/10/getting-a-log-from-adamsync.aspx</link><pubDate>Sat, 10 Sep 2005 23:15:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:410563</guid><dc:creator>efleis</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/efleis/comments/410563.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=410563</wfw:commentRss><description>&lt;P&gt;Over the course of the next few posts we’re going to start modifying all sorts of things in the configuration. Depending upon the particulars of your environment this might or might not pan out. :) As such, we should probably take a quick look at the logging available before we break anything too badly.&lt;BR&gt;&lt;BR&gt;When you run ADAMSync there’s a switch to give you enhanced logging:&lt;BR&gt;&amp;nbsp; /log [log file]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Log messages, use "-" option to log to screen&lt;BR&gt;&lt;BR&gt;I’m typically a fan of using a filename rather than – as the logs tend to get quite large.&lt;BR&gt;&lt;BR&gt;From our run yesterday, here’s some of the output of the log (snipped for brevity):&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;Adamsync.exe v1.0 (5.2.3790.2021) Establishing connection to target server localhost:50000. Saving Configuration File on DC=SyncTargetDC Saved configuration file. ADAMSync is querying for a writeable replica of erictest.local. Establishing connection to source server efleis-df2.erictest.local:389. Using file .\damF.tmp as a store for deferred dn-references. Populating the schema cache Populating the well known objects cache Starting synchronization run from dc=erictest,dc=local. Starting DirSync Search with object mode security. &lt;BR&gt;&lt;BR&gt;&lt;EM&gt;&amp;lt;snip&amp;gt;&lt;/EM&gt;&lt;BR&gt;&lt;BR&gt;Processing Entry: Page 1, Frame 1, Entry 4, Count 1, USN 0 Processing source entry &amp;lt;guid=51b2fc571aa27c4e9a488e7b79d1d5e1&amp;gt; Processing in-scope entry 51b2fc571aa27c4e9a488e7b79d1d5e1. Adding target object CN=Users,dc=SyncTargetDC. Adding attributes: sourceobjectguid, objectClass, description, instanceType, showInAdvancedViewOnly, lastagedchange,&amp;nbsp; Previous entry took 0 seconds (31, 31) to process&lt;BR&gt;&lt;BR&gt;&lt;EM&gt;&amp;lt;snip&amp;gt;&lt;/EM&gt;&lt;BR&gt;&lt;BR&gt;Beginning processing of deferred dn references. Processing deferred modifications for 53d9609b8ee6014c947f57d3fc850aab:ipsecISAKMPReference. + Synchronizing dn-ref to 39b749b601b1f547a2a76a97e5beb0f2.&lt;BR&gt;&lt;BR&gt;&lt;EM&gt;&amp;lt;snip&amp;gt;&lt;/EM&gt;&lt;BR&gt;&lt;BR&gt;Finished processing of deferred dn references. &lt;BR&gt;Finished (successful) synchronization run. &lt;BR&gt;Number of entries processed via dirSync: 169 &lt;BR&gt;Number of entries processed via ldap: 3 &lt;BR&gt;Processing took 7 seconds (0, 1082877952). &lt;BR&gt;Number of object additions: 168 &lt;BR&gt;Number of object modifications: 4 &lt;BR&gt;Number of object deletions: 0 &lt;BR&gt;Number of object renames: 3 &lt;BR&gt;Number of references processed / dropped: 58, 7 &lt;BR&gt;Maximum number of attributes seen on a single object: 18 &lt;BR&gt;Maximum number of values retrieved via range syntax: 0 &lt;BR&gt;Beginning aging run. Aging requested every 0 runs. We last aged 1 runs ago. Saving Configuration File on DC=SyncTargetDC Saved configuration file.&lt;/BLOCKQUOTE&gt;Alright, so time to slice it up some. This post would go on forever if I sliced it up too much, so I’ll point out some of the highlights.&lt;BR&gt;&lt;BR&gt;Of course, we start off with just a bit of overview of what we’re about to do. Version of the tool, host we’re talking to, etc. Nothing out of the ordinary. :)&lt;BR&gt;&lt;BR&gt;Next up, object sync. We will have an entry for objects synchronized. Note the GUID that is listed. While this might not look like the sort of GUID you’re used to, it is actually the GUID of the object in the source NC. There are two potentially confusing things about what I just said, so I’d like to call them both out so we’re all on the same page, else things will only get worse from here :):&lt;BR&gt;1) It is the GUID despite looking like it is wrong. Note the form:&lt;BR&gt;51b2fc571aa27c4e9a488e7b79d1d5e1&lt;BR&gt;The GUID of that object when all prettied up is:&lt;BR&gt;57fcb251-a21a-4e7c-9a48-8e7b79d1d5e1&lt;BR&gt;Here’s the magic to the conversion. Let’s look at just the first section:&lt;BR&gt;57fcb251 vs. 51b2fc57&lt;BR&gt;See the pattern yet? Let’s color it in:&lt;BR&gt;57&lt;FONT color=#ff1493&gt;fc&lt;/FONT&gt;&lt;FONT color=#008000&gt;b2&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;51&lt;/FONT&gt; vs. &lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000&gt;51&lt;/FONT&gt;&lt;FONT color=#008000&gt;b2&lt;/FONT&gt;&lt;FONT color=#ff1493&gt;fc&lt;/FONT&gt;57&lt;BR&gt;Yes, there’s some ordering going on. I won’t get in to why here, but that’s how we pretty up GUIDs before we display them. With that example I’m sure you can walk through the rest of it and figure out where it comes from.&lt;BR&gt;2) It is the GUID of the object in the source NC. One of the confusing things about synchronization is that we’re doing logical recreation of some data state in the target environment based upon what we see in the source environment. As a result, some properties aren’t the same. One such property is the GUID. The “copy” of the object in the target will have a different GUID, because all we’re really doing in ADAMSync is telling ADAM to create an object with the following logical properties (name, description, etc.)…namely those properties we care about (you get to pick the list)...and letting the stuff going on at the directory layer do it’s thing. So much like we didn’t tell AD the GUID of the object in the source, we don’t tell ADAM what the GUID should be in the target.&lt;BR&gt;The result of this subtle yet important distinction is that when thinking about tasks ADAMSync is doing it is exceptionally important to consider if the task is relative to the source or the target. Things get awfully confusing awfully fast if you don’t.&lt;BR&gt;&lt;BR&gt;We then get in to deferred dn references. ADAMSync processes things like link value attributes later such that all objects are already created when it is time to create the links. We can revisit this later in more detail if people are interested in the subtleties of what and how and why.&lt;BR&gt;&lt;BR&gt;And finally, closing statistics with a little note that we succeeded.&lt;BR&gt;Errors will be painstakingly obvious. We’ll probably start seeing some as we start modifying our config file in some crazy ways over the next few posts. I’ll try and include the common errors so you get a sense of what I think is likely that you’ll hit as well as my general methodology in approaching these sorts of errors. &lt;BR&gt;&lt;BR&gt;Update: Fixed some formatting issues I didn't notice before.&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=410563" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.technet.com/efleis/archive/tags/ADAMSync/default.aspx">ADAMSync</category></item><item><title>Configuring and running ADAMSync for the first time</title><link>http://blogs.technet.com/efleis/archive/2005/09/08/configuring-and-running-adamsync-for-the-first-time.aspx</link><pubDate>Fri, 09 Sep 2005 00:50:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:410477</guid><dc:creator>efleis</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/efleis/comments/410477.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=410477</wfw:commentRss><description>&lt;P&gt;So now that our ADAM schema is ready, we can go ahead and start configuring ADAMSync.&lt;BR&gt;&lt;BR&gt;We need to do three things to get ADAMSync running at this point:&lt;BR&gt;1)&amp;nbsp;Modify the XML file. The XML file is used as the configuration point for ADAMSync, so we’ll tweak this file to have the settings we desire.&lt;BR&gt;2)&amp;nbsp;Install the XML file in to ADAM.&lt;BR&gt;3)&amp;nbsp;Run ADAMSync to perform the synchronization itself.&lt;BR&gt;&lt;BR&gt;&lt;U&gt;Step 1: Modifying the XML file&lt;BR&gt;&lt;/U&gt;Let’s try and keep it simple to start. The easiest way to get off of the ground is just to pick the proper target, do the fewest modifications required and then run with it.&lt;BR&gt;&lt;BR&gt;ADAMSync ships with a sample XML file which has many of the commonly used tags. I typically work from this as my starting point.&lt;BR&gt;I started off by making a quick copy of the default ADAMSync config to use.&lt;BR&gt;
&lt;BLOCKQUOTE&gt;C:\WINDOWS\ADAM&amp;gt;copy MS-AdamSyncConf.XML ADAMSyncDemo.XML&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 file(s) copied.&lt;/BLOCKQUOTE&gt;Now with that in hand, we can start making some changes for our first run of the tool.&lt;BR&gt;&lt;BR&gt;To get things started, I’d suggest we first make the absolute bare minimum in terms of # of changes. We can explore different parts of the configuration file as we move forward, but it helps to first have a working configuration to work from.&lt;BR&gt;Here’s what my config file looks like (with section I modified from the default in red):&lt;BR&gt;
&lt;BLOCKQUOTE&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;BR&gt;&amp;lt;doc&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;lt;configuration&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;description&amp;gt;sample Adamsync configuration file&amp;lt;/description&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;security-mode&amp;gt;object&amp;lt;/security-mode&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;lt;source-ad-name&amp;gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000&gt;erictest.local&lt;/FONT&gt;&amp;lt;/source-ad-name&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;source-ad-partition&amp;gt;&lt;FONT color=#ff0000&gt;dc=erictest,dc=local&lt;/FONT&gt;&amp;lt;/source-ad-partition&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;source-ad-account&amp;gt;&amp;lt;/source-ad-account&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp; &amp;lt;account-domain&amp;gt;&amp;lt;/account-domain&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;target-dn&amp;gt;&lt;FONT color=#ff0000&gt;dc=SyncTargetDC&lt;/FONT&gt;&amp;lt;/target-dn&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;query&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;base-dn&amp;gt;&lt;FONT color=#ff0000&gt;dc=erictest,dc=local&lt;/FONT&gt;&amp;lt;/base-dn&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;object-filter&amp;gt;(objectClass=*)&amp;lt;/object-filter&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;attributes&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include&amp;gt;&amp;lt;/include&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;extensionName&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;displayNamePrintable&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;flags&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;isPrivelegeHolder&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;msCom-UserLink&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;msCom-PartitionSetLink&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;reports&amp;lt;/exclude&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;serviceprincipalname&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;accountExpires&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;adminCount&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;primarygroupid&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;userAccountControl&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;codePage&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;countryCode&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;logonhours&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude&amp;gt;lockoutTime&amp;lt;/exclude&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/attributes&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;/query&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;schedule&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;aging&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;frequency&amp;gt;0&amp;lt;/frequency&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;num-objects&amp;gt;0&amp;lt;/num-objects&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/aging&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;schtasks-cmd&amp;gt;&amp;lt;/schtasks-cmd&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;/schedule&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;lt;/configuration&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;lt;synchronizer-state&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;dirsync-cookie&amp;gt;&amp;lt;/dirsync-cookie&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;status&amp;gt;&amp;lt;/status&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;authoritative-adam-instance&amp;gt;&amp;lt;/authoritative-adam-instance&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;configuration-file-guid&amp;gt;&amp;lt;/configuration-file-guid&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;last-sync-attempt-time&amp;gt;&amp;lt;/last-sync-attempt-time&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;last-sync-success-time&amp;gt;&amp;lt;/last-sync-success-time&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;last-sync-error-time&amp;gt;&amp;lt;/last-sync-error-time&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;last-sync-error-string&amp;gt;&amp;lt;/last-sync-error-string&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;consecutive-sync-failures&amp;gt;&amp;lt;/consecutive-sync-failures&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;user-credentials&amp;gt;&amp;lt;/user-credentials&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;runs-since-last-object-update&amp;gt;&amp;lt;/runs-since-last-object-update&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp; &amp;lt;runs-since-last-full-sync&amp;gt;&amp;lt;/runs-since-last-full-sync&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;lt;/synchronizer-state&amp;gt;&lt;BR&gt;&amp;lt;/doc&amp;gt;&lt;/BLOCKQUOTE&gt;&lt;BR&gt;&lt;U&gt;Step 2: Installing the XML file&lt;/U&gt;&lt;BR&gt;With our XML file in hand, installing it in to the ADAM environment is a piece of cake.&lt;BR&gt;It’s worth noting that the configuration itself is stored in the target environment (ADAM), not in the source. So we’ll focus the install command against our ADAM environment.&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;C:\WINDOWS\ADAM&amp;gt;adamsync /install localhost:50000 ADAMSyncDemo.XML&lt;BR&gt;Done.&lt;/BLOCKQUOTE&gt;After installing it, I usually ask ADAMSync to list all of the configuration files once so that I can confirm it made it there.&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;C:\WINDOWS\ADAM&amp;gt;adamsync /list localhost:50000&lt;BR&gt;Listing configuration files:&lt;BR&gt;---------------------------&lt;BR&gt;|-&amp;gt; "OU=SyncTarget": sample Adamsync configuration file&lt;BR&gt;Done.&lt;/BLOCKQUOTE&gt;Looks good!&lt;BR&gt;&lt;BR&gt;&lt;U&gt;Step 3: Running ADAMSync for the first time&lt;/U&gt;&lt;BR&gt;Our first run….let’s see what happens!&lt;BR&gt;
&lt;BLOCKQUOTE&gt;C:\WINDOWS\ADAM&amp;gt;adamsync /sync localhost:50000 dc=synctargetdc&lt;BR&gt;&lt;BR&gt;C:\WINDOWS\ADAM&amp;gt;&lt;/BLOCKQUOTE&gt;ADAMSync just returned without error. This is the real measure of success. :) If there was a problem, we would have received some verbiage.&lt;BR&gt;At this point we should be able to look at the target NC and the data should be there.&lt;BR&gt;Did you get an error? If so, hang tight, tomorrow we’ll take a look at some of the logging available and look at one such log. 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=410477" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.technet.com/efleis/archive/tags/ADAMSync/default.aspx">ADAMSync</category></item><item><title>Gotta get the schema right first</title><link>http://blogs.technet.com/efleis/archive/2005/09/07/gotta-get-the-schema-right-first.aspx</link><pubDate>Thu, 08 Sep 2005 07:15:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:410434</guid><dc:creator>efleis</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.technet.com/efleis/comments/410434.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=410434</wfw:commentRss><description>Before trying to synchronize much of anything, we need to make sure the required schema elements are in place.&lt;BR&gt;NOTE: I would estimate that around a third of all questions I've received on ADAMSync came back to schema problems. It is critically important that the schema be configured properly.&lt;BR&gt;&lt;BR&gt;For ADAMSync to properly synchronize your data, there are really two things that need to exist in the target environment:&lt;BR&gt;1)&amp;nbsp;The ADAMSync schema extensions. ADAMSync itself has a series of schema elements which need to be present in the target ADAM environment. These schema elements are used for ADAMSync itself to track configuration information.&lt;BR&gt;2)&amp;nbsp;Whatever schema elements are needed for the data you would like to synchronize. Remember that ADAM, out of the box, has a schema which contains far fewer elements than that of AD. If you’re going to synchronize data from AD in to ADAM which uses schema extensions in AD which are not yet in ADAM, we need to get them in there.&lt;BR&gt;&lt;BR&gt;So let’s first prep our ADAM environment by importing the ADAMSync schema extensions.&lt;BR&gt;
&lt;BLOCKQUOTE&gt;C:\WINDOWS\ADAM&amp;gt;ldifde -i -f MS-AdamSyncMetadata.LDF -s localhost -t 50000 -c "cn=configuration,dc=x" #configurationNamingContext&lt;BR&gt;Connecting to "localhost"&lt;BR&gt;Logging in as current user using SSPI&lt;BR&gt;Importing directory from file "MS-AdamSyncMetadata.LDF"&lt;BR&gt;Loading entries..........&lt;BR&gt;9 entries modified successfully.&lt;BR&gt;&lt;BR&gt;The command has completed successfully&lt;/BLOCKQUOTE&gt;For the required elements for the objects themselves, that can often be quite a bit more tricky.&lt;BR&gt;The real issue is that synchronizing the schema from AD to ADAM is often a tougher task. We heard this loud and clear, and actually built a tool to help with this (included in ADAM as well….ADSchemaAnalyzer). So as to keep things simple, let’s just ignore that for now, and instead import one of the ldif files included with ADAM that has what we’ll need for this first demo. Later on we’ll revisit this and do a more targeted schema move when we look at ADSchemaAnalyzer in more depth (hopefully, after the ADAMSync posts are done, we’ll look at that next).&lt;BR&gt;&lt;BR&gt;
&lt;BLOCKQUOTE&gt;C:\WINDOWS\ADAM&amp;gt;ldifde -i -f MS-AdamSchemaW2K3.LDF -s localhost -t 50000 -c "cn=configuration,dc=x" #configurationNamingContext&lt;BR&gt;Connecting to "localhost"&lt;BR&gt;Logging in as current user using SSPI&lt;BR&gt;Importing directory from file "MS-AdamSchemaW2K3.LDF"&lt;BR&gt;Loading entries.................................................................&lt;BR&gt;.................................... ............................................&lt;BR&gt;................................................................ ................&lt;BR&gt;................................................................................&lt;BR&gt;........ ........................................................................&lt;BR&gt;.................................... ............................................&lt;BR&gt;................................................................ ................&lt;BR&gt;................................................................................&lt;BR&gt;........ ........................................................................&lt;BR&gt;.................................... ............................................&lt;BR&gt;................................................................ ................&lt;BR&gt;................................................................................&lt;BR&gt;........ .........................................................&lt;BR&gt;1009 entries modified successfully.&lt;BR&gt;&lt;BR&gt;The command has completed successfully&lt;/BLOCKQUOTE&gt;Now that our schema is ready, let’s go ahead and make sure that we have the proper NCs. Yesterday I mentioned off-hand that we’ll create one with a given name, but I’d like to just change that name slightly so skirt around some schema issues for now. Never fear, we’ll get back to a target NC of type OrganizationalUnit a bit later, as this is also a very common question.&lt;BR&gt;
&lt;BLOCKQUOTE&gt;C:\WINDOWS\ADAM&amp;gt;dsmgmt&lt;BR&gt;dsmgmt: partition management&lt;BR&gt;partition management: connections&lt;BR&gt;server connections: connect to server localhost:50000&lt;BR&gt;Binding to localhost:50000 ...&lt;BR&gt;Connected to localhost:50000 using credentials of locally logged on user.&lt;BR&gt;server connections: q&lt;BR&gt;partition management: list&lt;BR&gt;Note: Directory partition names with International/Unicode characters will only&lt;BR&gt;display correctly if appropriate fonts and language support are loaded&lt;BR&gt;Found 2 Naming Context(s)&lt;BR&gt;0 - CN=Configuration,CN={B57A6E49-957D-434C-8584-9AA3D3946EF0}&lt;BR&gt;1 - CN=Schema,CN=Configuration,CN={B57A6E49-957D-434C-8584-9AA3D3946EF0}&lt;/BLOCKQUOTE&gt;Ah, nothing but schema and configuration. This is because during the install, I didn’t actually specify any NCs that I’d like it to create. Let’s go ahead and create one so we have a place to synchronize our data in to:&lt;BR&gt;
&lt;BLOCKQUOTE&gt;partition management: create NC dc=SyncTargetDC DomainDNS NULL&lt;BR&gt;adding object dc=SyncTargetDC&lt;/BLOCKQUOTE&gt;Next stop, our first synchronization task. 
&lt;P&gt;Edit: Minor formatting nit&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=410434" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.technet.com/efleis/archive/tags/ADAMSync/default.aspx">ADAMSync</category></item><item><title>ADAMSync in R2 - a new sync option</title><link>http://blogs.technet.com/efleis/archive/2005/09/06/adamsync-in-r2-a-new-sync-option.aspx</link><pubDate>Tue, 06 Sep 2005 19:34:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:410346</guid><dc:creator>efleis</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/efleis/comments/410346.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=410346</wfw:commentRss><description>&lt;P&gt;Welcome &lt;A href="http://www.microsoft.com/windowsserver2003/R2/trial/default.mspx" mce_href="http://www.microsoft.com/windowsserver2003/R2/trial/default.mspx"&gt;R2 RC0&lt;/A&gt;! As you might have heard, it’s hit the streets. With R2 comes the latest version of &lt;A href="http://www.microsoft.com/adam" mce_href="http://www.microsoft.com/adam"&gt;ADAM&lt;/A&gt;.&lt;BR&gt;&lt;BR&gt;ADAM has been a &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=9688F8B9-1034-4EF6-A3E5-2A2A57B5C8E4&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=9688F8B9-1034-4EF6-A3E5-2A2A57B5C8E4&amp;amp;displaylang=en"&gt;download from Microsoft.com&lt;/A&gt; since 2003. Since that time, based in part on customer feedback, the decision was made to bundle ADAM in to the OS as an optional install. For those of us that work on ADAM, we like this idea a lot. :) No longer will we have to point customers at a separate download package. R2 is the first release where ADAM is bundled. One can install ADAM via Add/Remove Programs.&lt;BR&gt;&lt;BR&gt;In ADAM R2, we bundled a whole bunch of new features many of which are in the form of new tools. These are a direct result of customer feedback which we wanted to address. I’ll try and touch on many of them over the next few weeks. However, I think ADAMSync needs the first (and perhaps most) coverage because of what it is, what it does, and what you can do with it.&lt;BR&gt;&lt;BR&gt;So anyway, let’s get to it. What is ADAMSync?&lt;BR&gt;&lt;BR&gt;Since the release of ADAM, we’ve heard loud and clear that people wanted help in the synchronization space. We were told there was a strong desire for a “basic” one-way synchronization of data from AD in to ADAM. The ‘folks asking for this didn’t want complex implementation of business logic but rather just wanted data coalescing in to their ADAM environment with some configuration along the way.&lt;BR&gt;&lt;BR&gt;Enter ADAMSync. ADAMSync provides just that: simple data synchronization from AD in to ADAM naming context. There is not complex customization available but rather it’s a very basic “move the data from point A to point B” approach. The upside of this simplicity is that setting up ADAMSync is a much easier operation that takes far less time than other options out there today. To put a number behind it: I recently traveled to a customer site and while there set up ADAMSync with them in under half an hour.&lt;BR&gt;&lt;BR&gt;From a technical perspective, ADAMSync leverages &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ad/ad/polling_for_changes_using_the_dirsync_control.asp" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ad/ad/polling_for_changes_using_the_dirsync_control.asp"&gt;DirSync&lt;/A&gt; to get the heavy lifting done. For the initial sync of a data set, this means sourcing all of the specified data and writing it in to ADAM. Going forward, when you do periodic synchronization, the cost of this operation is small, which is really where DirSync shines.&lt;BR&gt;&lt;BR&gt;Over the next few posts I’ll take you through a tour of what ADAMSync can do, and how to set it up. Particular emphasis will be placed on how to set it up in a few different scenarios.&lt;BR&gt;&lt;BR&gt;In preparation for these next few posts, I’d suggest you set up a small test environment in which you can tinker with some of this. The test environment I’m using in writing these posts is:&lt;BR&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Windows Server 2003 SP1 RTM with R2 RC0 installed&lt;BR&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dcpromo’d in to a test domain. (Mine is erictest.local)&lt;BR&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADAM is installed with a single naming context having been created. (Mine is OU=SyncTarget)&lt;BR&gt;&lt;BR&gt;If all goes according to plan, the configuration done in these examples will be able to be done to your test environment without modification.&lt;BR&gt;&lt;BR&gt;And with that, we’re off!&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=410346" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.technet.com/efleis/archive/tags/ADAMSync/default.aspx">ADAMSync</category></item><item><title>AWE in WOW64 on x64</title><link>http://blogs.technet.com/efleis/archive/2005/07/22/408112.aspx</link><pubDate>Fri, 22 Jul 2005 20:06:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:408112</guid><dc:creator>efleis</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/efleis/comments/408112.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=408112</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Here in the EEC, was asked a good question the other day, thought I’d pass it along.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;So the scenario is that the engagement in question was to run SQL 2000 SP4 on a box running Win2k3 x64 Enterprise Edition. The server had a good chunk of RAM (I think 8GB, but it might have been 16GB). The question was, is &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/address_windowing_extensions.asp"&gt;AWE&lt;/A&gt; on the table in this scenario for SQL?&lt;BR&gt;&lt;BR&gt;I knew that AWE is not an option in &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/win64/win64/wow64_implementation_details.asp"&gt;WOW64&lt;/A&gt; on Itanium. I had bumped in to this before. But I had never been asked about WOW64 on x64. I did some digging in the docs (seems like something we’d document) and found that the docs talked about how it isn’t an option on Itanium, but didn’t explicitly call it out in the x64 section either way. &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/win64/win64/memory_management.asp"&gt;Here’s a sample&lt;/A&gt; of what I mean.&lt;BR&gt;&lt;BR&gt;So with that, I was unsure. I guessed that it would not be an option. Then I asked someone who would know.&lt;BR&gt;I guessed wrong.&lt;BR&gt;&lt;BR&gt;It turns out, AWE in WOW mode does in fact work on x64, unlike ia64. Why? Well I had to ask, and got what was a very logical explanation.&lt;BR&gt;&lt;BR&gt;It stems from the reason that it _doesn’t_ work on Itanium. X86 binaries use 4K pages. IA64 uses 8K pages. So we couldn’t make the transition work well (don’t ask me why, this is what I was told, and I believe the guy that told me &lt;SPAN style="FONT-FAMILY: Wingdings; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/SPAN&gt;&lt;/SPAN&gt;). However, x64 boxes use 4K pages, just like x86. So making AWE work in that condition wasn’t a problem.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=408112" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category></item><item><title>Another random AD change in SP1</title><link>http://blogs.technet.com/efleis/archive/2005/07/12/407648.aspx</link><pubDate>Wed, 13 Jul 2005 08:41:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:407648</guid><dc:creator>efleis</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.technet.com/efleis/comments/407648.aspx</comments><wfw:commentRss>http://blogs.technet.com/efleis/commentrss.aspx?PostID=407648</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The other day over on &lt;A href="http://www.activedir.org/"&gt;activedir&lt;/A&gt; it &lt;A href="http://www.mail-archive.com/activedir@mail.activedir.org/msg30737.html"&gt;was mentioned&lt;/A&gt; that in SP1 we added sidHistory to the list of attributes preserved on tombstones. I thought I’d mention this here, and provide some clarity around what actually changed, since there was some confusion around what we did and how we did it.&lt;BR&gt;&lt;BR&gt;In looking at tombstone reanimation, we realized that sidHistory is particularly tricky to restore. For a variety of reasons, we &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ad/ad/using_dsaddsidhistory.asp"&gt;enforce rules&lt;/A&gt; on the insertion of values in to sidHistory when using the proper APIs (like &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ad/ad/dsaddsidhistory.asp"&gt;DsAddSidHistory&lt;/A&gt;()). That said, restoring this attribute to a previous state can be non-trivial.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Therefore, it makes sense to preserve this one on tombstones, such that if you reanimate a tombstone you get it back like it was before.&lt;BR&gt;&lt;BR&gt;Normally when such changes are made, they are done in the schema. On each attribute definition, we have an attribute &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adschema/adschema/a_searchflags.asp"&gt;searchFlags&lt;/A&gt;, and within searchFlags there is a bit which tells the DS to preserve attributes on tombstones (0x8). So adding an element to this set of preserved attributes is as simple as flipping this bit.&lt;BR&gt;&lt;BR&gt;Now I said “normally” above, because in this case, we didn’t do this. In addition to looking at searchFlags, there is actually a second mechanism by which we decide what to preserve on tombstones. We maintain a hard-coded list in the DSA code itself.&amp;nbsp;I can’t authoritatively say why we did this (before my time) but I would speculate it is so that even a schema change which removes something we really need from this attribute set doesn’t cause us to enter a state which could be detrimental to the environment.&lt;BR&gt;&lt;BR&gt;So, in SP1, we added sidHistory to that list of always preserved attributes.&lt;BR&gt;&lt;BR&gt;Why did we add it to this list rather than changing searchFlags? Well, feedback has been that schema changes are painful, and that they slow adoption. Therefore, we clearly didn’t want to have a schema change associated with SP1. Further, this isolated the change to only SP1 DCs, which was desirable. You don’t have a forest wide change at one moment in time, but rather incrementally introduce this. While we don’t expect a problem (and haven’t seen one to date), it’s safer to always assume one is there and we just don’t know about it yet.&lt;BR&gt;&lt;BR&gt;What’s the downside of doing this vs. changing searchFlags? Well, in making this change in the code vs. searchFlags, this means that you could have an inconsistent experience if you have a mix of DCs, some with SP1 and some without. Namely, if you delete an object on an SP1 DC, it will preserve sidHistory. But if you delete it on a non-SP1 DC,&amp;nbsp;it won’t. We understand this isn’t ideal, but if you want to get this feature today w/o waiting for Longhorn and without making a schema change, this is the best we could do. :)&lt;BR&gt;&lt;BR&gt;(Edit: fixed weird font thing)&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=407648" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/efleis/archive/tags/Windows/default.aspx">Windows</category></item></channel></rss>