Skip to main content

SharePoint Diagnostics Tool

The SharePoint Diagnostic tool (SPDiag) was created to simplify and standardize troubleshooting of SharePoint Products and Technologies, and to provide a unified view of collected data. SharePoint Products and Technologies administrators can use SPDiag to gather relevant information from a farm, display the results in a meaningful way, identify performance issues, and export the collected data and reports for analysis by Microsoft support personnel.

Download it from: https://www.microsoft.com/downloads/details.aspx?familyid=1c222804-51c7-4bb5-ae3d-89c68ad27a78&displaylang=en&tm

Thanks @mysharepoint for the heads up.

He is back!

The  man who has more friends that are robot’s than are human (check the pics on his blog posts), kids who fly supersonic speeds (soon) and has never attempted a Rubik cube is back online with his blog! Yep, Willy-Peter Schaub is now blogging with Microsoft branding ;) Go follow him at http://blogs.msdn.com/willy-peter_schaub - His blog on dotnet.org.za will still be their but will focus on personal items.

Microsoft Newsletters for South Africa

Stumbled across this when taking myself off some newsletters I don’t read any more. When you go to the profile site there is a list of all the news letters, you select which you want to join/leave. However if you change the language to English (South Africa) there are ones specifically from Microsoft South Africa (and actually Africa as a whole). Nice to see this!

image

Dublin - What you need to know!

Dublin is the code name for a application server which will ship as a separate download for Windows server around the .NET 4.0 timeframe. The application server’s focus will be on Workflow Foundation and Windows Communication Foundation applications. So, to me the developer pushing out code today what does it mean?

Well it means that a lot of the grunt work involved with WCF/WF applications is taken away because Dublin will provide a host for them - no more need for IIS for WCF and bespoke solutions for WF. That is not so great, I mean of course you can write your own still and in some situations that will be faster or more scalable than Dublin, but because the host is built the surrounding services come included. So lets take a prime example of how this would effect WF: Currently WF has a great tracking system which you can visualize using WinForms or ASP.NET, but why should I need to “copy-and-paste” that code into every WF application? Why isn’t there an out of the box tool like BizTalk has? Well since the Dublin server will host your workflows they will now provide you with a tool to do it!

Dublin setup/configuration tool

There is some important points to understand here:

  • Dublin is NOT .NET Framework 4 - It’s a separate Windows Server component. Updates will follow the Framework update schedule, but that’s as close as it gets.
  • Dublin is backwards compatible to .NET Framework 3.5 - So the work you are doing today is not wasted.
  • Dublin will support Oslo - Dublin is the first application to support administrators deploying out of Oslo.
  • So do I need BizTalk - Yes. BizTalk will still be great for B2B or LOB integration scenarios where you still will need to write code to get close to those great out of the box features. It is told they will work well together, but I have no details on how yet.
  • So do I need IIS - Yes. Even though a lot of apps now run on IIS will be moved to Dublin, you still want IIS for what it it good for - websites. In addition to that Dublin’s management interface is part of IIS!

Dublin settings in IIS 7.0

  • OS supported - Nothing official I can find but it uses IIS 7.0 so that implies Windows 2008 is a requirement.
  • What will it be called - Nothing offical although the beta bits have Windows Application Server as the name so it looks like it could be that.

Interesting the first customers to start work on Dublin are the Dynamics AX and CRM teams. Since I know CRM let me explain how I think they will use it (nothing official here). In MSCRM 4.0 you have two core components (high level):

  • Async Service - Which runs workflows
  • Web site - Which does the front end and web services

The async service will be dropped and it’s function together with hosting of the web services will be shifted over to Dublin with IIS continuing to host the website!

Persistence Out of the Box!

You can find out more at http://www.microsoft.com/NET/Dublin.aspx

Pictures from: http://www.biztalkgurus.com/blogs/biztalk/archive/2008/11/02/first-look-screen-shots-of-windows-application-server-dublin.aspx

Invite2Messenger

I don’t like Facebook for lots of reasons (how hard - and against their TOC - it is to get my data out being a big one), and one thing on Facebook that I used once and hated was their chat program (I don’t like browser based chat, not just Facebook’s). Thankfully Microsoft has solved that problem for me with the site Invite2Messenger, which lets you select your friends from Facebook and send them an invite to add you to Live Messenger. It is amazingly fast as well, working out which of the 120ish friends on Facebook have messenger accounts and which don’t in about 10 seconds and letting me have separate emails sent to each type.

The only downside to it, is that it doesn’t check who is already in messenger so a lot of my contacts got a mail asking to add me, even though they are in messenger. You can un-tick those manually… but I was lazy and this should be done automatically.

The thing that made me wonder is how Microsoft got access to that information, especially since all it asked for was the email address I use to sign in to Facebook. There was no prompt for logins or validation! In my untested theory based on running it one it may be possible to put anyone’s email in and get their friend list :( This seems like a security issue on the Facebook side… or maybe evidence of how much Microsoft’s little share in it actually has bought it!

SharePoint + Facebook

Courtz has had a great idea about combining SharePoint Mysites with Facebook information. He has a bit of simple code up there, but there may be a lot more options to explore (must put on thinking cap) around this and the upcoming Office 2009 release and features like the Knowlegde Network (yes that link points to the Channel 9 video of the product that didn’t happen with 2007, but it is happening with 2009!).

Delphi Prism: Part 4: What is available in each .NET Framework 3.5

What is available on each .NET Framework with Prism… this is mainly a screen shot post since it supports exactly what C# (and VB.NET) supports on those framework versions.

.NET Framework 3.5

Delphi - General

image

Mono

image

Silverlight

image

WCF

image

Windows

image

Windows (WPF)

image

.NET Framework 3.0

Delphi - General

image

Mono

image

Silverlight

NONE!

WCF

image

Windows

image

Windows (WPF)

image

.NET Framework 2.0

Delphi - General

image

Mono

image

Silverlight

NONE!

WCF

image

Windows

image

Windows (WPF)

NONE!

Juval Lowy coming to SA

Juval Lowy is from IDesign (which does some of the best WCF and .NET guidance) and runs the WCF master class which is a brilliant, but damn expensive course, so I’m definitely attending the FREE event where he will be speaking about .NET services. If you want to register: https://msevents.microsoft.com/CUI/Register.aspx?culture=en-ZA&EventID=1032402482&CountryCode=ZA&IsRedirect=false More details below.

Event Details:

Start Time:
11 February 2009 06:00 PM Harare, Pretoria

End Time:

11 February 2009 08:00 PM Harare, Pretoria

What is .NET services?

The .NET services bus is part of the new Microsoft Cloud Computing Windows Azure initiative, and arguably, it is the most accessible, ready to use, powerful, and needed piece. The service bus allows clients to connects to services across any machine, network, firewall, NAT, routers, load balancers, virtualization, IP and DNS as if they were part of the same local network, and doing all that without compromising on the programming model or security. The service bus also supports callbacks, event publishing, authentication and authorization and doing all that in a WCF-friendly manner.

This session will present the service bus programming model, how to configure and administer service bus solutions, working with the dedicated relay bindings including the available communication modes, relying on authentication in the cloud for local services and the various authentication options, and how to provide for end-to-end security through the relay service.

You will also see some advanced WCF programming techniques, original helper classes, productivity-enhancing utilities and tools, as well as discussion of design best practices and pitfalls.

Looks like this could be interesting - Microsoft Expression Event

clip_image001

2009 Expression Tour: Hands-On Labs
The Developer and Platform team at Microsoft South Africa is pleased to invite you to the Expression Tour, Hands-On Lab training event. Who should attend?
The training is aimed at designers and studio managers. If you’re into pixels, colour and creating amazing online experiences, then this one’s for you.
What we’ll cover
This is a two-day classroom training on WPF, Silverlight and Expression tools for non-technical audiences (200 level).

Day 1 About the Speaker :
Michael Koester
Michael Koester works for Microsoft Corporation as the Designer Marketing Manager for Middle East and Africa and Central and Eastern Europe. Prior to working at Microsoft, he had been an illustrator and graphic/interactive designer for various interactive agencies and new media companies in Germany and the US. Visit Michael's blog: http://koestie.wordpress.com
Provides an overview and participants will then build a working WPF application from scratch using the Expression tools.
Day 2
Participants will build a working Silverlight 2 application with audio and video from scratch. Additionally, participants will also get hands-on experience with some of the coolest technologies (DeepZoom and Virtual Earth integration).
No prior knowledge is required. In the end, participants will have a solid understanding of the Expression tools and technologies and can continue on their own, building Silverlight and WPF applications. This event will take place at a training venue with PCs provided.
NB: This event is FREE OF CHARGE
Limited space available, so register today to secure your seat!
Johannesburg Cape Town
Date: 26-27 January 2009
Time: 08:30-16:00
Venue: IT Intellect (Bryanston)
Click here to register
Date: 4-5 February 2009
Time: 08:30-16:00
Venue: IT Intellect (Waterfront)
Click here to register
You can also register via:
E-mail: [email protected]
Phone: 0860 2255 67
Read more about Expression Studio at http://expression.microsoft.com

AD Lookup Control in Request Tracker

So my double header post on getting this funky AD lookup control with Perl (post 1 & post 2) was actually prep work for getting to work in a product called RT (or Request Tracker from BestPractical) which is built on Perl. I have never worked with it before so I am slightly (read: exceptionally) ignorant of how to do this. Effectively I want a lookup to include AD users.

The First Option

The first thing I saw was this Include Page option when creating a field, which is described as

RT can include content from another web service when showing this custom field. Fill in this field with a URL. RT will replace __id__ and __CustomField__ with the record id and custom field value, respectively Some browsers may only load content from the same domain as your RT server.

image

Sounds perfect, turns out there is NO knowledge of how this works. I tried various forums and news groups, even emailing people who asked before about it… no answers are available! The documentation is USELESS!

The Second Option

Another option is once you have created a field a new option appears: Field values source:

image

So how do you actually use this without typing in the options yourself?

Custom Perl Module

Well in the /opt/rt3/lib/RT/CustomFieldValues is a file called Groups.pm which allows you to provide the names of the groups as a field source. So this is a possible solution, but first you need to create the module. The module has two methods:

SourceDescription - Which needs to return a string containing the name of what you are returning.

ExternalValues - Which needs to return an array of objects which contain the values. Those object must have a name property which is the name you want to show, and two optional properties description which is the… actually I dunno where it’s used (don’t think it is) and sortorder which you use to do the sorting. So taking the AD code previous the previous posts and combining it into the right format we end up with this code:

package RT::CustomFieldValues::AD;
 
#Start of user configurable settings
 
my $DomainController = "<SERVER>";
my $Username = "<USERNAME@DOMAIN>";
my $Password = "<PASSWORD>";
my $BaseOU = "<SEARCH OU>";
 
#End of user configurable settings
# ------------------- DO NOT CHANGE FROM HERE ---------------
#Start of system settings
my $Attributes = "sAMAccountName,sn,displayName";
my $Filter = "(objectCategory=User)" ;
#End of system settings
 
 
use strict;
use warnings;
use Net::LDAP;
use Net::LDAP::Control::Sort;
use HTML::Entities;
 
use base qw(RT::CustomFieldValues::External);
 
sub SourceDescription {
    return 'Active Directory Users';
}
 
sub ExternalValues {
    
    my @res;
    my $i = 0;
    my $ad = Net::LDAP->new($DomainController)
                or die "Could not connect!";
 
    $ad->bind($Username, password=>$Password, version=>3);
 
    my $sort = Net::LDAP::Control::Sort->new(order => "displayName");
 
    my $results = $ad->search(base=>$BaseOU, filter=>$Filter, attrs=>    $Attributes, control=>[$sort]);
    
    if ($results->count == 0)
    {
      die "No results returned";
    }
    else
    {
        for (my $counter=0; $counter<$results->count; $counter++)
            {
            my $user = $results->entry($counter);
                    if (defined($user->get_value("sn")) && length($user->get_value("sn")) > 0 && defined($user->get_value("sAMAccountName")))
                    {
                push @res, {
                    name => encode_entities($user->get_value("displayName")),
                description => encode_entities($user->get_value("sAMAccountName")),
                sortorder => $i++,
 
                }
            }
            }
      }
 
    $ad->unbind;
 
 
      return \@res;
}
 
1;

So we bundle that nicely in to AD.pm and dump that into the folder.

Configuration

So how do we use that module? Well you need to go to /opt/rt3/etc and edit the RT_SiteConfig.pm file and add the following line to it: Set(@CustomFieldValuesSources, "RT::CustomFieldValues::AD");

Next restart Apache (the command I used was: apache2ctl restart) and go back to the field properties and you should be able to select it.

Tips and Tricks

A few things about building these that I learnt along the way

  1. If, after the IIS reset, there is no drop down for the field source it means you have a bug in a module and you need to fix said bug.
  2. Use the die command excessively. When you select the field source and click save changes it will test your code. Only die will cause it to show error messages! When you get the UI, it will not give you errors!
  3. The autocompletion options may seem the coolest, but they use a (poorly, at least compared to jQuery) written piece of JavaScript. This battles to run with more than 25 results returned (slows down, doesn’t work, errors, freezes browser). I would recommend working with the select one or select many (combo boxes) first and trying to change to it later.
  4. If you change the code after you have set the field, you need to restart apache and then re-configure the field by setting the field source to something else, save and then set it back. It seems there is some caching issues which can prevent your changed results from appearing.

Hopefully this helps you develop with RT, and that this (overcomplicated) process is easier.