Gorgo.Live.ToString()

Mariusz, Gorzoch tech Blog

Archive for the ‘SharePoint’ Category

SharePoint vs File share

leave a comment »

I’ve seen today great session around “Complete Enterprise Content Managment in Microsoft SharePoint 2010” and one quite interesting subject was around SharePoint vs File share and when to go for one of those. Here are some summary from out the guidance slide:

Use SharePoint when:

  • You need version tracking
  • There is a need for collaboration
  • You need flexible security model
  • All users have access to SharePoint
  • You need to describe the file using metadata
  • You have compliance requirements that can’t be met with file shares
  • File sizes are smaller then 75Mb

From above I would say that key points are “needs for versioning” and “needs for describing files with metadata”. In my experiences those two were the ones with help me to answer a question if migrating current “Files shares” to SharePoint is right choice. If business need to version document then SharePoint is a great answer as this saves users from changing names of the files each time they change something and prevents from two people to work on the some document at the some time.

Use a File Share when:

  • File sizes are more then 75Mb
  • You need a rigid security model
  • The File have a client-server usage profile
  • Files are archive, data dumps or backups or do not change much (option here is to go for RBS)
  • Files need to be locally available

In my experience I would say that we should go for File shares in case we can not (or shouldn’t go for SharePoint). In addition from the above list I would pick up “needs to for client-server usage” (in that case this could requires rewriting some soft to use SharePoint storage), “need to keep archive, backup files…”. Size of the file should also be taken into consideration as quite big files can quite quickly kill SharePoint storage/DB.

I really encourage you to watch this entire session as there was more pros and cons described when deploying SharePoint into organization.

Advertisements

Written by Mariusz Gorzoch

24 August 2011 at 11:40

Posted in SharePoint

Adobe PDF iFilter 9 for 64-bit and MOSS 2007

leave a comment »

Yesterday I had to correct issue on our intranet environment around search engine not crawling  PDF document contents. Bellow you can find useful pages with help me to resolve that :

1. Adobe PDF iFileter 9 download page : http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=4025&fileID=3941 

2. Instruction how to set-up machine hosting indexing service : http://blog.techgalaxy.net/archives/831 

3. Microsoft description how to adjust registry on the server : http://support.microsoft.com/?id=555209

4. ArcoExch.Document as a description of PDF file type on central administration : http://discoverlars.wordpress.com/2010/01/20/adobe-pdf-ifilter/ <- in nut shell this name is OK

After performing steps 1 to 3 (where 3 is actually included in step 2) I performed restart of osearch service and started full crawl. On the next day I was able to search for words/phrases thru MOSS search.

Written by Mariusz Gorzoch

20 April 2011 at 09:59

Posted in SharePoint

AudienceManager in context of w3wp

leave a comment »

SharePoint is powerful platform, but it has also his nasty dark corners. Today I discover one of them when I deploy my solution to production and for some reason it was working for me (full admin on farm), where it did not work for any other normal users. For some reason if someone with normal/read privileges tried to use my solution he get “Access denied” message.

at the end this was caused by this peace of code:

AudienceManager audManager = new AudienceManager();
Audience globalAudience = audManager.GetAudience("All site users");

and there is nothing wrong with that code. It works quite ok in dev environment with admin rights, but if run by normal users then this is throwing exception “Access denied” on internal “CanAccess” method.

more over the some issue appears for construction like this:

Audience aud = audManager.GetAudience(new Guid(aID))

happily there is simple work around to that by instead of using GetAduience method you will use Audiences enumerator and check item by item for the item you are looking for. To simply this I wrote simple extensions method to AudienceManager and you can find them bellow:

public static class AudienceManagerExtensions
{
    public static Audience GetAudienceByNameEx(this AudienceManager audManager, string AudienceName)
    {
        foreach (Microsoft.Office.Server.Audience.Audience objAudience in audManager.Audiences)
        {
            if (objAudience != null && objAudience.AudienceName == AudienceName)
            {
                return objAudience;
            }
        }
        throw new ArgumentOutOfRangeException("AudienceName", AudienceName, "Cannot be found");
    }     public static Audience GetAudienceByGuidEx(this AudienceManager audManager, Guid AudienceID)
    {
        foreach (Microsoft.Office.Server.Audience.Audience objAudience in audManager.Audiences)
        {
            if (objAudience != null && objAudience.AudienceID == AudienceID)
            {
                return objAudience;
            }
        }
        throw new ArgumentOutOfRangeException("AudienceID", AudienceID, "Cannot be found");
    }
}

imageHope that this will help someone to solve this problem quicker then me. I’ve spend few days looking for that answer. http://robswssblog.blogspot.com/2008/03/access-denied-on-audienceglobalcanacces.html

Written by Mariusz Gorzoch

18 April 2011 at 16:13

Posted in SharePoint

The protocol handler cannot be found

leave a comment »

Today I was playing with search engine and I was starting/stopping search services. At some point something happened and I couldn’t craw SharePoint content anymore. The message I get was :

The protocol handler cannot be found. Check that the handler has been installed.   (0x80040d1a)

I’ve spend another 45 minutes looking what is wrong and this end-up ( success path 🙂 ) with restarting three services:

  • Office SharePoint Server Search
  • Windows SharePoint Services Search
  • Windows SharePoint Services Timer

+ iisreset /restart

This do the trick for me and my crawler start to run again

image

hope that this will save someone time as I was playing/trying strange things to make it work again

Written by Mariusz Gorzoch

7 March 2011 at 15:32

Posted in SharePoint

Forcing daily alerts to send notification immediately

with one comment

Few days ago I was working on the solution with create search alerts based on some custom criteria’s. I’ve build solution quite smoothly till the point when I needed to test it.. Guess what : I’ve deployed solution, created alert and…… nothing happened :(. I dig around my code, did some changes, deploy it again and …. I needed to wait one more day to see if it was working. This make no sense, so I started to dig to find some solution and here it is what I found.

In order to fire “daily” alerts immediately you need to do few things:

  1. Check if alerts are enabled at all on your site

To do it simply use stsadm with parameter :

stsadm -o getproperty -pn alerts-enabled -url {your site collection URL}

is as a result you get that property does exist then you are fine. If not, then simply set-up this property by calling:

stsadm -o setproperty -pn alerts-enabled -url {your site collection URL} –propertyvalue “yes

2. Check job-daily-alerts

stsadm -o getproperty -pn job-daily-alerts -url {your site collection URL}

and set it so those alerts can be filed-up thru entire day

stsadm -o setproperty -propertyname job-daily-alerts –url {your site collection URL} -propertyvalue "daily between 1:00:00 and 23:00:00"

Now your alerts will be processed on every run of “Immediate alerts” job (which by default is scheduled to start every 5 minutes)

3. and now the most dirty part. You need to go into SharePoint database and reset last notify date.

SharePoint daily alerts are send once per day and SharePoint control this by saving information around the scheduled run time inside “SchedSubscriptions” table (here is some reference to that table: http://msdn.microsoft.com/en-us/library/dd956733(v=office.12).aspx). Once alerts are processed SharePoint save next run time. This field is used by “immediate alerts” job to check if he should process daily alerts or not.

In order to force SharePoint to process your daily alert immediate (or in 5 minute window) you need to update value in “NotifyTime” and “NotifyTimeUTC” field to the nearest time when you want the alert to be run:

image

so, in case NotifyTime = “2011-02-27 08:00” then this mans that SharePoint will process your particular daily alert on “2011-02-27 08:00” or just a few second after that (depend when the immediate alert job will be fired)

Setup NotifyTime to the time when you need SharePoint to process you daily alert and NotifyTimeUTC to the UTC corresponding time from NotifyTime field.

4. Perform full crawl of data

Don’t forget about this part. Remember that each querie run against SharePoint engine use only crawled data. So if you just add some new values into lists/document libraries with fallow you search alert criteria then you will not get them as a result of search query till you perform full crawl of content.

done!… if you fallow above then you will be able to test your alerts right after you do some changes around your code.

Written by Mariusz Gorzoch

26 February 2011 at 18:06

Posted in SharePoint

Tagged with ,

WSS and ‘Set Up Groups’ option

leave a comment »

Are you aware that if you use ‘Set Up Groups’ functionality from Site Settings->People and groups->Settings->Set Up Groups in WSS 3.0 (I’m not sure if this is also for MOSS 2007)

and create new group to play one of predefined roles, then if you didn’t brake inheritance of permission for your site, then it will not work ? I found this today after playing for a while and looking why members of ‘Intranet portal Members’ do not have access to my site. You can quite easy to verify this, when you go to “Site permission” screen:

(without broken inheritance):

(with broken inheritance)

(please notice that once you brake inheritance you need to get back to the “Set Up Groups” screen and hit ok).

In general it looks that someone forget to implement “do you want to break inheritance…..” functionality in “Set Up Groups” screen and now if:

  • inheritance of permission is disabled then “it will add you new group to site permission with proper rights”
  • inheritance is enabled then it will just ignore what you did , 😉

SharePoint is fun!

Written by Mariusz Gorzoch

5 October 2010 at 09:19

Posted in SharePoint

Alternate Access Mapping in SharePoint 2007

with one comment

So, what it is ? Before I tweak it up I took it a as a black box with shouldn’t be touch at all. Unfortunately something get broken and apparently all signs on the sky pointed to this black box. Here is description of our scenario and what I needed to set it up correctly.

Scenario:

We have one front web server exposed to our end users with can be accessed by them thru 4 different names:

  • name1
  • name1.domain.net
  • name2
  • name2.domain.net

what I needed to do is to somehow configure AAM in the way that whatever starting address use will use, then he will be redirected to name1.domain.net and from now on this URL will be use to surf thru our intranet.

Solution:

I needed to go to AAM (Central administration –> Operation –> Alternate Access Mapping), pickup my “Alternate Access Mapping Collection” (in my case it was the one placed on port 80) and:

1. Edit Public URL and set it to : name1.domain.net <- this is your public URL with will be use by SharePoint to respond to end user for any request from internal URL

2. Add all other URL as internal ones. <- this is working in the way, that each time server get request from such a URL then he will just replay with 302 code redirecting user to the public URL.

once you set AAM like above and of course also:

  • add your all above URL to host headers in IIS
  • associate those names with you server in DNS

then you are done, and whatever from above addresses user will use he will be redirected to name1.domain.net and surf thru your intranet with that address.

quite simple… but it took me a while to figure out this.

In case you want to read about it take a look at below links:

happy whatever , 😉

Written by Mariusz Gorzoch

28 September 2010 at 14:51

Posted in SharePoint