Install Arabic language pack on MOSS 2007 on Windows Server 2008

This is a quick how to post to install Arabic language on MOSS 2007 installed on Windows Server 2008


  1. Download the language pack from here.
  2. Download the SP1 form here.
  3. Extract the language pack image to a folder, ex [C:\MOSS\Arabic support]
  4. Extract the SP1 files to the same folder, by running the following command [officeserverlp2007sp1-kb936984-x86-fullfile-ar-sa.exe /extract:”C:\MOSS\Arabic support”]
  5. This will display the update wizard, go with it, it will extract the files only
  6. Go back again to the folder and run [setup.exe]
  7. Finish the setup and it will run the MOSS configuration wizard.
  8. After it finishes, you will find the Arabic language drop down list when you create site collections.

I hope that helped


Developing a BPM Solution using MOSS and Nintex Workflow 2007 (Screencast)

In the following screen cast I have tried to prove the concept of the possibility of developing BPM solution using MOSS and Nintex Workflow 2007.

Kindly, find the screencast link below:

Screencast link


I welcome anyone how wants to work on a BPM product using MOSS and Nintex, please send me your comments and ideas and let’s work together to achieve it.

Send to

I hope that helped


What questions should we ask before architecting a SharePoint solution?

In the last 6 months, I was doing a lot of SharePoint presales, architecting, planning and development, the thing that I have noticed that there is a lot of SharePoint guys is missing the some of the core fundamentals when dealing with MOSS solution.

Most of them thinks from a developer prospective only, so they focus on the functionality and ignore the other key elements of a MOSS solution success, that’s why from my point of view they face a lot of failed MOSS projects however they made a pretty cool job with the actual implementation.

OK, skip the lecturing thing and tell us what we missed :), that’s fine; the first thing you need to understand that your solution is not built on an island by itself, it’s a solution which will be functioning in an environment, so the first basic rule [Get familiar with the current environment].

For example, imagine that your are working on document management solution, so you can get to something like the following:


From the simple diagram above, I was just thinking of the required functionality, so I had proposed the following:

  1. MOSS: document libraries, versioning, indexing, search, auditing, may be some workflows, audience management, records ,management, etc
  2. RMS: Rights Management Services
  3. OCR: scanning, text recognition, etc
  4. SQL Server: data storage

Although, this solution will satisfy the client’s functional needs but it doesn’t satisfy other categories of needs.

So, we can categorize the project needs into four main categories:

  1. Functional
  2. Environment
  3. Administration and Monitoring
  4. Ownership


Not everything is around developing new components, try to search for well known third party or open source components which will fill the required gaps in MOSS functionality or will give you a good boost instead of starting from scratch.

For example, if we have a very good MOSS team they should – at least – have the following ready:

  1. Very good OCR integrated with MOSS document libraries.
  2. Very good workflow tool to decrease the workflows development effort.
  3. Very good interface tool, custom grids, controls, etc.
  4. Very good tool for MOSS deployment, for that one we used to depend on a own developed framework :), but the field is open for any innovative ones.


Cab be broke down to:

  • Integration

What type of applications the client already have and the level of integration required.

Ex., some clients need the DMS to be integrated with their HR system and this is not clearly stated in the functional requirements.

  • Capacity planning

The current number of users who will use the system, the expected load on the system, peak hours and expected down time.

  • Required level of availability

What is the maximum HW utilization that we can get and the backup, restore, maintenance plans, also what about the minimum accepted down time.

  • Hardware

What is the current available HW and what is the best HW optimization which can be done, ex. Virtualization versus using actual HW

  • Licences and products edition

It is not about just proposing enterprise edition from everything, try to choose wisely and put justifications for every choice.

Administration and Monitoring

We should keep in mind the SharePoint and the IT administrators when we build a MOSS solution.

The basic need for these guys is to keep track of what is going on in the application, and these monitoring needs can be divided into three categories:

  • SharePoint related events

The SharePoint Usage Analysis and MOSS logs are great components in MOSS, however the level of details they provide is not enough for a successful monitor for a MOSS server.

Here, we can take the advantage of using System Center Operations Manager 2007 (SCOM), which provides a great detailed monitoring and reporting.

Definitely, we need SCOM as part of our solution.

  • Application related events

We should implement a very good designed error and logs reporting while developing our custom components, as the Administrator needs these information for better tracking on the application, and we need them for maintenance and troubleshooting.

Enterprise library logging framework is a very good idea to be put into consideration.

  • Users related events

Our system users need also a level of reporting, specially with Manager –> Employee approach, so we should think of some proper reporting from business prospective that helps our system users to keep track on what’s going on.


Cost of Ownership, that sentence my manager kept telling me until it became essential part of my thinking 🙂

Most of our clients specially enterprise ones, care a lot about the fact that they need to take the full ownership of vendor custom made applications.

I have seen a lot of solutions fail because the client’s internal technical team was not able to handle and understand the solution.

For example, if we know that the client doesn’t have a good SharePoint administrator currently we have three options to solve this:

  • Put the need for a MOSS administrator as a prerequisite
  • Propose training on MOSS administration if we found that someone is there is capable of handling this
  • Or the most costly and last option to be taken is to provide most of the MOSS related administration tasks as a custom made component in our application and provide it in a way that will be very easy for any IT guy to handle [I remember once we had to do so 🙂 ]

So basically what I’m trying to say here is:

Try to fully understand the client’s needs from all prospective, remove the developer hat and try to see the big picture.

MOSS solutions is not about writing code, it’s about satisfying a customer’s need in a way that will achieve:

  1. Cost advantage – decrease the cost of productivity.
  2. Boost efficiency – people will be able to work more efficiently using our solution. 
  3. Resources utilization – The client have resources that are not utilize, our system will help in that, for example the client already have MOSS installed, but with the default installation, with minor development effort, we can convert it into something that everyone is using daily.

P.S. This is an open discussion post, so please tell me what do you think in the comments section below, and let’s make this article a very good foundation of taking our MOSS experience to the next level 🙂

I hope that helped


Using Business Rules Composer in BizTalk Server 2009 : Walkthrough


Business Rules Composer in BizTalk Server 2009 is a great tool which enables us to separate the Business Rules from the actual process implementation.

Also, it gives the ability to implement shared BR across multiple processes, that means that the BR are shared, customizable, separately tested and modified as required.

This article is a quick walkthrough to demonstrate the usage of Business Rules Composer.  

In this sample I’m using BTS 2009, Visual Studio 2008 on Windows Server 2008

The sample about a leave request that needs to be validated against very simple business rule.

Building the sample

First, we need to build a BTS 2009 project, so create a new one in the Visual Studio.

Then, build the leave request schema as the following:


Build the message that will be sent to the BRE like the following:


Then build the business rule like that:

1. Add new Vocabulary


2. Name it [LeaveRequestData], and add a new definition like the following


Important: Remember to get the schema fully qualified name from the file properties window in Visual Studio, if you don’t but the fully qualified name you will not able to pass the parameters in Visual Studio when you try to call the rule.


Fill the definition like the following


Repeat the above from the [RequestedDays], [LeaveType] and the [ValidationResults], but for the [ValidationResults] make it [Set] operation.


3. Implement the first business rule like the following:


Implement the orchestration as the following:


Remember the Business Rules calling should be like that:


4. Now, it’s time to test our project:

a. Add strong name key and assign it to the project

b. In the deployment tab on the project properties screen, modify the application name to [BTS2009.Articles.BRE]

c. Deploy your solution

d. Configure the project as the following:

I’ll use three file ports, one to receive the incoming message, the second for the valid requests and the last one for the invalid requests.


e. Start your application

5. Implement 2 sample input message like the following:

Valid request message:

<ns0:LeaveRequest xmlns:ns0="http://BTS2009.Articles.BRE.EmployeeLeaveRequest">
  <Name>Ahmed Shokr</Name>

Invalid request message

<ns0:LeaveRequest xmlns:ns0="http://BTS2009.Articles.BRE.EmployeeLeaveRequest">
  <Name>Ahmed Shokr</Name>

6. Start your BTS application and paste the 2 sample messages to the [Intial requests] folder

You should see one message on the [Valid requests] folder and the other one should go to the [Invalid requests] folder.

7. Now, let’s modify the business rule to add a new case which is [Unpaid] vacation:


Deploy the new version of the business rule, restart the BTS Host Instance.

8. Update the Invalid message request message like the following:

<ns0:LeaveRequest xmlns:ns0="http://BTS2009.Articles.BRE.EmployeeLeaveRequest">
  <Name>Ahmed Shokr</Name>

However in this message the [RequestedDays] is greater than the [AvailableBalance] but the message should be moved to the [Valid requests] folder.

We can see that we applied modifications in the business rules without touching the application itself, and whatever BTS applications using this business rule, the new changes will apply without new modifications.

We can apply as much cases as we need, in the Business Rules Composer and it will apply on every application which is using the rule.

You can find the sample project plus the Policy files here

I hope that helped


Connecting Oracle Database to Microsoft Office SharePoint Server 2007 – Concepts


Microsoft Office SharePoint Server 2007 best definition is a framework build using SOA, to provide the needed functionality to build and connect line of business applications.

With the integration with SQL Server 2008 Analysis services, Integrations Services and Microsoft Office Excel Data Mining Add-on we can build Business Intelligence Solutions that relay on different data sources like Oracle Database.

Business Data Catalog

Business Data Catalog is a new business integration feature in Microsoft Office SharePoint Server 2007. It is a shared service and it enables Office SharePoint Server 2007 to surface business data from back-end server applications without any coding. Business Data Catalog bridges the gap between the portal site and your business applications and enables you to bring in key data from various business applications to Office SharePoint Server 2007 lists, Web Parts, search, user profiles, and custom applications.

Business Data Catalog provides built-in support for displaying data from databases and Web services. That is, you can use Business Data Catalog to display data from your SAP, Siebel, Oracle Database or other line-of-business (LOB) application via Web services or databases.


BDC enables this connection by defining data connection and application definition in the BDC metadata database, once the LOB application is registered and its connection is defined, then we can use this connection to display the required data on the MOSS lists, document libraries and web parts. 

Business Intelligence Enabled Approach

Microsoft introduce BI with the SQL Server Analysis Services, the role of SQL Server is to host the data warehouse info cube and provides the needed functionality for the data mining, OLAP and data retrieval.


As shown in the above diagram, in order to populate the SQL Server DWH database we need an ETL tool that will synchronize the changes from the Oracle Database on periodically manner.

After the data is synchronized in the DWH then the SSAS will analysis process it in the info cubes and make it available for reporting and data mining.

In the interface layer we can use the SQL Server 2008 Report Builder 2.0, Microsoft PerformancePoint Server 2007 and the Dashboard Designer to design and build professional reports, KPIs and scorecards.

All the reports, dashboards, KPIs and scorecards can be displayed on MOSS as the unified user interface using MOSS Report Viewer, Report Explorer, MOSS KPI lists and MOSS dashboards.

As an innovative way to help business users to build their own reports in an efficient and easy way Microsoft presents the Data Mining Add-on in Microsoft Excel.

In Excel normal business users can build their reports using common Excel functionality with the data connection to MS SQL Server 2008 Info cubes and the drag and drop functionality.

Note: the same entry is available on my blog on, See the entry on

I hope that helped.


Why defining Signoff procedure is too important

One of the most tough time which a project manager faces is Signoff time 🙂

When it gets to pay money and close the project, you may face a lot of tries to postponed it.

This can happen for several reasons like:

  • The client don’t trust that everything is OK, so he wants to delay the signoff to have the time for his people to use the product and figure out the hidden issues.
  • Paying money is the most difficult part for managers, so they will prefer to use the product first then pay for it
  • Usually, no one likes to be responsible of others things, so if the client has a change in the project team, you will face a very bad time

Ok, how to decrease all these silly things, it’s the signoff procedure with the following criteria:

  1. Ask and get familiar with the client’s internal signoff procedure before starting to write a project plan
  2. In the signoff part of the project plan, try to write a very clear well defined procedure
  3. Never make the mistake of writing people names, use titles or positions instead, for instance don’t write “Jordi Bartual” use “Head of IT Department” instead, so even there is a change in the client company hierarchy the next guy in the position is committed
  4. Define actual dates and penalties for any delay in someone’s approval
  5. Always reserve a place for the change request procedure and make it clear in the signoff procedure, over 70% of the CRs I had was during the signoff
  6. Finally, try to make sure that the procedure is communicated well to the client and get it approved

I hope that helped


Business Intelligence Solution Architecture using Microsoft Technologies

In the last two weeks, I was working on a POC and solution architecture for a client that has a Business Intelligence needs.

I can’t go so much in the details for confidentiality reasons :), but I’ll share a common architecture for a business intelligence solution.

First, to be able to follow up with this post, I suggest to go and search for the following common concepts:

  • Business Intelligence
  • ETL
  • EAI
  • Scorecards
  • KPIs
  • Info cubes
  • OLAP
  • Data marts
  • Data warehouse

I won’t speak so much in here on these concepts, because I’ll ISA in the following posts talk about the POC I had made for the client piece by piece with sample code 🙂


Solution Architecture

As you can see in the above image we got a lot of layers and technologies involved, of course not all these technologies and layers required all the time but its need come from the actual solution requirements and business needs.

Below is a very abstract description about each layer in the above diagram:

Presentation layer

Service as the web interface fro the BI solution, it’s a MOSS portal with the Report Center template.

We can use SSRS reports, PerformancePoint Server scorecards, KPI lists and Excel Services to provide the end user with interactive dashboard and BI scenarios. 

Also the SSRS and PerformancePoint Server serves as the core components in storing the report templates, rendering the reports  to the portal and design the reports itself.

We can use the report builder for the SSRS and the Dashboard designer for the PerformancePoint Server.

Business Intelligence layer

The OLAP, SSAS and SQL Server database serves as the BI and data analysis layer.

In this layer all the complex analysis, data warehouse activities and OLAP activities done to provide the multi dimension data to the above layers.

We can use Business Intelligence Development Studio to develop SSAS packages and databases.

Integration layer

Two things we should take care while investing time in this layer EAI and ETL.

For most of the scenarios and as a good practice too, that we use BizTalk for EAI and SSIS for ETL, that’s when we experience the true power of each technology.

We can use Visual Studio to develop both BT Orchestrations and SSIS Packages.

Database layer

SQL Server 2008 is a great tool and so much enhanced to be able to serve data warehousing and BI solutions.

As our data store and DBMS, it will connect the whole solution technologies and make them interact together.

Finally, as I said this was made for a quick POC for a client, so I’ll post in 3 or 4 posts piece by piece of my final solution and in each piece I’ll explain all the related concepts and technologies.

Thanks for my friend Debashish – the data warehousing expert – for his continues support and education 🙂

I hope that helped


Gulf 2009 Microsoft Imagine Cup Mobile Development Competition Winners

Hi all,

From the left: Abdullah, Salman, Dr. Amir Zeid, Ahmad, Abdelwahab and Ali

I want to take this chance to congratulate my friends and students from AUK for their big achievement.

The smart, skilled and innovative young developers won the Microsoft Gulf 2009 Imagine Cup Competition in the Mobile Development Category

I had all the honor to be their instructor in the Windows Mobile Applications Development, I had amazing time teaching those smart guys.

Abdullah, Salman, Ahmad, Abdelwahab and Ali, you were all amazing, I wish you all the luck in your future.

Dr. Amir Zeid, you did a great job with them, keep it up 🙂

I’m so proud of you all, you made my day when I hear it 🙂

Thanks to all who participated in this achievement, specially Rana (Microsoft), Amr El Garhy (Microsoft), Sameh El Henawy (Qualitas)  

This picture from Qualitas office where we used to have the training 🙂


See you