Searching PDF Content on MOSS 2007

Crawler process, crawling the content on SharePoint site, needs a decryptor to read different files contents, and crawl and index it, the crawlere uses the appropriate IFitler to read and extract data from target content source, actually IFilter is the file's reader that enables the crawler to understand the content of the file, and the IFilter loaded depends on the content source type ( .doc, .xls, .PDF ).

SharePoint comes with built-in IFilters such as Microsoft Office files IFilters and HTML Ifilters, for the full list of IFilters please refer to this link.
I have been asked so many times how to search PDF content on MOSS 2007, and the good news is that, to let MOSS 2007, PDF IFilter has to be installed on the server.

Adobe has an IFilter that was released for SPS 2003, but yet it can be installed on MOSS 2007, download Adobe PDF IFitler v6.0, to install it on SPS 2003, please refer to Microsof Support Article, to install it on MOSS 2007, please refer to Jerry's Blog, it explains how to install and configure it.

If you want to search any kind of content you have to install and configure the appropriate IFitler, please visit IFilter Shop to see some commercial IFitlers to search differnet content such as MindManager and CHM.

Update: 8th, May, 2008, 4:30 PM
I have found another way to filter and index PDF content on MSDN blogs, using Adobe Reader 8, please refer to this article to know more about it.
Indexing pdf documents with Adobe Reader v.8 and MOSS 2007


Office Labs Search Commands

Tired of Searching for commands in the menus of Office 2003, then you should upgrade to Office 2007, once you start using Office 2007, I am sure you will love it, and will get new experience of using Offie Ribbon that makes navigation a real fun!, I have seen so many people using Office 2007 but not even know the name of this square that shows the group of commands on the top banner area of Office application this is simply a Ribbon!, the below image is for a ribbon.

It lets you carry out any operation you want to, with a mouse click, and also it offers dynamic preview, you can try this yourself for fonts, and changing smart art type.

That was an intro!, Office Labs has taken the ribbon to a further stage by offering Search Commands, it is a ribbon that lets users search all the available commands in Office 2007, rather than switching from one ribbon to another trying to spot the command or operation you are trying to carry out, it is really interesting and real time saver!, in fact ribbons are based on XML ( again!! ), developers can design and build new ribbon controls. That's why I am not amazed, with the new search commands ribbon, I think it is searching in XML files that commands are based upon, I beleive it is offering great business value, let me show you how to use the features of Search Commands:

  • First go to Office Labs and download the application ( 2.9 MB approx ), then install it.

  • Launch MS Word 2007.

  • Click Windows+Y, this would take you right to the search textbox under the search commands.

  • Type anything such as "Table", Search Commands will build a list of ribbon items dynamically as you type in the search box, and you would be getting some commands as shown below, the commands are numbered, if you hit any number it will move the focuse to the target command.

  • You can see commands such as add new table, and update table of contents are built and shown.

  • Clear the search text box, and you would get the guided tour button shown, click it, and it will walk you through how to use the search commands.


Managing Alerts for Site Users

In MOSS site collection, you can manage alerts for site collection users, by adding them to the new alert created, as soon as you add the users, every user will get an email indicating that a new alert has been created for him.

To delete or unsubscribe users' alerts on behalf of them, you can browse to, Site Actions -> Site Settings -> User Alerts
Select the user from Display Alerts For dropdown list, and then click Update, check the alert you want to delete and then click Delete Selected Alerts.

For multi-lingual site collections, if you try to manage users' alerts from the site settings of the site collection ( language label site collection ), you will not get users listed in the dropdown list, this is a special case for multi-lingual site collections, the alerts are not shown for language label site collections, if you want to manage the alerts you will have to jump one more level up, to the Variation Home site settings, and then you will get all the language dependent users' alerts listed.


MOSS 2007 Alerts Demystified

One of the weird issues I have faced with MOSS 2007 Alerts is simply it is not sending out alerts for users, in the following lines I will give the symptoms of the issue and how I could resolve it.


As administrator, I click Alert Me and add myself and other concerned users to be notified with changes of a certain list, I get an email indicating that I have a new alert registered to the list and all other users get a similar email, the issue arises when changes are done and no emails are sent to the users.
If I would rephrase the symptoms I would write ( this is for folks searching the problem ), Alerts are created successfully, but the emails are not sent.


After some searching I found that so many other people encountered the same and walked through some workarounds such as breaking the permissions of the list and re-inheriting it, but this did not work.

I found one solution among the lines of ObjectMix forums, that I have found after searching for too long, I tried the solution and it simply worked, herein the steps for solution that worked for me:

  • Browse to Central Administration -> Operations -> Timer Job Definitions

  • Try to spot a job titled " Immediate Alerts " for your web application, noting that you may find the job for some other applications hosted on the same server.

  • Most likely, you will not find this job, and this is the reason SharePoint is not sending out alerts when the list items are changed.

  • To add this job definition you will need to run the following two commands in STSADM.

  • Run STSADM and enter the following commands ( you can change the parameters and frequency of alerts sending accordingly, in the below command it is sending every two minutes ) :

stsadm.exe -o setproperty -url http://mywss30server/mysite -pn alerts-enabled -pv true
stsadm.exe -o setproperty -url http://mywss30server/mysite -pn job-immediate-alerts -pv "every 2 minutes"

Voila!, now you should be ready to receive all the alerts emails that have been queued before because the job was not running, for me I have receieved about 50 emails.

If you check the job definitions now, you will find the new job added under immediate alerts


Microsoft SharedView

Microsoft SharedView is one of the coolest applications I ever run through, It is a screen sharing application from Microsoft, if you have ever used Live Meeting before you would realize the importance and effectiveness of such a tool, especially it is for free, SharedView lets you do the following:

  • Start a new session or join a running one.

  • Share Application: including Microsoft Office Office.

  • Share Desktop: Lets participants view whatever you are doing on your computer.

  • Share Handouts: by uploading documents/files to be shared with the participants.

  • Chat with all participants through a dockable chat window, which is really cool!

SharedView user interface is so similar to Live Meeting, the only thing it misses is voice and video sharing.

Features I Like about SharedView

  • The user who is initiaing the session is the only one who is required to have a Windows Live passport, so if you are inviting business users, they can join the meeting with no need to register their own business emails with Windows Live Passport.

  • Participants can move thier mouse devices, and whoever is moving his mouse, the view will be shared with all participants, showin his own name along with the mouse cursor, so if you are conducting a presentation and you have a congested window with links and sections simply the participant can point his mouse device to the section he may need to enquire about.

  • Chat is really cool!

  • Preview window is awesome, it lets the session owner preview what other participants view at the present moment.

  • Control of session: at any point of time, the session owner can dedicate control of the session to any of the participants who can write into a Microsoft word document, launch applications right from the session owner's computer. This really helps in situation where you are conducting a demo and you are using an application which is only accessible through your own local netowrk, so you can let particpants check and validate whatever you are demonstraing to them via the SharedView, this is much more powerful rather than creating a VPN connection and install it on participants machines. Any time you want to retain the control of the sesion, simply click your mouse, and the participant who's currently contorling the session will lose control.

  • Track Changes: you can switch this feature on, in case you are working with participants on a word document.

  • Handouts: You can attach files to your session and whenever any particpant joins the session he will be able to download the handout, this is more powerful than sending them via emails.

Real Life Usage Scenairos

  • Maintenance requests: simply if one of your clients/friends has a problem you can take control of his machine and fix any problems.

  • Review any kind of documents with other people, including source code files, Word documents, presentation files.

  • Conduct product demonstration to clients.

  • Collaborate on any kind of files such as Visio designs, or Microsoft Project Plans.

  • Let other users use any software on your computer, and send them the end files, with no need to ask them to install the required application.

  • You can use it along with conference call and get great results.

  • Draw a picture with your best friend :)

Next Features I want to be added

  • Voice Integration.

  • Video Integration

Other Information

  • SharedView supports up to 15 participants.

  • Download it here


The Web's best free stuff

Best downloadable software and online services!


How Bill Gates uses Office

Get a sneak into Bill's Office, and see how he's using Office 2007 to carry out his day-to-day tasks here.


Shared Services Provider Deletion

Case Scenario:

Let's say you have a MOSS 2007 installation, this installatino uses the default Shared Services Provider , after a while you needed to create a new Shared Services Provider, move all the current web applications to this new SSP, then delete the first SSP.
It sounds easy and straight forward, but while trying to carry out the above scenario, I have gone through some problems.
I created a new SSP, gave it a meaningful name such as SharedServices_Farm, from the Central Administration site, I clicked Shared Services Administratino, and changed all the associations of the web applications to my newly created SSP, then I tried to deleted the first SSP, but MOSS notified that I would never be able to deleted until I make another SSP a default one, as you can never delete a default SSP, I marked my new SSP as default one, then chose to delete the first one, and I selected deleting the SSP database as well, it went well, but after getting back to "Manage this Farm's Shared Services", I,yet, found the first SSP listed and the status of it was "Unprovisioning"!
I didn't mind to keep it like that, but after a while I found out that Search is not working for old site collections that were bound to the first SSP, after checking logs, it was always trying to open the deleted SSP database!
I have tried so many tricks and googled alot, but couldn't resolve it, then I reliazed that I am not alone with this problem, some other folks came through it, it seems to be a bug, hope Microsoft resolves it with MOSS SP1.


Run the command line tool stsadm, and enter the following line:

STSADM -o deletessp -title -force

Get back to the list of SSPs in the Central Administratino site, Happily, you will not find the deleted SSP, and your search will get back to work , but you might need to start the crawling process, you can do the following steps:
  1. Click the new Shared Services Provider.
  2. Under Search group, select Search Settings.
  3. Click "Content sources and crawl schedules"
  4. Click the menu of "Local Office SharePoint Server Sites", and select "Start Full Crawl".


Tech Days Gulf

Tech Days Gulf is an upcoming event that will be held at Dubai next 4th and 5th of December 2007, it focuses on the most cutting-edge technologies, such as:

- Visual Studio.NET 2008
- Microsoft Silver Light
- SQL Server 2008
- Micorosft Office Communication Server 2007
- Windows Server 2008
- Microsoft Dynamics CRM 4.0
- BizTalk Server 2006
- IIS 7
- PowerShell ( new .NET powered Microsoft Scripting engine)
- SharePoint Server 2007

36 various sessions on a couple of days will be conducted in Tech Days, sessions are targeted to developers and IT Professionals.
The session I am looking forward is not a technical one!, I have been hearing about the great success and good reputation that Infusion has in US, and surprisingly Infusion will conduct a session about "Leveraging New and Emerging Microsoft Technologies"; Greg Brill ( CEO of InfusionDev ) and staff will demonstrate how Infusion could utilize cutting edge Microsoft technologies to win biggest governement agencies in US and UK, it's kind of a business success story, that I've been waiting for, I'm looking forward to meet you there, it is a must-attend event!, you can get more information about Tech Days Gulf, here.


Visual Studio.NET 2008 Released

Microsoft has officially released Visual Studio.NET 2008 along with ASP.NET and .NET 3.5, new features of VS.NET include:

  • JavaScript and CSS support.

  • Browsing .NET framework classes using VS.NET.

  • Multi-Targeting Support ( VS.NET 2003 was for ASP.NET 1.x, VS.NET 2005 for ASP.NET 2.0 ), while VS.NET 2008 lets you target the version you're developing to.

  • AJAX inherent support and intellisense.

  • JavaScript intellisense.

  • Nested MasterPages.

  • Split view for design and markup views.

  • LINQ ( Language Integrated Query ) language.

  • ASP.NET ListView and DataPager controls ( ListView is similar to the ASP.NET 1.x DataList and Repeater, it's providing same GridView features with support for templates ).

For downlading VS.NET 2008, please find this excerpt from Scott Guthrie's blog:

"Today we shipped Visual Studio 2008 and .NET 3.5. You can download the final release using one of the links below:
If you are a MSDN subscriber, you can download your copy from the MSDN subscription site (note: some of the builds are just finishing being uploaded now - so check back later during the day if you don't see it yet).
If you are a non-MSDN subscriber, you can download a 90-day free trial edition of Visual Studio 2008 Team Suite
here. A 90-day trial edition of Visual Studio 2008 Professional (which will be a slightly smaller download) will be available next week. A 90-day free trial edition of Team Foundation Server can also be downloaded here.
If you want to use the free Visual Studio 2008 Express editions (which are much smaller and totally free), you can download them
If you want to just install the .NET Framework 3.5 runtime, you can download it

To get a bird's eye view on the most commonly .NET used classes, I'd recommend you download this poster that depicts the evolution of .NET framework class libraries, you can get it here.


Creating SQL RS Reports based on SharePoint List

MOSS 2007 is a great product from Microsoft, and SharePoint Lists offers a great solution for saving data, and acting as a backing store, and to be honest it is very tempting to use it and build custom content types then bind them to a list, or you can build the list on the fly defining the UI artifacts you want to show to end users, Lists offer sorting, filtering, grouping, paging, minor/major versioning, and creating out of the box custom views, for printout purposes users can creat their views and then print it right away from IE, but that's not the perfect solution for reports especialy if your uses want to show custom reports with company's logo or adding a footer showing number of the records in the list.

MOSS offers wonderful and consistent UI, but for reporting it shows limitations, imagine you want to create a custom SQL Reporting Services ( RS ) report using a SharePoint list or document library as a data source, unfortunately SharePoint is not offering this, nor SQL RS, and it seems I am not the only guy on the planet who suffers from this, I have been searching around, and I can summarize the workarounds I have come to in the following points ( using the XML data source that SQL RS is offering) :
  • You can give the URL of the RSS of SharePoint list or document library.
  • You can call the respective webservice for the lis or document library.

As you can see, both solutions are not efficient and might offer slow performance.

SQL Server 2005 SP2 is offering out of the box support for RS reports, in a nutshell it's a SQL RS Add-in for MOSS 2007, you can run in two modes either Native mode or SharePoint Integration mode, or you can run both at the same time, what's new about SP2 is that you can save your RS reports in a document library and get the features of the library such as checkin/out and versioning, also using a click-once smart client application you can let your users compose their own reports, but first you will have to design the data source, and then they can desing the UI part.

I hope in future service packs or releases, Microsoft offers a direct integration for reporting in SharePoint as so many solutions are based on saving data in lists and libraries, but when it comes to reporting SharePoint offers a limited support for reports.!

Please refer to the following links to get more information:


Distributed BTS 2006 Configuration Tips

Sometimes BizTalk Server 2006 configuration is getting a tough task, I've been through a problem to configure BTS on more than one machine, hosting the databses on a SQL Server 2005 machine, and BTS on another different machine on the same domain, and I have got so many error messages, all of those were because of credentials; BizTalk Server domain accounts are not able to create or manage databases on the SQL Server machines, so 2 things you will have to ensure they are done, when configuring BTS on more than one machine:
  1. DTC is enabled on both SQL Server and BizTalk Server machines, you can refer to DTC configuration at this troubleshooting BTS configuration at technet.
  2. Creating all the BizTalk and SSO windows groups required by BTS to access the respective SQL Server host, basically you will need to create the following groups:

    - Biztalk Isolated Host Users
    - Biztalk Application Users
    - SSO Administrators
    - Biztalk Server Administrators

If you come through any error while configuring, check the group that needs to be created and create it locally on SQL Server machine, then edit the newly created local groups, add each corresponding BizTalk domain group to the respective local group ( e.g. local BizTalk Application Users to domainName\BizTalk Application Users ), so BTS will have access to databases.


MOSS 2007 Content Types

Content Types is one of the new features of MOSS 2007, and WSS 3.0, a content type is a logical grouping for a set of informational fields that serve a common and specific purpose, you should decide which content types you need to have for your application, content types should be based on existent content types, and all parent's fields are copied to the new site content type, in other words you can consider the content type as a Class in OOP terminology, and this class is attributed by Must-Inherit, this is a good analogy that makes things easier to grasp, unsurprisingly site content types are built from site columns, so why the site content types are important and why should we start creating site content types and then bind lists or document libraries to them, rather than starting by creating lists or libraries right away by creating required columns, site content types are better to start with for the following reasons:

  • Site content types are reusable, just like OOP classes are.
  • Site content types can be associated with workflows, that are initiated either automatically upong item's creation or manually depending on the workflow type, for example if you associate the content type with "Collect Signatures" workflow, this type of workflow should be started from Microsoft Word application, there is no way to start it from web interface.
  • Site content types can be associated with Information Management Policy, whereby you can impose auditing based on specific selectable events, or you can enable item's expiration by setting a dynamic expiry date " e.g. project's start date + 2 years ", and select the appropriate action to be taken against the expired item, also if the content type is based upon Document content type, you can set document converters for the content type's instances.
  • The above reasons are not everything to justify using content types, however using site columns is so similar to content types, but in a nutshell you use site columsn whenever you want to have a global field/column that will be reusable by more than one list or document library, or basically by a site content type, always think of content type as a class, and site column as a field/property/member variable, these are the available content type's settings:

  • We'll create a site content type called "Projects" to track projects' deadlines, budgets, and resources, then we'll create a custom list that's based upon the Projects content type, to create the Projects content type:
  • Create a new site, give it any name you want, such as Project Management.
  • Select Site Actions -> Site Settings.
  • Galleries -> Site content types, you will get all the categorized site's content types as shown below:

  • Click Create.
  • Enter Name, Description, select Parent Content Type, and enter the Group under which the new content type will be added, enter the values as in this screen shot:

  • Now, you have to add the site columns that will compose the content type, click Add from new site column, add the following set of columns

  • After you're done with creating the site content type, browse to Site Actions -> Create.
  • Select Custom Lists -> Custom List.
  • Enter required data, Name : Projects, then click Create.
  • From Projects list Default view, click Settings -> List Settings.
  • Click General Settings -> Advance Settings.
  • Select Yes for Allow management for content types?, it's No by default.
  • Click OK.
  • You'll get directed to the Project List Settings, and you will find a new section added to the settings called Content Types, and the Project content type is listed with the default item content type, you can delete the default item content type, as we'll not use it for this example.
  • From the sitemap breadcrumb browse to the Projects list.
  • Click New, you will find Project listed, this is because the list is based on the Project content type and it's the default content type, after we deleted the item default content type

  • You will get to the new form, this form is built based upon the Project content type

  • Note that you can select more than one resource to be assigned to the project, and this is quite practical, remember that while adding this site column we've selected it to allow multiple values.
  • After adding this first project, you will get directed to All Items default view for the list, and it's only showing the title and attachment columns, now we'll edit this default view, by clicking All Items -> Modify this View, select Project, Project Client, Project Start Date, Project End Date, Budget, and Resource respectively, by setting the Position from Left.
  • Expand Totals group, for Budget select Sum, and for Project select Count, then click OK.

After modifying the view, you will get all the data you've entered before

  • Note the aggregate/total we've just entered while modifying the default view, under Project you will get the count, and under the budget you will get the subtotal for budgets.

One of the new features of MOSS 2007, Gantt View, that's a very common view/chart for project mangement that depicts the project's duration against time line, so we'll add a new Gantt view to get a bird's eye view about projects' durations, Click the View dropdown for the projects list and then select Create View, Click Gantt View, Provide a name "Gantt", Select Columns to be listed and provide the columns order, expand Gantt columns, and provide the Gantt specific columns, these columns are mandatory for Gantt view, for Title select Project, Start Date : Project Start Date, Due Date: Project End Date, click OK.

Select Gantt view from the views dropdown, you will get the Gantt view for the entered data, and you can edit projects' items from this view.

In this post, we've examined site content types and site columns, also we've gone through the new Gantt view.


InfoPath Forms Services Compatibility

InfoPath Forms Services is a new addition to both InfoPath 2007 and MOOS 2007, InfoPath 2003 served a great purpose to design forms, based on XML, that can collect users' input in easy steps, designing forms in InfoPath is a real fun, you can build very complex forms in a few minutes, InfoPath forms can interact with SQL Server, XML files, WebServices, and SharePoint List as a data source, however it's worth mentioning that one InfoPath form could have more than on data source, also InfoPath offers to embed the data inside the form itself, InfoPath 2003 offered a brilliant way to let users fill data in forms and post dta back to MOOS 2003, the biggest limitation was that the user who's filing the form should have InfoPath 2003 installed, otherwise no other way to open the form, this gave birth to InfoPath Forms Services , it's a core feature that's shipped with Enterprise License for MOSS 2007, whereby you can design your InfoPath forms and publish to MOSS 2007, then using InfoPath Forms Services, MOSS is rendering InfoPath forms to users using browsers, so no need to have InfoPath installed anymore, however there are some limitations for the designed forms, you'll be limited by using some set of controls, these ones are renderable inside browsers, other controls are not supported by InfoPath Services, so you have to keep this in mind while desigining your forms, also you can use the design compatablity checker from InfoPath 2007, this checker checks compatablity of the designed form against InfoPath Forms Services and InfoPath 2003, you can launch it by clicking Tools -> Design Checker, but before launching it you have to set the compatablity options by clicking Tools -> Form Options, select from Category Compatibility, you will get this dialog box:

If you plan to publish your form to MOSS 2007 InfoPath Forms Services Server, check Design a form template that can be opened in a browser or InfoPath. then click OK, then launch the design checker you will get any probable errors or warnings, resolve them and then you can publish your form, I have tried one InfoPath form and got this list of errors:

If you check the above list you will find that the combobox is not compatible, actually there is a subtle difference between the dropdown list and combobox, in InfoPath terms, the combobox allows the user to enter items into it, if the item is not listed in the combobox items.

For the full list of controls compatibility in InfoPath Forms Services you can check it here

One of the cool features I like about InfoPath 2007, it can impose working in Forms Services compatibility mode, Launch InfoPath 2007, click Design a Form Template, check Enable browser-compatible features only, select the template type you want to design, from the task pane, click Controls, you will find that the toolbox is only populated with compatible controls, and all the other ones are not listed, such as Combobox, this is one of the good practices to design a browser compatible InfoPath form.

Once you click OK, and get the default template's view, view the Controls from task pane if it's not visible, you will find that all unsupported controls have been hidden and one note is written below the controls toolbox saying "Some controls have been hidden based on the current compatibility settings."

if you click this yellow note, you will get a messagebox that's listing all the controls that have been hidden to build compatible forms

Note: Template parts are not compatible with InfoPath Forms Services, in compatibility mode all the custom controls in controls toolbox are hidden, as the template parts are not supported.



RSS.NET is an open source class library for writing and reading RSS feeds, it almost supports all RSS versions, the good thing about RSS.NET it's well documented in MSDN style documentation, and it's been used by so many websites to use RSS out of the box, consuming the library is quite easy and straightforward, you can check some examples here , on the other hand one other project is kicked off at SourceForge, to manage Atom feeds ( Atom is the next generation for websites content syndication. ), both libraries are great and saves you thousands of lines to be written to handle RSS and Atom.

Note: To get more information about RSS and Atom standards you can refer to my articles published at CodeProject:


Developer's Age at CodeProject Lounge

Have you ever asked yourself, " When will I stop development ? ", I am sure you've done at least once, especially when the job is getting tough, I have started this thread at CodeProject lounge, and I have found out that some developers aged 66 still work with .NET and have passion to learn .net 3.0, ain't this amazing, honestly I got surprised, I think development is a life time career now!, go to the lounge and share your viewpoint, and also read about people's experience, it's really interesting!

Developer's Age Lounge


Microsft VHDs

Microsoft provides some of the products in VHD formats, so if you want to learn a new product or technology and want to get the installation off your shoulders; you should have a look at Microsoft VHD repository.

Microsoft VHDs