Thursday 6 December 2012

SSRS 2008 R2 - Alternate Bar Chart Colours

A simple Bar Chart or Column Chart in SQL Services Reporting Services (SSRS) that only has one category group can look a bit boring.


An easy way to make it a bit more interesting on the eye is to change the fill colour on the bars (or columns) for the alternating ones.




Right click on the series and select Series Properties.



Select Fill and then click on the expression button.



In the expression box simply paste in the same code you use to alternate rows in a table.

=IIF(RunningValue(Fields!County_Name.Value,COUNTDISTINCT,NOTHING) MOD 2 = 0, "#4573D5","#7399EA")

In this case I'm using colour codes #4573D5 and #7399EA but you can also use names like this:

=IIF(RunningValue(Fields!County_Name.Value,COUNTDISTINCT,NOTHING) MOD 2 = 0, "LightGrey","White")


Your chart will now be a bit more pleasing on the eye.



Monday 15 October 2012

KB2661254 Kills My Sharepoint Foundation Web Front End

The Windows Update KB2661254 took down one of my Sharepoint Foundation Web Server Front Ends today. Luckily I have split when my servers update so it did not take down my Farm.

This update only seems to be affecting the Web Front Ends on Windows Server 2008, the Web Front Ends on Windows Server 2008 R2 are unaffected.

This Windows Update is to fix a problem that Microsoft are having with minimum certificate key length. It is not a security update so I blocked it in WSUS and uninstalled it and now I am back up and running.

Be sure to test this update before putting it onto your live Sharepoint 2010 Farm.


Wednesday 19 September 2012

Sharepoint 2013 - Sign in as Different User has been removed

The ability to sign in as a different user, which was very handy for testing permissions has been removed in Sharepoint 2013.









To get around this I had to use the old "Shift + Right Click" Run As Different User, which isn't quite as convienient.


Monday 17 September 2012

Where is the Recycle Bin in Sharepoint 2013

In Sharepoint 2013 the link to the Recycle Bin is no longer in the quick launch.













To get to the Recycle Bin click on Site Contents and you will then find it in the top right corner.





Friday 14 September 2012

Sharepoint Infopath Cannot Save The Form

A user complained that they could not save a form to an info path library in Sharepoint 2010. The error that they recived was

"InfoPath cannot save the form. The specified location cannot be accessed. Check that the location you entered is correct and that you have appropiate permissions."






I checked the user's permissions and found no problem but every time he tried to save the form he got the error. He was the only person with the problem and trying it on a different PC didn't solve anything. I checked the library to see if there was a previous file that had not being checked in but there was no sign in there. 

Eventually I got him to try saving it with a different name and it worked without any problem. There was no sign of the file with the old name in the recycle bin or anywhere in the library, so it seems like a bug but the workaround was to name the file differently.

Sharepoint 2013 People Picker

The People Picker in Sharepoint 2013 is a bit slicker. 

Instead of having to click on search, start entering a name, finding the person and then adding you now just have to start typing the name in the box. As you type a dropdown is created of people who have those letters in their name, which gets filtered as you type. Simply click on the required person from the dropdown to add them.


Click on Show Options and you can then select a group or permission level.


Tuesday 20 March 2012

Notify Users Who Leave Documents Checked Out

We have a problem with some users, who check out documents but never check them back in. I wrote a Powershell script to loop through the libraries and look for files that had been checked out for longer than 1 day. 

All of our libraries have a view called "Checked Out" documents which shows all the checked out documents in the library. The script creates a link to this view but you can easily change that to create a link to the library or directly to the file.

$snapin = Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.Powershell'}
if ($snapin -eq $null)
{
    Write-Host "Loading SharePoint Powershell Snap-in"
    Add-PSSnapin "Microsoft.SharePoint.Powershell"
 [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
}

$site = Get-SPSite http://siteurl
$SmtpServer = "smtp.yourserver.com"
$Subject = "File Checked Out Longer Than 1 Day"
$from = "service.desk@yourcompany.com"
$date = Get-Date
$Warning = ((get-date).adddays(-1))

#Loop through the webs
foreach ($web in $site.AllWebs)
{
  # loop through all lists in web
  foreach ($list in $web.Lists)
  {
    # examine if BaseType of list is NOT a Document Library
    if ($list.BaseType -ne "DocumentLibrary")
    {
      # forget the rest and return to top
      continue
    }
    # loop through each item
    foreach ($item in $list.Items)
    {
      $file = $item.File   
      if(($file.CheckOutStatus -ne "None") -and ($file.CheckedOutDate -lt $warning))
      {
        $User = $file.CheckedOutByUser
        $Email = $file.CheckedOutByUser.email
        $body = "Hi " +$User + ",

You have had the following file checked out from Sharepoint for more than a day. Click on the link below to see checked out documents in this library.

" +$file.name + "     """ + $web.url + "/" + $list + "/Forms/Checked%20Out%20Documents.aspx" + """

Please check this document back in If you are no longer using it.

Thanks"
        $smtp = new-object Net.Mail.SmtpClient($SmtpServer)
        $smtp.Send($from, $Email, $subject, $body)          
      }
    }
  }
}

Friday 24 February 2012

This document cannot be opened for editing

A user told me that they were no longer able to edit word documents in the Extranet. This was not an issue in the past but seems to be a new problem since Office Web Apps has been installed. The option to Edit in Word was no longer available.



When the user tried to Edit in Browser they recieved "This document cannot be opened for editing" error.


A check in the ULS logs found this error but it didn't shed much light.

System.TypeInitializationException: The type initializer for 'Microsoft.SharePoint.Utilities.SandboxCommunicator' threw an exception. ---> System.ComponentModel.Win32Exception: Access is denied

I tried to Edit the same file internally and this opened without any issue which prompted me to check the settings in Authentication Providers. To get there open your Central Administration site, and then click on Manage Web Applications. Then highlight the affected site and click on Authentication Providers in the ribbon.


Choose the zone that is causing problems and scroll to the end to check the Client Integration setting. If this is set to No you can set it to Yes. Note that this will allow the user to edit in Word but they may have to enter their credentials twice. Once this has been updated check your Extranet again to see if Edit in Word is now available.



Friday 13 January 2012

Sharepoint Workspace - Not all views sync

Working on a library in Sharepoint Workspace I noticed that not all views for that Library were syncing.


I found a few posts that said custom views with filters could not sync however this was not correct. All of the views in the library had filters but four of them were missing from Workspace. I looked further and found that the views that were missing were filtering on a date calculation or on a column criteria not being blank.


Removing the date or entering a value fixes this issue and the views sync but this changes the behaviour, so the users may have to do without in Workspace. 


Sorting can also cause the view not to appear in Workspace. Sorting on Modified for example works but sorting on Owner or custom columns.






Friday 6 January 2012

Save Template Error - No Windows Identity for DOMAIN\User

When trying to save a template today I encountered an error, I never had an issue saving templates before so I had a look in the logs to check what was causing it. In the logs I found the following error:


SPSecurityContext.WindowsIdentity: Could not retrieve a valid windows identity for NTName='DOMAIN\User', UPN='User@domain.com'. UPN is required when Kerberos constrained delegation is used. Exception: System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: WTS0003: The caller is not authorized to access the service. (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is: System.UnauthorizedAccessException: WTS0003: The caller is not authorized to access the service.    at Microsoft.IdentityModel.WindowsTokenService.CallerSecurity.CheckCaller(WindowsIdentity callerIdentity)     at Microsoft.IdentityModel.WindowsTokenService.S4UServiceContract.PerformLogon(Func`1 logonOperation, Int32 pid)     at SyncInvokeUpnLogon(Object , Object[] , Object[] )     at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)     at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)     at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)     at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)     at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet))

Claims Authentication  No windows identity for domain\user.

Looking online gave me no answers until I came across this blog by Doug Ware which talked about a change made by KB979917.

In the Application Settings for my Sharepoint Site I changed the aspnet:AllowAnonymousImpersonation to false and then performed an iisreset (beware that this will cause disruptions to your sharepoint website so either take the servers out of the load balancer one at a time or organise downtime).

After that I tried to save a site as a template and got a rather pleasing Operation Completed Successfully.


On my UAT environment I got a further error:

VtemplateManager::loadUncustomizedFormSchema failed with error code 0x80004005.    a93fecf5-fef9-4498-ae66-569b5872f930

CFormWebPartXmlFromRowSetData::Parse failed with 0x80004005    a93fecf5-fef9-4498-ae66-569b5872f930

CWebPartXmlBuilder::Add failed with 0x80004005    a93fecf5-fef9-4498-ae66-569b5872f930

Cannot complete this action.  Please try again.    a93fecf5-fef9-4498-ae66-569b5872f930

Which I fixed by running the script in my post about fixing broken discussion boards. After running the script I tried to save the template and it completed successfully.

Tuesday 3 January 2012

Retention Policy for Sharepoint Foundation 2010

There are no Retention Policies available for Sharepoint Foundation 2010 but you can get around this if you are a little bit creative. I have created a Powershell script that will delete files from a library that have not been modified within a specified time.
In our case we wanted to setup a temporary library for files that would be deleted if they had not been modified in the past three months.

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

$SPWeb = Get-SPWeb http://yourSiteURL/
$list=$SPWeb.Lists["Documents Library Name"]
$listItems = $list.Items
$listItemsTotal = $listItems.Count

$ThreeMonthsAgo = ((get-date).AddMonths(-3))

for ($x=$listItemsTotal-1;$x -ge 0; $x--)
{
    if([System.DateTime]$listItems[$x]["Modified"] -lt $ThreeMonthsAgo)
    {
        $listItems[$x].Delete()
    }
}
 
This script will delete the files but you could send them to the Recyle Bin instead using

$listItems[$x].Recycle()
 
You can change the expiry date using there properties to best fit your requirements.

 AddDays
 AddHours
 AddMilliseconds
 AddMinutes
 AddMonths
 AddSeconds
 AddTicks
 AddYears
 
After that I simply setup a Scheduled Task to run the Powershell script daily and I now have a Retention Policy on our temporary library.