GD Bloggers

This is the blog site for Microsoft Global Delivery Communities focused in sharing the technical knowledge about devices, apps and cloud.
Follow Us On Twitter! Subscribe To Our Blog! Contact Us

February, 2011

  • Cannot Check-out or edit documents in SharePoint 2010

    You may encounter an issue with SharePoint 2010 document libraries that prevents users from check-out or edit documents in the document library. The issue occurs when you break the security inheritance of the document library. Regardless of what permission the users have on the document library, they will not be able to check-out documents or edit them unless they have at least a "Read" Permission on the parent web. Here's how to reproduce this issue...

    • On SharePoint farm, create new web application and new site collection (In my case it was Publishing site)
    • Create any document library on that site
    • Break security inheritance on that document library.
    • Give a user (UserX for example) contribute permission on that document library, now the user X have appropriate permission to access that document library. After you do that, userX now has only "Limited Access" on the root web.

    Note: Once you break the inheritence of any item, list or document library, and you give the user certain permission on that object, SharePoint assigns that user automatically a "Limited Access" permission on the parent web to ensure navigability to that object.

    • From any client machine that has office 2010 installed. Login to the new web application using UserX. navigate to the document library. Try to check out the document. You fail. Try to edit the document, you fail as well.
    • On the server, grant this UserX a read permission on the web, try to perform the same activities like checkout and edit with userX, now you can.

    Diagnosing this issue shows that IE send a SOAP message to the SharePoint server, which internally generates "Access Denied" exception without returning any appropriate response to the caller. There is an IE Add-in named "OpenDocuments class" that generates the SOAP request and sends it back to SharePoint which causes the unexpected exception to be generated. Tests with different browsers may produce different results.

    This issue occurs only with Enterprise Wiki and Publishing templates of SharePoint Server 2010 and was not reproduced on other templates like "team site". We expect to see a fix in Service pack 1 or later for this issue.

     

  • Reading item attachments programmatically (SPFile.OpenBinary Exception)

    This is a small issue that I faced the other day and wasted several hours of my time. The scenario is rather simple. You have a list item and you already have an attachment to this item. What you want to do is to read this item attachment in a workflow or a web part using code.

    So you start off by writing the following code:

    SPFile spFile = Item.Web.GetFile(Item.Attachments.UrlPrefix + Item.Attachments[0]);

    byte[] binFile = spFile.OpenBinary();

    Simple right? well you will eventually get an SPException in the OpenBinary function call and it will report that it cannot open the file!!!

    So after several hours (and several cups of coffee) I was able to perform the needed functionality but by accessing the SPFile object using the folder collection and not the URL. This is how.

    SPFolder folder = Item.Web.Folders["Lists"].SubFolders[Item.List.Title].SubFolders["Attachments"].SubFolders[Item.ID.ToString()];

    SPFile spFile = folder.Files[Item.Attachments[0]];

    byte[] binFile = spFile.OpenBinary();

    BTW this happened on SharePoint 2010 and as far as I remember the old code used to work with no problems on SharePoint 2007.

  • Installing BizTalk 2006 R2 on a Windows 2008 R2 Server With .NET 4.0 installed

    Today I had for specific reasons to install the older BizTalk 2006 R2 on a Windows 2008 R2 server. Now although this leads to an unsupported scenario; it is still valid for development environments (as in the case I encountered). Another issue that complicated the problem is that this server already had Visual Studio 2010 with .NET framework 4.0 installed on it.

    I had already also installed SQL server 2008 on this server. So I started to follow the BizTalk 2009 installation guide. It went actually very smooth (to my surprise). The issues or notes I faced were as follows.

    1-    First the prerequisites file it downloaded was kind of strange for me. It downloaded a file called “BTSRedistVistaEn64.cab”. So this is a file that should be directed to Vista and not 2008 R2. But it was installed with no problems.

    2-    The MSDTC have to be configured as per the BizTalk 2009 guide to get it BizTalk to be configured properly. This is done as below image:
    clip_image001[4]

    3-    Since I also had SQL express installed on the same box I had to disable it to make sure it does not interfere with the configuration.

    4-    I installed VS 2005 with no noticeable issues.

    5-    I then installed BizTalk and had no issues there.

    6-    The main problem I faced was related to ENTSSO configuration. First I could not get it to start configuring it as it reported that the SSODB does not exist on the SQL server! So I am thinking; but I want to create it. Why does it need this DB although it will be created? After several hours of research I found the root cause. The problem was related to that the ENTSSO was using a wrong set of assemblies since its SQL communication COM+ component was registered using the REGASM utility of .NET4.0. The resolution was to re-register this assembly using the .NET 2.0 frameowork utility. To do so.

    a.     Open a command prompt.

    b.     Go to C:\Windows\Microsoft.NET\Framework64\v2.0.50727

    c.      regasm “C:\Program Files\Common Files\Enterprise Single Sign-On\win32\ssosql.dll”

    d.     regasm “C:\Program Files\Common Files\Enterprise Single Sign-On\ssosql.dll”

    7-    I also needed to disable the shared memory protocol on the SQL server.

    8-    For the BAM I was not yet able to get it to work or configured as it reported that the SSAS is not a supported version. I will do further investigation on how to configure BAM on this configuration.

  • SharePoint 2010 User Profile Service: Part 2 Developing the WCF service

    In this post I will start talking about using the UPS and how we can use that to connect to two sources of user profiles data. Please refer to the previous post on how to configure the UPS.

    The Scenario

    So lets first describe the scenario at hand. We have user profiles data residing in two sources, one is the Directory Service (AD for example), the other is any data source like SQL or Oracle DB. So we will use a custom Windows Communication Foundation Service to communicate with the custom data source.We will then use the SharePoint BCS to connect to this data source. The UPS will have to consider this new source of data while synchronizing the user profiles.

    The Steps

    I will list here all the steps we are going to implement along the way. Although these steps are going to be separated between several blogs.

    1. Configure the UPS correctly. This is already described in the previous post.
    2. Develop and deploy the WCF service. This will be described in this post.
    3. Connect to the WCF using BCS.
    4. Connect the UPS to the data sources.
    5. Add the new user profile properties and configure the link property.
    6. Start the user profile synchronization and create the synchronization schedule.
    7. Inspect the user profiles to make sure it  is correct.
    8. (Optional) Configure search source to allow people searching and configure people search center.

    In this post I will talk about the development and deployment of the WCF service. As an example I will develop a WCF service that connects to a SQL database but you can do the same to connect to any sort of data source including Oracle. Now this assumes that a table is created and populated with employee data. The table can be created using the following SQL query.

    USE [EmployeeDB]

    GO

     

    SET ANSI_NULLS ON

    GO

     

    SET QUOTED_IDENTIFIER ON

    GO

     

    CREATE TABLE [dbo].[Employees](

          [ID] [decimal](18, 0) NOT NULL,

          [Salary] [decimal](18, 0) NOT NULL,

          [FullName] [nvarchar](max) NOT NULL,

          [Degree] [nchar](10) NOT NULL,

          [MainDepartment] [nchar](50) NOT NULL,

          [SubDepartment] [nchar](50) NOT NULL,

     CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED

    (

          [ID] ASC

    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

    ) ON [PRIMARY]

     

    GO

    I will be using the ID as the linking property later between both user profiles sources.

    Create WCF Project

    Step 1: Left click on "File (menu item)" in "Microsoft Visual Studio (Administrator)"

    clip_image001[4]

     

    Step 2: Left click on "Project... (menu item)" in "&New"

    clip_image002[4]

     

    Step 3: Left click on "WCF Service Application (list item)" in "New Project"

    clip_image003[4]

     

    Step 4: Left click on "Name: (editable text)" in "New Project"

    clip_image004[4]

     

    Step 5: Keyboard input in "New Project" [Backspace Home ... Alt-Shift-Tab]

    clip_image005[4]

     

    Step 6: User left click on "OK (push button)" in "New Project"

    clip_image006

     
     

    Step 7: User left click on "IService1.cs (outline item)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image007

     
     

    Step 8: User keyboard input in "EmployeeWcfService - Microsoft Visual Studio (Administrator)" [F2]

    clip_image008

     
     

    Step 9: User keyboard input in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image009

     
     

    Step 10: User left click on "Yes (push button)" in "Microsoft Visual Studio"

    clip_image010

     
     

    Step 11: User left click on "Service1.svc (outline item)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image011

     
     

    Step 12: User keyboard input in "EmployeeWcfService - Microsoft Visual Studio (Administrator)" [F2]

    clip_image012

     
     

    Step 13: User keyboard input in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image013

     
     

    Step 14: User left click on "Character 26 (editable text)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image014

     
     

    Step 15: User keyboard input in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image015

     
     

    Step 16: User left double click on "Web.config (outline item)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image016

     
     

    Step 17: User keyboard input in "EmployeeWcfService - Microsoft Visual Studio (Administrator)" [... Ctrl-F]

    clip_image017

     
     

    Step 18: User keyboard input in "Find and Replace" [... Enter Esc]

    clip_image018

     
     

    Step 19: User keyboard input in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image019

     
     

    Step 20: User keyboard input in "Microsoft Visual Studio" [Enter]

    clip_image020

     
     

    Step 21: User keyboard input in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image021

     
     

    Step 22: User keyboard input in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image022

     

    Add Database Connection

    Step 1: User left click on "Server Explorer (menu item)" in "&View"

    clip_image001[6]

     
     

    Step 2: User left click on "Connect to Database... (push button)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image002[6]

     
     

    Step 3: User keyboard input in "Add Connection" [...]

    clip_image003[6]

     
     

    Step 4: User left click on "Use SQL Server Authentication (radio button)" in "Add Connection"

    clip_image004[6]

     
     

    Step 5: User left click on "User name: (editable text)" in "Add Connection"

    clip_image005[6]

     
     

    Step 6: User keyboard input in "Add Connection" [... Tab]

    clip_image006[4]

     
     

    Step 7: User keyboard input in "Add Connection" [...]

    clip_image007[4]

     
     

    Step 8: User left click on "Save my password (check box)" in "Add Connection"

    clip_image008[4]

     
     

    Step 9: User left click on "Open (push button)" in "Add Connection"

    clip_image009[4]

     
     

    Step 10: User left click on "EmployeeDB (list item)"

    clip_image010[4]

     
     

    Step 11: User left click on "Test Connection (push button)" in "Add Connection"

    clip_image011[4]

     
     

    Step 12: User left click on "OK (push button)" in "Microsoft Visual Studio"

    clip_image012[4]

     
     

    Step 13: User left click on "OK (push button)" in "Add Connection"

    clip_image013[4]

     
     

    Create The Employee Dataset

    Step 1: User right click on "EmployeeWcfService (outline item)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image001[8]

     
     

    Step 2: User left click on "New Item... (menu item)" in "A&dd"

    clip_image002[8]

     
     

    Step 3: User left click on "Data (outline item)" in "Add New Item - EmployeeWcfService"

    clip_image003[8]

     
     

    Step 4: User left click on "DataSet (list item)" in "Add New Item - EmployeeWcfService"

    clip_image004[8]

     
     

    Step 5: User left click on "Name: (editable text)" in "Add New Item - EmployeeWcfService"

    clip_image005[8]

     
     

    Step 6: User keyboard input in "Add New Item - EmployeeWcfService" [Backspace Home ...]

    clip_image006[6]

     
     

    Step 7: User left click on "Add (push button)" in "Add New Item - EmployeeWcfService"

    clip_image007[6]

     
     

    Step 8: User left click on "sp2010.EmployeeDB.dbo (outline item)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image008[6]

     
     

    Step 9: User left click on "Tables (outline item)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image009[6]

     
     

    Step 10: User mouse drag start on "Employees (outline item)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image010[6]

     
     

    Step 11: User mouse drag end in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image011[6]

     
     

    Step 12: User left click on "Row 0 (row)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image012[6]

     
     

    Step 13: User keyboard input in "EmployeeWcfService - Microsoft Visual Studio (Administrator)" [... Alt-Shift-Ctrl Alt-Shift-Tab]

    clip_image013[6]

     

    Step 14: User left click on "SELECT ID, Salary, FullName, Degree, MainDepartment, SubDepartment FROM dbo.Employees (tool tip)"

    clip_image014[4]

     
     

    Step 15: User left click on "CommandText (row)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image015[4]

     
     

    Step 16: User left click on "row 0, column 7 (cell)" in "Query Builder"

    clip_image016[4]

     
     

    Step 17: User keyboard input in "Query Builder" [... Enter]

    clip_image017[4]

     
     

    Step 18: User left click on "Execute Query (push button)" in "Query Builder"

    clip_image018[4]

     
     

    Step 19: User keyboard input in "Query Parameters" [... Enter]

    clip_image019[4]

     
     

    Step 20: User left click on "OK (push button)" in "Query Builder"

    clip_image020[4]

     
     

    Step 21: User left click on "Yes (push button)" in "Microsoft Visual Studio"

    clip_image021[4]

     
     

    Step 22: User left click in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image022[4]

     
     

    Step 21: User left click on "Yes (push button)" in "Microsoft Visual Studio"

    clip_image023

     

    Add Service Code

    In the file “IEmployeeService” add the employee data contract as follows:

        [DataContract]

        public class Employee

        {

            [DataMember]

            public string ID;

            [DataMember]

            public decimal Salary;

            [DataMember]

            public string FullName;

            [DataMember]

            public string Degree;

            [DataMember]

            public string MainDept;

            [DataMember]

            public string SubDept;

        }

    And change the service contract to be as follows:

        [ServiceContract]

        public interface IEmployeeService

        {

     

            [OperationContract]

            Employee GetEmployeeData(string EmpID);

        }

    In the file “EmployeeService.svc.cs” change the service implementation as follows:

        public class EmployeeService : IEmployeeService

        {

            public Employee GetEmployeeData(string EmpID)

            {

                try

                {

                    decimal EmpIdParam = decimal.Parse(EmpID);

                    Employee emp = new Employee();

                    EmployeeDataSet.EmployeesDataTable dt=new EmployeeDataSet.EmployeesDataTable();

                    EmployeesTableAdapter ta = new EmployeesTableAdapter();

                    ta.Fill(dt, EmpIdParam);

                    if (dt.Rows.Count != 1) return null;

                    emp.ID = dt.Rows[0]["ID"].ToString();

                    emp.Salary = decimal.Parse(dt.Rows[0]["Salary"].ToString());

                    emp.FullName = dt.Rows[0]["FullName"].ToString();

                    emp.Degree = dt.Rows[0]["Degree"].ToString();

                    emp.MainDept = dt.Rows[0]["MainDepartment"].ToString();

                    emp.SubDept = dt.Rows[0]["SubDepartment"].ToString();

                    return emp;

                }

                catch

                {

                }

                finally

                {

                }

                return null;

            }

        }

    This completes the service implementation now we will deploy the service.

    Deploy the WCF service to the IIS

    We now deploy the developed WCF service to the IIS.

    Step 1: User right click on "EmployeeWcfService (outline item)" in "EmployeeWcfService - Microsoft Visual Studio (Administrator)"

    clip_image001[10]

     
     

    Step 2: User left click on "Publish... (menu item)" in "Project"

    clip_image002[10]

     
     

    Step 3: User left click on "Publish (push button)" in "Publish Web"

    clip_image003[10]

     
     

    Step 4: User keyboard input in "EmployeeWcfService - Microsoft Visual Studio (Administrator)" [... Alt-Shift-Tab]

    clip_image004[10]

     

    Now this completes the WCF development and deployment and it is ready for use. In the next post I will show you how to connect to it using the SharePoint BCS.

  • SharePoint 2010 User Profiles Service: Part 3 Adding WCF BCS Model

    In the previous post I described the exact scenario I am trying to implement and detailed how to create the WCF service and deploy it. In this post I will continue by describing how can we prepare this WCF to be consumed from the User Profiles Synchronization service using BCS.

    Create the BCS Profile Pages Host

    Step 1: User left click on "Start (push button)" in "Start"

    clip_image001

     

     

     

    Step 2: User left click on "SharePoint 2010 Central Administration (menu item)" in "Start menu"

    clip_image002

     

     

     

    Step 3: User left click on "Manage web applications (editable text)" in "Home - Central Administration - Windows Internet Explorer"

    clip_image003

     

     

     

    Step 4: User left click on "Web Applications Tab 2 of 2. (pane)" in "Web Applications Management - Windows Internet Explorer"

    clip_image004

     

     

     

    Step 5: User keyboard input in "Web Applications Management - Windows Internet Explorer" [... Alt-Shift-Tab]

    clip_image005

     

     

     

    Step 6: User left click on "Create New Web Application (dialog)" in "Web Applications Management - Windows Internet Explorer"

    clip_image006

     

     

     

    Step 7: User left click on "Port (editable text)" in "Web Applications Management - Windows Internet Explorer"

    clip_image007

     

     

     

    Step 8: User keyboard input in "Web Applications Management - Windows Internet Explorer"

    clip_image008

     

     

     

    Step 9: User left click on "Create New Web Application (pane)" in "Web Applications Management - Windows Internet Explorer"

    clip_image009

     

     

     

    Step 10: User left click on "Create New Web Application (pane)" in "Web Applications Management - Windows Internet Explorer"

    clip_image010

     

     

     

    Step 11: User left click on "Database Name (editable text)" in "Web Applications Management - Windows Internet Explorer"

    clip_image011

     

     

     

    Step 12: User keyboard input in "Web Applications Management - Windows Internet Explorer" [... Shift-End Delete ... Backspace ...]

    clip_image012

     

     

     

    Step 13: User left click on "Create New Web Application (pane)" in "Web Applications Management - Windows Internet Explorer"

    clip_image013

     

     

     

    Step 14: User left click on "Create New Web Application (pane)" in "Web Applications Management - Windows Internet Explorer"

    clip_image014

     

     

     

    Step 15: User left click on "Create New Web Application (pane)" in "Web Applications Management - Windows Internet Explorer"

    clip_image015

     

     

     

    Step 16: User left click on "OK (push button)" in "Web Applications Management - Windows Internet Explorer"

    clip_image016

     

    Step 17: User left click on "Title (editable text)" in "Create Site Collection - Windows Internet Explorer"

    clip_image017

     

     

     

    Step 18: User keyboard input in "Create Site Collection - Windows Internet Explorer" [...]

    clip_image018

     

     

     

    Step 19: User left click on "Create Site Collection (pane)" in "Create Site Collection - Windows Internet Explorer"

    clip_image019

     

     

     

    Step 20: User left click on "Blank Site (list item)" in "Create Site Collection - Windows Internet Explorer"

    clip_image020

     

     

     

    Step 21: User left click in "Create Site Collection - Windows Internet Explorer"

    clip_image021

     

     

     

    Step 22: User left click in "Create Site Collection - Windows Internet Explorer"

    clip_image022

     

     

     

    Step 23: User keyboard input in "Create Site Collection - Windows Internet Explorer" [...]

    clip_image023

     

     

     

    Step 24: User left click on "Create Site Collection (pane)" in "Create Site Collection - Windows Internet Explorer"

    clip_image024

     

     

     

    Step 25: User left click on "OK (push button)" in "Create Site Collection - Windows Internet Explorer"

    clip_image025

     

     

     

    Step 26: User left click on "OK (push button)" in "Top-Level Site Successfully Created - Windows Internet Explorer"

    clip_image026

     

     

    Configure the BCS to Use the New Host

    Step 1: User left click on "Manage service applications (editable text)" in "Home - Central Administration - Windows Internet Explorer"

    clip_image001[6]

     

     

     

    Step 2: User left click on "Business Data Connectivity Service (editable text)" in "Manage Service Applications - Windows Internet Explorer"

    clip_image002[6]

     

     

     

    Step 3: User left click on "Configure (push button)" in "View External Content Types - Windows Internet Explorer"

    clip_image003[6]

     

     

     

    Step 4: User keyboard input in "View External Content Types - Windows Internet Explorer" [...]

    clip_image004[6]

     

     

     

    Step 5: User left click on "Configure External Content Type Profile Page Host (pane)" in "View External Content Types - Windows Internet Explorer"

    clip_image005[6]

     

     

     

    Step 6: User left click on "OK (push button)" in "View External Content Types - Windows Internet Explorer"

    clip_image006[6]

     

     

    Create the Employee WCF BCS Model

    Step 1: User left click on "Start (push button)" in "Start"

    clip_image001[8]

     
     

    Step 2: User left click on "Microsoft SharePoint Designer 2010 (menu item)" in "Start menu"

    clip_image002[8]

     
     

    Step 3: User left click on "Open Site (push button)" in "Microsoft SharePoint Designer"

    clip_image004[8]

     
     

    Step 4: User keyboard input in "Open Site" [... Home ... End ...]

    clip_image006[8]

     
     

    Step 5: User left click on "Open (push button)" in "Open Site"

    clip_image008[4]

     
     

    Step 6: User left click on "External Content Types (push button)" in "http://intranet.contoso.net:4444"

    clip_image009[4]

     
     

    Step 7: User left click on "External Content Type (push button)" in "http://intranet.contoso.net:4444"

    clip_image010[4]

     
     

    Step 8: User left click on "Name (link)" in "http://intranet.contoso.net:4444"

    clip_image011[4]

     
     

    Step 9: User keyboard input in "http://intranet.contoso.net:4444" [... Tab]

    clip_image012[4]

     
     

    Step 10: User left click on "Minimize the Ribbon (push button)" in "http://intranet.contoso.net:4444"

    clip_image013[4]

     
     

    Step 11: User left click on "External System (link)" in "http://intranet.contoso.net:4444"

    clip_image014[4]

     
     

    Step 12: User left click on "Add Connection (push button)" in "http://intranet.contoso.net:4444"

    clip_image015[4]

     
     

    Step 13: User left click on "Data Source Type (text)" in "External Data Source Type Selection"

    clip_image016[4]

     
     

    Step 14: User left click on "WCF Service (list item)"

    clip_image017[4]

     
     

    Step 15: User left click on "OK (push button)" in "External Data Source Type Selection"

    clip_image018[4]

     
     

    Step 16: User keyboard input in "WCF Connection" [... Alt-Shift-Tab ... Ctrl-V]

    clip_image019[4]

     
     

    Step 17: User left click on "Open (push button)" in "WCF Connection"

    clip_image020[4]

     
     

    Step 18: User left click on "Metadata Exchange (list item)"

    clip_image021[4]

     
     

    Step 19: User left click on "Service Endpoint URL: (editable text)" in "WCF Connection"

    clip_image022[4]

     
     

    Step 20: User keyboard input in "WCF Connection"

    clip_image023[4]

     
     

    Step 21: User left click on "OK (push button)" in "WCF Connection"

    clip_image024[4]

     
     

    Step 22: User left click on "http://sp2010.dev.mcs.local:8080/EmployeeWCFService/EmployeeService.svc/mex (outline item)" in "http://intranet.contoso.net:4444"

    clip_image025[4]

     
     

    Step 23: User left click on "Web Methods (outline item)" in "http://intranet.contoso.net:4444"

    clip_image026[4]

     
     

    Step 24: User left click on "GetEmployeeData (text)" in "http://intranet.contoso.net:4444"

    clip_image027

     
     

    Step 25: User right click on "GetEmployeeData (text)" in "http://intranet.contoso.net:4444"

    clip_image028

     
     

    Step 26: User left click on "New Read Item Operation (menu item)"

    clip_image029

     
     

    Step 27: User left click on "Next > (push button)" in "Read Item"

    clip_image030

     
     

    Step 28: User keyboard input in "Read Item" [... Alt-Shift-Tab]

    clip_image031

     
     

    Step 29: User left click on "Next > (push button)" in "Read Item"

    clip_image032

     
     

    Step 30: User left click on "Map to Identifier: (check box)" in "Read Item"

    clip_image033

     
     

    Step 31: User left click on "Map to Identifier: (check box)" in "Read Item"

    clip_image034

     
     

    Step 32: User left click on "ID (text)" in "Read Item"

    clip_image035

     
     

    Step 33: User left click on "Map to Identifier: (check box)" in "Read Item"

    clip_image036

     
     

    Step 34: User left click on "< Back (push button)" in "Read Item"

    clip_image037

     

    Step 44: User keyboard input in "http://intranet.contoso.net:4444" [... Alt-Shift-Tab]

    clip_image038

     
     
     

    Step 35: User left click on "Map to Identifier: (check box)" in "Read Item"

    clip_image039

     
     

    Step 36: User left click on "Open (push button)" in "Read Item"

    clip_image040

     
     

    Step 37: User left click on "ID (list item)"

    clip_image041

     
     

    Step 38: User left click on "Next > (push button)" in "Read Item"

    clip_image042

     
     

    Step 39: User left click on "Finish (push button)" in "Read Item"

    clip_image043

     
     

    Step 40: User left click on "EmployeeWCFBCS (push button)" in "http://intranet.contoso.net:4444"

    clip_image044

     
     

    Step 41: User left click on "Save (push button)" in "http://intranet.contoso.net:4444"

    clip_image045

     
     

    Step 42: User left click on "Minimize the Ribbon (push button)" in "http://intranet.contoso.net:4444"

    clip_image046

     
     

    Step 43: User left click on "Create Profile Page (push button)" in "http://intranet.contoso.net:4444"

    clip_image047

     

    Deploy and Test the Employee BCS Model

    Step 1: User left click on "Manage service applications (editable text)" in "Home - Central Administration - Windows Internet Explorer"

    clip_image001[10]

     
     

    Step 2: User left click on "Business Data Connectivity Service (editable text)" in "Manage Service Applications - Windows Internet Explorer"

    clip_image002[10]

     
     

    Step 3: User left click on "Open Menu (graphic)" in "View External Content Types - Windows Internet Explorer"

    clip_image003[8]

     
     

    Step 4: User left click on "Set Permissions (link)" in "View External Content Types - Windows Internet Explorer"

    clip_image004[10]

     
     

    Step 5: User keyboard input in "View External Content Types - Windows Internet Explorer" [...]

    clip_image005[8]

     
     

    Step 6: User left click on "Check Names (graphic)" in "View External Content Types - Windows Internet Explorer"

    clip_image006[10]

     
     

    Step 7: User left click on "Add (push button)" in "View External Content Types - Windows Internet Explorer"

    clip_image007[4]

     
     

    Step 8: User left click on "Set Object Permissions (pane)" in "View External Content Types - Windows Internet Explorer"

    clip_image008[6]

     
     

    Step 9: User left click on "Set Object Permissions (pane)" in "View External Content Types - Windows Internet Explorer"

    clip_image009[6]

     
     

    Step 10: User left click on "Set Object Permissions (pane)" in "View External Content Types - Windows Internet Explorer"

    clip_image010[6]

     
     

    Step 11: User left click on "Set Object Permissions (pane)" in "View External Content Types - Windows Internet Explorer"

    clip_image011[6]

     
     

    Step 12: User left click on "OK (push button)" in "View External Content Types - Windows Internet Explorer"

    clip_image012[6]

     
     

    Step 13: User left click on "View External Content Types (pane)" in "View External Content Types - Windows Internet Explorer"

    clip_image013[6]

     
     

    Step 14: User left click on "http://intranet.contoso.net:4444/_bdc/http___intranet_contoso_net_4444/EmployeeWCFBCS_1.aspx?ID={0} (editable text)" in "View External Content Types - Windows Internet Explorer"

    clip_image014[6]

     
     

    Step 15: User left click on "Address (editable text)" in "EmployeeWCFBCS - Windows Internet Explorer"

    clip_image015[6]

     
     

    Step 16: User keyboard input in "EmployeeWCFBCS - Windows Internet Explorer" [End Backspace Backspace Backspace ... Enter]

    clip_image016[6]

     
     

    Step 17: User keyboard input in "EmployeeWCFBCS - Windows Internet Explorer" [... Alt-Tab]

    clip_image017[6]

     

    So Now the BCS model is deployed and working as expected. The next step is to configure the UPS connections.

  • SharePoint 2010 User Profile Service: Part 4 Configure UPS Synchronization Sources

    In the previous post I showed you how to deploy the BCS model for the Employee WCF service. In this post we will continue our scenario by adding the synchronization sources for the AD and the BCS WCF service.

    Add the Employee IDs to the AD profile

    This step is needed to allow the UPS to link the AD profile to the proper WCF profile. As said before I will be using the employee ID property from the SQL database as the link property. We could have chosen any other property but this property have to be unique per a profile. We need to add the employee ID to any unused AD property.

    clip_image001

    clip_image002

    clip_image003

    clip_image004

    Add AD Connection

    Now you need to add the synchronization connection to the AD source from the UPS management. You need to add it and then select the appropriate OU that contains the list of all employees in the company.

    image

    Add the Link property

    The property used for linking is held in the AD field of the user home page (this is just an example). But since the SharePoint 2010 performs data validation during synchronization and this field should contain actually a URL, the default property will not work. So We need to add a custom property pointing to this AD field as a string property.

    Step 1: User left click on "Manage User Properties (editable text)" in "Manage Profile Service: User Profile Service Application - Windows Internet Explorer"

    clip_image001[4]

     
     

    Step 2: User left click on "New Property (editable text)" in "Manage User Properties - Windows Internet Explorer"

    clip_image002[4]

     
     

    Step 3: User left click on "Add User Profile Property (pane)" in "Add User Profile Property - Windows Internet Explorer"

    clip_image003[4]

     
     
     

    clip_image004[4]

     
     
     

    clip_image005

     
     
     

    clip_image006

     
     

    Step 4: User left click on "Attribute (text)" in "Add User Profile Property - Windows Internet Explorer"

    clip_image007

     

    Step 5: User left click on "wWWHomePage (list item)"

    clip_image008

     
     

    Step 6: User left click on "Add (push button)" in "Add User Profile Property - Windows Internet Explorer"

    clip_image009

     
     

    Step 7: User left click on "OK (push button)" in "Add User Profile Property - Windows Internet Explorer"

    clip_image010

     

    Add WCF BCS Connection

    Now we can add the employee WCF BCS connection linking to it using the custom added profile property which is already populated in the user web page field on the AD as we already seen.

    Step 1: User left click on "Create New Connection (editable text)" in "Synchronization Connections - Windows Internet Explorer"

    clip_image001[8]

     
     

    Step 2: User left click on "Add new synchronization connection (pane)" in "Add new synchronization connection - Windows Internet Explorer"

    clip_image002[8]

    Step 3: User left click on "Business Data Connectivity (list item)"

    clip_image003[8]

     
     

    Step 4: User left click on "Select External Content Type (graphic)" in "Add new synchronization connection - Windows Internet Explorer"

    clip_image004[8]

     
     

    Step 5: User left click on "http://sp2010.dev.mcs.local:8080/EmployeeWCFService/EmployeeService.svc/mex (editable text)" in "External Content Type Picker -- Webpage Dialog"

    clip_image005[6]

     
     

    Step 6: User left click on "OK (push button)" in "External Content Type Picker -- Webpage Dialog"

    clip_image006[6]

     
     

    Step 7: User left click on "Add new synchronization connection (pane)" in "Add new synchronization connection - Windows Internet Explorer"

    clip_image007[6]

     
     

    Step 8: User left click on "Return items identified by this profile property: (text)" in "Add new synchronization connection - Windows Internet Explorer"

    clip_image008[6]

     
     

    Step 9: User left click on "EmployeeIDAD (list item)"

    clip_image009[6]

     
     

    Step 10: User left click on "OK (push button)" in "Add new synchronization connection - Windows Internet Explorer"

    clip_image010[6]

     
     
     

    clip_image011

     

    Add the Custom Profile Properties

    Now add all custom WCF properties that are needed to be added to the user profile. Remember to set the EmployeeID as aliased and indexed property as we might need to search using it later. For the remaining properties you select the options as required. The properties to be added are as follows.

    Property

    Is Required

    Indexed

    Show to

    EmployeeID

    R

    R

    Me

    Degree

    Q

    Q

    Everyone

    LocalFullName

    R

    Q

    Everyone

    MainDepartment

    R

    Q

    Everyone

    SubDepartment

    Q

    Q

    Everyone

    Salary

    R

    Q

    My Manager

    The final profile properties are as follows.

    image

    Start Profile Synchronization

    Now you can start the profile full synchronization and then create the appropriate synchronization schedule.

    Now when we open a user profile we should see the custom properties populated as follows.

    image

    In this post I already showed how to link this to the people search center and how to search for user profiles using indexed properties. Also in this post I showed how to refine people search results using custom properties.

  • Download Lync Server 2010 Planning Tool

    Microsoft Lync Server 2010 Planning Tool just released this week and available for download from Microsoft downloads here: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=bcd64040-40c4-4714-9e68-c649785cc43a, and readme file can be downloaded from here: http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=c8ba3275-270f-4c0b-90bb-edc1d1216c2d,

    The Microsoft Lync Server 2010, Planning Tool asks you a series of questions about your organization and the features that you are interested in. The planning tool will then use your answers to recommend a topology based on the tested Microsoft Lync Server 2010 user model,

    What’s New in the Planning Tool for Lync Server 2010?

    • You can select virtualized server roles for your topology.
    • The Planning Tool offers more granular capacity guidance than in earlier releases.
    • You can customize individual branch site information.
    • The topology pages display site information, such as number of users and number of enabled users for various modalities.
    • The Planning Tool invites you to participate in the Customer Experience Improvement Program (CEIP), helping make the planning tool better.
    • You can view your edge network diagram and enter FQDNs and IP addresses and view the certificates, DNS settings, and firewall settings for your edge network in the central sites when using DNS Load Balancing or Hardware Load Balancing for Edge Servers. You can also import this information to Topology Builder. You can also export the diagram and the data to the Microsoft Visio drawing and diagramming software.
    • You can export your topology file to Topology Builder for a faster, easier Lync Server setup experience.
    • You can export the global topology, with its corresponding branch sites, as well as the number of concurrent calls connecting each central site, to the PSTN into Visio. The Visio output contains improved drawings for each of the site topologies.
    • The Planning Tool exports a list of the hardware for all sites, including branch sites, to a Microsoft Excel worksheet.
    • The Planning Tool accommodates more supported topologies for Enterprise Voice and dial-in conferencing.
    • Navigation between topologies and server information has been improved.
    • You can resize or maximize the Planning Tool window to better accommodate your screen resolution.
    • The Planning Tool provides a menu bar and a toolbar for available actions.
    • The Planning Tool incorporates new Microsoft Lync Server 2010 features and topology recommendations.
    • Users are now evenly distributed among the Front End pools.

     

    Related Posts:

  • Windows 2008 R2 and Windows 7 SP1 RTM released

    Service pack 1 for Windows 2008 R2 and Windows 7 is now RTM and released to MSDN and technet subscribers. The service pack will be available for public download on 22nd of Feb. This release adds new features for Windows 2008 R2. Major features are for Hyper-V and they are...

    • Remote FX (details here)
    • Dynamic Memory (details here)

    For developers, one major issue that this Service Pack fixes is the crash of Windows 2008 R2 on some laptops when virtualization is enabled and Hyper-V service is installed. This is due to some issues with some graphics cards and drivers.

    Visit the technet Homepage for windows 2008 R2 SP1 and Windows 2008 R2 team blog here.

  • WAIK SP1 Released!!

    The Windows® Automated Installation Kit for Windows® 7 SP1 has been released.

    To download the update: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=696dd665-9f76-4177-a811-39c26d3b3b34

    For the online readme help: http://technet.microsoft.com/en-us/library/dd349350(WS.10).aspx

    For a quick Q&A, check Michael Niehaus blog here: http://blogs.technet.com/b/mniehaus/archive/2011/02/17/windows-aik-for-windows-7-sp1-released.aspx

  • Tips & Tricks: SQL Server Mail Configuration

    After configuring SQL Server database mail and testing it successfully, you could find maintenance plans unable to send e-mails although you have set the recipients correctly.

    This is generally due to the setting for the default profile for database mail.

    Generally, you need to do the following to configure database mail:

    1.       In SQL Server Management Studio, select Management, Database Mail

    2.       Select Configure Database Mail

    3.       On the Database Mail Configuration Wizard, select setup Database Mail and configure the SMTP settings

    Secondly, you need to configure the default profile as follows:

    1.       In SQL Server Management Studio, select Management, Database Mail

    2.       Select Configure Database Mail

    3.       On the Database Mail Configuration Wizard, select Manage Profile Security

    4.       Under Public Profiles,  select Yes in the Default Profile to set the default Profile

  • Lync Server 2010, Best Practices Analyzer Available for Download

    End of last week, Microsoft released Lync Server 2010 Best Practices Analyzer and now it is available for download from this URL http://www.microsoft.com/downloads/en/details.aspx?FamilyID=030548df-0dc7-4f86-b8a9-2f5ec8de8ba5&displaylang=en and the tool documentation in this URL http://technet.microsoft.com/en-us/library/gg558584.aspx.

    You can use Microsoft Lync Server 2010, Best Practices Analyzer to identify and resolve problems with your Lync Server deployment. The Lync Server 2010, Best Practices Analyzer gathers configuration information from Lync Server 2010 components.
    With the proper network access, the Best Practices Analyzer can examine servers running Active Directory Domain Services, Exchange Server Unified Messaging (UM), and Lync Server. You can use Best Practices Analyzer to do the following:

    • Proactively perform checks, verifying that the configuration is set according to recommended best practices.
    • Automatically detect required updates to Lync Server 2010.
    • Generate a list of issues, such as suboptimal configuration settings, unsupported options, missing updates, or practices that we do not recommend.
    • Help you troubleshoot and fix specific problems.


    Best Practices Analyzer provides the following features:

    • Minimal installation prerequisites.
    • Online documentation about reported issues, including troubleshooting tips.
    • Configuration information that you can save for later review.
    • State-of-the-art system analysis.

     

    Related Posts: