• Twitter

Visual Studio Tools for Office Hands-on Labs Released

Via [ Mart Muller ]
 

Microsoft has released two new downloadable hands-on labs for the Visual Studio 2005 Tools for Office to show how to create applications built around Microsoft Word and Microsoft Excel. The labs include creating action panes, accessing and storing data, and document interaction.

The Labs for Visual Studio 2005 Tools for Office for Word 2003 are:

  • Lab 1 – Creating Actions Panes in Word
  • Lab 2 – Using Controls in Word Documents
  • Lab 3 – Working with Data in Word Documents
  • Lab 4 – Caching Data in Word Documents

The Labs for Visual Studio 2005 Tools for Office for Excel 2003 are:

  • Lab 1 – Connecting Data and Controls in an Excel Workbook
  • Lab 2 – Using Controls in the Actions Pane
  • Lab 3 – Connecting Data in an Excel Workbook and Actions Pane

Download the Word 2003 Labs and the Excel 2003 Labs

 
 

SQL 2005 Service Broker

Stumbled today with this a very nice article "An Introduction to the Service Broker"  on SQLServerCentral explaining the Service Broker feature in MSSQL 2005, The idea of Service Broker is really useful in the scenarios where you need to execute your processes in asynchronously fashion.
 
Read it here

BizTalk Adapter for SharePoint Version 2

Via [Jan Tielendres]

This is good news! There is a new version of the BizTalk Adapter for SharePoint released on the GotDotNet Workspace. It seems that the adapter was launched at TechEd USA, you can view the web cast online over here (including a demo of the BizTalk 2006 Adapter). Here is my little summary:

Features of V2:

  • Side by side install with V1 (no upgrade scenario)
  • Exposes properties in Context (like originating folder etc.)
  • Security Credentials per Endpoint (also accessible through context properties!)
  • Binary file support (!)

BizTalk 2006 WSS Adapter:

  • Includes all features of V2
  • Integrated setup, configuration, and deployment experience
  • Support of Form library, View, and List
  • Integrated Office InfoPath experience

Free Active Directory Change pwd web part

Via [Patrick Tissghem]

Patrick pointed out Michael post which refering to a nice web part which allows the users to change their active directory password

to download the web part you need to register (the registration form is in germany)

 

 

Microsoft Fiddler PowerToy

"Slow web site" is a nightmare for any web developer who should pay attention for many factors may decrease the performance of the web site, today i stumbled on this nice tool which works as a proxy and gives you information about the http trafic which helps so much in analyizing the site performance.

This is the description of the tool as on its web site, also there is a wonderful article on MSDN taking about http performance using this tool

"Fiddler is a HTTP Debugging Proxy which logs all HTTP traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP Traffic, set breakpoints, and "fiddle" with incoming or outgoing data. Fiddler is designed to be much simpler than using NetMon or Achilles, and includes a simple but powerful JScript.NET event-based scripting subsystem."

New Sharepoint Home

Via [Stramit]

Find the new Microsoft Sharepoint home page
http://www.microsoft.com/sharepoint

 

IE Add-in for SharePoint Navigation

Via [Patrick Tisseghem]

Now this looks a very interesting little thing to download. The Dot Net Factory’s SharePoint Explorer is an Internet Explorer (IE) add-in for SharePoint navigation. SharePoint Explorer provides a friendly tree-based interface that allows users to quickly see accessible sites and perform common SharePoint tasks. Download it from their site.

Adding a renamed AD user or group problem

Thank you Mark Kruger for your post regarding adding renamed user or group from AD to sharepoint, in this post Mark shows us the solutions of a common problem many users might face.

"This one is too common not to post and the solution isnt always handy.  Many times in SharePoint you will come across a situation where you need to rename a user or change the Display Name.  The situation commonly occurs with a misspelling, someone gets married, or maybe just an organization group account that has to be renamed.  The standard process is to rename the group in AD and maybe access the User Information page within SharePoint to change the display name.  You’ll also want to do your profile import if you’re making use of AD profiles.

 

However, the common error is one where you try to add the user by their new username and SharePoint provides the following: ERROR User Not Found.  Now, chances are you are going a bit crazy at this point because you know the account exists in AD and you know you’ve checked the Manage Users page as well to make sure the previous account was deleted, etc. 

 

The solution is a hidden one which anyone that knows, went crazy trying to find it.  Buried within SharePoint Portal (and not apparently accessible by the SharePoint Portal 2003 Admin UI) is the Manage Site Collection Users page.  You have to manually connect to it so here’s the URL:

 

http://YourServerName/_layouts/103­3/siteusrs.aspx

 

Magically, you’ll scroll through the list and you may see all sorts of users and groups you thought you deleted.  Well here they are and here is where you have to remove them to truly remove the reference.  Now, you’ll be able to successfully add the user or group that has been renamed. "

Importing only a specific group into sharepoint profile database (via LDAP)

Via [Wayne Hall]

Quick Answer

This will help you if you already know LDAP and how to configure sharepoint’s profile import settings.

Create a custom connection source in profile import and specify the following in the User Filter field:

(&(objectCategory=Person)(objectClass=User)(memberOf=[distinguised name of the group]))

Overview

If your org is like ours,  you might have a *ton* of accounts in Active Directory, and less than half of them are active employees that need to have a profile in sharepoint.  Sometimes you might have a lot of service accounts, disabled accounts, test accounts, or you might like keeping accounts of old employees around because of legal or ease-of-restore needs.  Or maybe you’re just too busy to delete old accounts.  Or, um, maybe you’re lazy? 🙂

Either way, when you set up Sharepoint the first time and you do the import, you might realize… “whoa! we gotta lotta accounts!”  Then you realize that not only are you taking up space in sharepoint (really, not that much compared to everything else), but if ever you want to enumerate the list and display it somewhere, you’d have some heavy filtering to do.  Wouldn’t it be cleaner if just active employees had profiles in Sharepoint?  And what about CAL’s?  If you’re paying by the CAL, it might be easier to justify 500 CAL purchase even though you have 1500 accounts in A/D when you limit the profile database to 500 or 600.

So I recently started looking for a way to limit this in the profile import. In our organization, all active employees are a member of a specific corporate mailing list / security group. This group in A/D is a Universal Security group that’s mail-enabled, so we use it for granting reader rights on calendars, we use it as a filter for who gets imported into other corporate apps such as “Track-IT!” from Intuit, and I really wanted to use it to determine who to import into the portal profile database.  For this example. let’s call it “Corporate List“.

I saw a couple of posts here and there, but nothing solid or anything that could be construed as a how-to.  Here’s what I had found before tackling it with a consultant we had onsite (I hear he’s soon moving to mindsharpblogs, right Todd? 🙂 ).

http://www.sharepointwatch.com/top/ng/group~1/~1722~__Import-user-profile-from-Active-Directory-group/index.aspx
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/search_filter_syntax.asp
http://www.computerperformance.co.uk/Logon/LDAP_attributes_active_directory.htm

But none of them really answered the question.

So here it is.  First the background then the solution.

Background:

  1. You configure profile imports by going to Site Settings > Manage profile database > Configure profile import.
  2. By default, Sharepoint is smart enough to know your domain and can just select users from the one current domain.  This is good for most organizations, and it’s easy to do for quick out-of-the-box implementations.
  3. Behind the scenes, what sharepoint is doing is an LDAP query to the first domain controller it can find and specifies the following as a filter on the LDAP query:

         (&(objectCategory=Person)(objectClass=User))

  4. If you’ve not been exposed to LDAP yet, here’s your chance.  There’s a neat utility Microsoft makes called LDIFDE that lets you import and export content to and from Active Directory.  It can be dangerous if you use import mode (-i) without knowing what you’re doing. However, it can also shed light (like ADSIEdit, another dangerous tool in the hands of the foolhardy, but an amazingly useful tool to learn the innards) and be immensely helpful in troubleshooting)
  5. You can see what sharepoint is doing by running the following command (say, on a domain controller)

    C:\>  ldifde -f usersindomain.txt -r “(&(objectCategory=Person)(objectClass=User))“
    Connecting to "[domain controller].[domain]"
    Logging in as current user using SSPI
    Exporting directory to file usersindomain.txt
    Searching for entries…
    Writing out entries…………………………………………………….
    ……………………………………………………………………..
    ……………………………………………………………………..
    [snip] ………..
    792 entries exported
    The command has completed successfully

    This writes the results into a file called usersindomain.txt.

    You can also do some basic wildcarding — so for example let’s say I wanted just to get the records that had a CN (common name) that started with “Wayne“.  I would run:

    C:\>ldifde -f usersindomain.txt -r "(&(objectCategory=Person)(objectClass=User)(cn=Wayne*))
    Connecting to "[domain controller].[domain]"
    Logging in as current user using SSPI
    Exporting directory to file usersindomain.txt
    Searching for entries…
    Writing out entries..
    2 entries exported
    The command has completed successfully

    Never mind the fact that I just overwrote my file 🙂

    What you learn from this is that you can “AND“ together arguments.  In the first example, we’re saying “pull the objects that are in the “Person“ category AND give me only the ones that are in the “User“ class.“.  In the second example, we’re also specifying that CN needs to start with “Wayne“.

  6. If you take a look at the resulting file, you can start getting a headache, but after that passes, you get an idea of what’s in the directory.  What I care about, though, is… how do I specify group membership?  I mean, this file has a HUGE amount of information in it (some of it pretty cool, actually), but I just want to limit by group.
  7. So look in the resulting file and look for the group you care about.  It will have an entry like the following:

    memberOf:
     CN=Corporate List,OU=Administrative,OU=Distribution Lists,OU=Domain,DC=domain,DC=local

    This second line starting with CN is called the “Distinguished name“ of the group.  With this label, you should be able to uniquely identify this object.  You may also notice that there’s an entry for every group that the user is a member of.  What’s neat about this is that Active Directory is attaching multiple properties to the object so that you don’t have to search through a list of groups and find a match for yours.  You can just say “if memberof equals this distinguished name, return it in the list“.

  8. So it stands to reason that we should be able to use this as one of our “AND“ statements in the LDIFDE test.  So we add it in there to find out:

    C:\>ldifde -f output2.ldf -r "(&(objectCategory=Person)(objectClass=User)(memberOf=CN=Corporate List,OU=Administrative,OU=Distribution Lists,OU=Domain,DC=domain,DC=local))
    Connecting to "[domain controller].[domain]"
    Logging in as current user using SSPI
    Exporting directory to file output2.ldf
    Searching for entries…
    Writing out entries…………………………………………………….
    ……………………………………………………………………..
    ……………………………………………………………………..
    …………………………………………..
    271 entries exported
    The command has completed successfully

    Cool.  Let’s say that number matches how many people should be in the list, and now we have a construct for importing just the right people into the portal.

  9. [optional] If you wanted to specify additional groups, you could use the OR clause, implemented by a PIPE ( | ) symbol.  However, be warned that LDAP prepends the operator to the arguments.  So if you’re used to perl or C or something that processes the operator BETWEEN arguments, you might get confused.

    Do you remember how we AND’ed arguments together by doing (&(argument1)(argument2)) ?  Well OR is the same way.  Here’s an example from above page

          (&(objectClass=user) | (cn=andy*)(cn=steve*)(cn=margaret*))

    gets all user entries with a common name that starts with andy, steve or margaret.  Notice the OR comes before the arguments.  If you wanted to select people of multiple groups… say you have three groups called “Corporate East,“ “Corporate West“ and “Corporate EMEA“, AND they’re all in different OU’s in your domain, AND you don’t have a group that houses all of those people, BUT you want to import them all….

    You can use the OR operator on the memberof property.  It would probably look something like this: 
    (I’ll try to show different colors to differentiate the clauses.  note that this is not tested, just my hand-typed estimate)

    (&(objectCategory=Person)(objectClass=User) | (memberOf=CN=Corporate East,OU=Administrative,OU=Distribution Lists,OU=East,DC=domain,DC=local)(memberOf=CN=Corporate West,OU=Administrative,OU=Distribution Lists,OU=West,DC=domain,DC=local)(memberOf=CN=Corporate EMEA,OU=Administrative,OU=Distribution Lists,OU=EMEA,DC=domain,DC=local))

Answer:

  1. Go to Site Settings > Manage profile database > Configure profile import.
  2. Select “Custom Source“.  This will let you create import connections
    1. By the way, this is also how you can configure to import from multiple domains in a forest without having to specify the entire forest
    2. Also, this is how you get the “Manage connections“ link on the Manage Profile Database screen
  3. It should ask you for the connection settings
  4. Fill in User Filter — For our purposes, we put in the parameter that we used in ldifde with the -r option (see Background above)

    Format:
    (&(objectCategory=Person)(objectClass=User)(memberOf=[distinguised name of the group]))

    Example:
    (&(objectCategory=Person)(objectClass=User)(memberOf=CN=Corporate List,OU=Administrative,OU=Distribution Lists,OU=Domain,DC=domain,DC=local))

  5. You could also modify Search base to specify an OU, but I haven’t tested that. 
  6. I didn’t change any other settings. My settings have
    1. Auto discover domain controller
    2. Port: 389
    3. Timeout: 120 seconds
    4. Scope: Subtree
    5. Page size: 10
    6. Page timeout: 120 seconds

Hope this helps!

OpenCanal Sharepoint tools

OpenCanal is a free source solutions for sharepoint, it includes many tools released by the community users, i was so happy to find mine listed (SP document mover) :),

download it here