Hey guys

It’s been a loooong while since I’ve written about the tool that I’ve developed with Karine Bosch (@kboske) (and Peter was a great help with the Office 365 part) called Caml Designer.

Well since the vNext version that we have launched with the SharePoint Saturday 2012 the responses have been awesome 🙂 but also some bugs came up.

Thanks to all the people who sent a mail to camlfeedback@biwug.be we were able to track the bugs and fix them accordingly.

Continue reading

 

Chalkboard-610

Hey guys

I’ve found a couple of new things over the weekend.

First:

TechEd was last week and already new SharePoint 2013 content is online for us to view at channel 9:

Microsoft Office & SharePoint 2013 Development: Introduction to the New Cloud App Model

Developing Apps for Microsoft SharePoint 2013 with Microsoft Visual Studio 2012

Deliver Adaptive and Personalized Experiences with Microsoft SharePoint 2013

Overview of Business Intelligence in Microsoft Office and SharePoint 2013

IaaS: Hosting a Microsoft SharePoint 2013 Farm on Windows Azure

0 to 60: Developing Apps for Microsoft SharePoint 2013

Search Architecture, Sizing, and Migration in Microsoft SharePoint 2013

Microsoft SharePoint 2013 Sharing and Security

Microsoft SharePoint 2013 and Office 365 Upgrade and Migration: Strategy and Tactics

Exam Prep: 70-331 and 70-332 – MCSE: SharePoint (Microsoft SharePoint Server 2013)

Testing and Debugging Microsoft SharePoint Applications with Microsoft Visual Studio 2012

The Only Way to Go Is Up! Upgrade to Microsoft SharePoint 2013

Real SharePoint Apps, Real Fast with the New Microsoft Access 2013

Step by Step: Search Development in Microsoft SharePoint 2013

Building Modern, HTML5-based Business Apps for SharePoint 2013 with Visual Studio LightSwitch

Microsoft SharePoint 2013 Administration

Tips You Need to Know for Creating Apps for Microsoft Office and SharePoint 2013

Understanding the Fundamentals of SharePoint Claims-Based Authentication

Sharing is caring Smile

A few days ago we had to export and import list items from a certain list, because we used item level security and when your items go beyond 5k item count than you will hit the threshold. Most of the advice that you find on the internet is “increase the threshold”.

Yes you can do that, but ask yourself, why is it 5000? Well this has something to do with the backend of the SharePoint system (which is SQL of course). SQL handles row locks up to a certain amount. More than 5000 and it does a lock on the entire SQL table, which is not good…

So back to our story, we redesigned the structure and used folders instead and see where the security was common. Ok, threshold limit fixed but we still needed to move the items to the folder.

Because we didn’t want to just copy the items and deleting the source item, we used SPExport and SPImport instead. Benefit here is that the entire item is exported, deleted and imported again on the correct location. Very important was the ID, this was a production environment and the mails that already were sent and maybe some lookups pointing to the list. So keeping the ID the same was very important.

Now it didn’t take long before we reached our first error.

Capture

After a quick search on the internet we find that when you have custom user fields defined via the elements.xml file like so:

   1: <;Field 

   2: ID='{A77F7435-0F70-44CD-9D4A-C10520E2E0B2}' Description='' 

   3: Name='LoginName' DisplayName='LoginName' StaticName='LoginName' Type='User' 

   4: Group='Meligo'/>

Now the code above will work and all is good in SharePoint land, until you are going to export / import an item.

I wanted to know from where the error comes and after some searching it in a certain area of SharePoint called with reflector we find this:

reflector1

reflector2

 

As you can see a check is being done if the field contains a lookup list and if that lookup list is equal to “UserInfo”. Great this is step 1 in solving the problem.

So some key attributes are missing from the schema. To fix the error above, you need to add in the schema of the field: ‘List=”UserInfo” ‘ .

Next, the export without compression gives you the directory below

Directory 

 

In this Directory the “UserGroup.xml” is the one that we should look at. this should contain as many user nodes as there are user fields:

xml

As you can see the “<User” tag is created for each user field in the item, when it is filled in. If it is not filled in, than that userfield is being skipped.

Now we should have 3 user fields here. At the moment this is not the case.

Still, this wasn’t enough. We’ve added the ‘List=”UserInfo”’ to the field schema and pushed the update to all the lists fields. But the user field was still looked at as a Lookup field instead of a user field.

It’s because the field is listed in the manifest.xml but there is no user field correctly parsed to it.

Well it turned out that the ‘mult=”false/true” ‘ needed to be added as well. Only then the field is being considered as an user field.

Good luck hunting for that one Smile

After we did the 2 changes in the field schema the import worked like a charm again.

Also if you get the error / warning “cannot find user with {ID}” than your user isn’t listed in the UserInfo list.

The User Information List can be accessed (Only if you’re admin) via the browser by navigating to /_catalogs/users/simple.aspx from your site. (Ex: http://YourSiteUrl/_catalogs/users/simple.aspx)

 

Hey all

camlDesignerLogo

Just a quick post before I’m off to set up all the rooms and bags before the main event tomorrow (SharePoint Saturday 2013 Belgium).

Karine and me were a little bit too busy with our main jobs to continue working on the Caml Designer during this iteration, so Peter Karpinski asked if he could help out.. And help out he did.

Some list with updates that we did on this iteration:

  • Improved support for Office 365
  • Bug fixes
  • CamlDesigner 2013 can now also be used to connect to SharePoint 2010.. so delete the CamlDesigner 2010
  • Changed the connection screen a little bit, you can now select to what version of SharePoint you are connecting to

image

Of course when selecting SP2010 you can only use Client OM and web services… Server OM connection wasn’t possible.. but functionality why you will not see a difference.

Hope you like it  and maybe see you tomorrow at #SPSBE

Today is the day that SharePoint news will be injected in the MSDN BeLux tweet feed Smile (at least for a week that is).

To quote Maarten Balliauw :

This is the official Twitter account for MSDN BeLux. It’s not hacked, I did not steal the password: they gave it to me!

image

I would like to thank Microsoft for this opportunity , let me know how I’m doing, hope you’ll like the tweets.

have a nice day Smile

At the moment I’m sitting in the Gman garage in Antwerpen waiting on my car to be fixed. So excellent time to write some blog posts that I’ve been putting off for too long now.

Some time ago there was a problem at the client with a list of 10-20k items big. The discussion on how large a list is and should it be put in SP I’ll leave for another time, so the list was there and we had to solve it.

A simple query in an xsltlistviewwebpart would be the beginning of a big issue.

I’ve added some very interesting reads at the bottom of this article but all didn’t solve my issue.

Below was one of the first issues that we had.

Error_ItemLevelPermission

If you Google this one, a lot will tell, just set the threshold of the web application higher.

well, first ask yourself, why is this limit 5000 items?

To minimize database contention, SQL Server uses row-level locking as a strategy to ensure accurate updates without adversely affecting users who are accessing other rows. However, if a read or write database operation, such as a query, causes more than 5,000 rows to be locked at the same time, then it is more efficient for SQL Server to escalate the lock to the entire table until the database operation is completed. When this lock escalation occurs, it prevents other users from accessing the table

This small part in a very large blog article on Technet explains why.

Meanwhile the threshold was already set at 55000 items on production = NOT GOOD

Sure it solved the issue for a while but it created others elsewhere.

So back to the drawing board, why do we have this issue. Why is a query generating this particular error.

I will spare you the details on looking into this issue and skip to the solution.

It was because not only these 10k-20k large list was big but also all the items in it had broken security. So we had item level security in place. This is why we had this issue.

A little re engineering later (using folders with broken security and putting the items in those folders solved it) and all was good to go. From 20k items we went to 35 folders with broken security and the query would run nicely now.

A fun fact: working with large lists it’s often suggested to use the content iterator. Well the content iterator in the back-end applies a row limit, recursive node and listitemcollectionposition. In doing so it queries in batches but uses SPQuery just as well.

So CAML isn’t dead yet hehehe

 

Sneak preview: Did you know that our Caml Designer 2013 now supports SP 2010 as well, so you can work with the newly (and cool) designed CamlDesigner 2013 on both SharePoint versions. (Release is planned for 27 April).

 

Some good reading:

I’ve divided this into a table because of the many SharePoint versions:

Title (link to articles)

SharePoint Version

Comments

Software boundaries for large lists in SharePoint
2013

2013

 

Manage lists and libraries with many items

2013 & Office 365

 

Must do course

2013

 

Technet article

2010

 

Blog article from Steve Peschka

2010

 

Blog article from joel oleson

2010

 

Blog article from the SharePointBaker
(a buddy of mine 😉 )

2010

 

Working with large lists

WSS 3.0

It says WSS 3.0 but it still applies for the other
versions

Official read

2007

 

Hey everyone

So it’s been a very long time since I’ve written another blog post, sad part is, I just didn’t had the time.

I was very busy in preparing a SharePoint 2013 training (what’s new, Office Apps, Social and Azure workflow service) and a lot of time got into this. Finding everything out how it works, creating presentations (also re-using some content from SPC12) and working out demo’s. But I’m back bearing gifts Smile.

Continue reading

Hey everyone

As I was sending an internal mail to the SharePoint group of my company, I was thinking that this information would be interesting for everyone.. so, sharing is caring Smile

SharePoint 2013 is out for a couple of months now but not yet all the exams are available..

The beta development exams are available from April – June 2013 and you can find the path to become a SharePoint  2013 Developer here:

http://www.absolute-sharepoint.com/2013/02/three-new-facts-on-sharepoint-2013-mcsd.html

http://www.absolute-sharepoint.com/2012/12/sharepoint-2013-mcsd-developer.html

As you can see we need some HTML 5 & CCS 3 certification as well… and you can get the free voucher here (don’t know for how long the code is valid)

http://www.absolute-sharepoint.com/2012/11/microsoft-is-offering-free-voucher-for.html

What to do for IT pro exam?

http://blog.avtex.com/2012/10/24/sharepoint-2013-it-pro-certifications/

you need to pass MSCA – Windows Server 2012 (separate 3 exams as well)

some sources for training material :

http://www.absolute-sharepoint.com/2012/10/sharepoint-2013-certifications-training.html

http://jussionsharepoint.com/index.php/2012/09/14/the-definitive-guide-to-sharepoint-2013-certifications/

http://www.absolute-sharepoint.com/search/label/study

As you already can see, the most of the certification information comes from the blog of Vlad.. I strongly suggest to add this one to your blog reader feeds.

that’s all Smile

have a nice day

So back in the day when I started working with SharePoint (it was a cold Monday morning Smile ), it was around 2006 – 2007 and WSS 3.0 / MOSS 2007 was just out.

Webparts weren’t commonly known than nor was SharePoint. But we all know that MOSS 2007 was the launch to greater things.

The difference between SP 2003 and 2007 was big, one of the things we needed to ask ourselves was , are we going to inherit from System.Web.UI.WebControls.WebPart (recommended) or from the SP WebPart class..

Some differences between the ASP.NET and pure SP Webpart class:

  • Cross page connections
  • connections between webparts that are outside of a webpart zone
  • Client-Side connections (Web Part Page Services Component)
  • Data caching infrastructure that allows caching in the content database

Also creating a WSP package wasn’t that easy, if you didn’t use WSP builder of CKS than you needed to create your own package..

I think the procedure was (you can read all about it here) :

  1. creating a dwp file for your webpart, with the correct nodes and information
  2. Create a feature file
  3. a manifest.xml file as well
  4. create a DDF file so that you can cab (DDF = Diamond directive file, didn’t even know what it stands for until now)
  5. create a cabinet file using the DDF file (command: makecab /f solution.ddf )

The deployment happened via stsadm Smile 

Those were the times…

Also for MOSS 2007, project server came to the package as well as InfoPath Form services..

Next release of SharePoint was in 2010 and it expanded some more (Office web apps, FAST search server, …) . Webparts could still be created but you can now create also Silverlight packages and use these in SharePoint to make it more beautiful. Silverlight could also be used in MOSS 2007 but you had to write your own wrapper around it and Silverlight could only use the web services or use the OM via the wrapper. But also JQuery came to light (Jquery could also be installed for MOSS 2007, you can read about it part 1 and part 2 in the Blog of Jan Tielens ) but it wasn’t used that much in 2007 than in 2010 I believe.

In SP 2010 REST came into play and also CSOM and an OM especially for Silverlight. So we could already see the step towards client side code more and more. Sandbox helped in that regard as well. All this was created because Webparts are running solely on Server side. Meaning that it could impact the performance of the Web front end machines. So moving the logic client side would be a very logical step.

In SP 2013 we see that the CSOM had been expanded with extra functionality and APPS are doing more and more the work of replacing the sandbox solutions. Also more client side stuff can be used here as well. MVC, JavaScript, JQuery, Silverlight, Knockout, PHP, HTML… you name it, it can all be used in SP 2013 now (some of the technologies could be used in SP 2010 as well).

The reason why I’m writing this blog post is because I’ve highlighted this in a very small part in one of my previous blog posts and after some talks with Karine (Bosch) and some other people of the MEET team. We are all saying the same thing.

It’s no longer sufficient to write only C# code and all server side. Ok it’s the easiest because we’ve grown up with it almost and it’s what we know best. But a SharePoint developer should start to make his/her first reaction, “am I going to write this in a webpart or an app, what is the best technology for this, is it going to be multi lingual”? All these questions should be asked first before writing one line of code. The technologies that are available for us are too diverse.. and you can clearly see the move to client side code.

diversify

Some quotes Smile

Einstein and SharePoint are two paths that never crossed – but applying his most famous quotes to SharePoint creates an amazingly rich and accurate framework of discussions that all SharePoint experts should learn from.

Here are some great examples:

“Any intelligent fool can make things bigger and more complex… It takes a touch of genius – and a lot of courage to move in the opposite direction.” – Albert Einstein

“If you can’t explain it simply, you don’t understand it well enough.” – Albert Einstein

“Information is not knowledge.” – Albert Einstein

That’s it.. have a great week..