I had this problem in my development machine (Windows 7). This problem was in the Managed Metadata Service (which I was trying to configure at the time), but it may affect all the others too. The message I got was: "The Managed Metadata Service or Connection is currently not available. The Application Pool or Managed Metadata Web Service may not have been started. Please Contact your Administrator."
The reason was using my AD account to install and run the services and application pools of SharePoint. Since this was a development environment, I did not make extra accounts for a fully fit farm configuration. Due to security restrictions, passwords in our AD need to be changed on a regular basis and that generated the error above. The account was having log in problems, since the password was not a new one. Re-configuring all the services and applications pools to use a different account or resetting the password solved it.
Monday, September 12, 2011
SharePoint 2010 Tip #1: "This control is currently disabled" in Central Administration
In the central administration, if you are logged with the administrator account, but still don't have access to most of the options that should be available (like creating a New Web Application, etc), don't forget to check if you are running Internet Explorer as Administrator.
Friday, September 9, 2011
Install SharePoint Language Packs in Windows 7
If you are developing directly in your machine, in a Windows 7 environment, and try installing a Language Pack, it will fail because of the default requirements (Windows Server 2008).
To make it work, you need to extract the package and the change a configuration file.
There is a post about this in MSDN, here.
To make it work, you need to extract the package and the change a configuration file.
- Execute "ServerLanguagePack.exe /extract:<your_dir>
" - Open <your_dir>
\Files\Setup\config.xml and add the directive "<Setting Id="AllowWindowsClientInstall" Value="True"/> "
There is a post about this in MSDN, here.
Updating list items without changing the Modified field
In some situations, we want to programmatically update some fields in a list item without users knowing about it. The reasons may be varied; for instance, maybe you are only filling some control fields to record some action performed in a workflow and not editing the "true" metadata of your document/item.
The SharePoint Server API has 2 solutions for this, in our SPListItem object (MSDN quote):
From other information I could collect, SystemUpdate() may be very useful to use in custom workflow actions where the Update() would make the workflow call itself recursively.
The SharePoint Server API has 2 solutions for this, in our SPListItem object (MSDN quote):
- UpdateOverwriteVersion(): updates the current list item without creating another version of the item.
- SystemUpdate(): updates the database with changes made to the list item without changing the Modified or Modified By fields.When you call the SystemUpdate method, events are triggered and the modifications are reported in the Change and Audit logs, but alerts are not sent and properties are not demoted into documents.
From other information I could collect, SystemUpdate() may be very useful to use in custom workflow actions where the Update() would make the workflow call itself recursively.
Tuesday, September 6, 2011
Deploy external DLL's to SharePoint
With the 2010 version, things got so much easier, in terms of deployment. So this is just a reminder.
If you need to deploy some external DLL to the GAC or /bin folder, along with your solution, just go to your Package.package file and choose the "Advanced" tab to configure everything you need. Like the Safe Controls directives for the web.config.
If you need to deploy some external DLL to the GAC or /bin folder, along with your solution, just go to your Package.package file and choose the "Advanced" tab to configure everything you need. Like the Safe Controls directives for the web.config.
Archive or Copy Discussions in a Workflow
In the project I am currently working on, I have a requirement about archiving a discussion in a SharePoint Workflow. Actually, it is more complicated than that, as some information is also registered in a different list and the administrator/responsible for the discussions will also need to validate whether the discussion got a positive or negative feedback (which will influence the outcome of the workflow).
The main challenge here was the complex structure that discussions lists have. Each discussion is a folder and each reply an item inside that folder, from the type Message. All I wanted was to move the discussion from the original list to other one, archiving it. Using the workflow action to delete the item works, but not copying. So I created a new SharePoint Designer Action, the "Copy Discussion" action.
The set of articles "Working with SharePoint’s Discussion Lists Programmatically", from Itay Shakury, were very useful. You can find them here. It explains how stuff work and gives you code samples on how to access and create discussions and replies. It is for the 2010 version of SharePoint. Spot on. This was exactly what I was looking for. I then made my own version of it, according to my needs and got my custom workflow action going.
There is also another solution for archiving a discussion, using SPExport/SPImport. I found a topic on TechNet about the subject, in here. In my case, I prefer to do it programmatically, as it makes more sense in a workflow, than working with exports and imports.
The main challenge here was the complex structure that discussions lists have. Each discussion is a folder and each reply an item inside that folder, from the type Message. All I wanted was to move the discussion from the original list to other one, archiving it. Using the workflow action to delete the item works, but not copying. So I created a new SharePoint Designer Action, the "Copy Discussion" action.
The set of articles "Working with SharePoint’s Discussion Lists Programmatically", from Itay Shakury, were very useful. You can find them here. It explains how stuff work and gives you code samples on how to access and create discussions and replies. It is for the 2010 version of SharePoint. Spot on. This was exactly what I was looking for. I then made my own version of it, according to my needs and got my custom workflow action going.
There is also another solution for archiving a discussion, using SPExport/SPImport. I found a topic on TechNet about the subject, in here. In my case, I prefer to do it programmatically, as it makes more sense in a workflow, than working with exports and imports.
Saturday, August 27, 2011
Warming up your farm
Every SharePoint developer knows how slow the first load of a page is for users, after resetting the IIS or just recycling the application pool.
There is an option to prevent the delay in the first load: warmup scripts. There are some scripts using stsadm, both for the 2007 and 2010 platforms. In this last version, PowerShell scripts are now also available.
Check one of them here, by Martin Laukkanen.
There is an option to prevent the delay in the first load: warmup scripts. There are some scripts using stsadm, both for the 2007 and 2010 platforms. In this last version, PowerShell scripts are now also available.
Check one of them here, by Martin Laukkanen.
Thursday, August 25, 2011
Time estimation using PERT
Although there certainly are more complex and structured ways of estimating time, there is a rather simple method to estimate time that has proven interesting to me in many scenarios: PERT.
Basically, you'll have to do 3 estimations for each task: optimistic (O), most likely (M) and pessimistic (P).
These estimations are obviously dependent on how you evaluate the hardness of a task and on the people (or profile) you believe will perform them. One of the most important steps here, is defining as much sub-tasks as possible. Be as granular as possible, so that nothing is forgotten or wrongly evaluated.
After doing your set of estimations for each task/sub-task, you should apply this formula to get the expected time (TE):
Also,one of the most important things in time estimations, is to keep track of your own estimations and the time they really took. Nothing like a reality check to improve your estimations. One of the aspects that should be taken into account is the person who performed the task and their level of seniority.
Basically, you'll have to do 3 estimations for each task: optimistic (O), most likely (M) and pessimistic (P).
These estimations are obviously dependent on how you evaluate the hardness of a task and on the people (or profile) you believe will perform them. One of the most important steps here, is defining as much sub-tasks as possible. Be as granular as possible, so that nothing is forgotten or wrongly evaluated.
After doing your set of estimations for each task/sub-task, you should apply this formula to get the expected time (TE):
TE = (O + 4M + P) ÷ 6
Also,one of the most important things in time estimations, is to keep track of your own estimations and the time they really took. Nothing like a reality check to improve your estimations. One of the aspects that should be taken into account is the person who performed the task and their level of seniority.
Monday, August 22, 2011
SharePoint 2010 CSS Reference Chart
If you ever had some challenges with the design and default CSS of SharePoint, you probably know who Heather Solomon is. Considered by most as the biggest SharePoint branding expert, she released recently the 2010 version of the SharePoint CSS Reference Chart.
If you are struggling with the SharePoint design, check this out, here.
If you are struggling with the SharePoint design, check this out, here.
Distributed cache platform with Windows Server AppFabric
Just run into an interesting post by Wictor Wilén, on the use of an extension to Windows Server called Windows Server AppFabric.
Every web project needs to take into account performance and one of the tools we have to improve it is caching. In a farm, we have multiple servers managing their own cache, leading to possibly different results in performance. Also, there is no sharing of resources among different applications, since caching is made in the process level.
This framework allows a wider definition of the caching policies, along with some interesting options, such as the use of dedicated servers for this task and not being restarted in each application pool recycle.
See the article here, with some hands-on instructions on how to set the environment and use the framework.
Every web project needs to take into account performance and one of the tools we have to improve it is caching. In a farm, we have multiple servers managing their own cache, leading to possibly different results in performance. Also, there is no sharing of resources among different applications, since caching is made in the process level.
This framework allows a wider definition of the caching policies, along with some interesting options, such as the use of dedicated servers for this task and not being restarted in each application pool recycle.
See the article here, with some hands-on instructions on how to set the environment and use the framework.
Subscribe to:
Posts (Atom)





