SharePoint and FrontPage – A short tale about the _vti_bin

Whoever worked with SharePoint APIs at least once probably might have seen the _vti_bin path in some of its URIs. Not sure about you, but I have always wondered why Microsoft would have chosen that particular name as an identifier and a while ago I decided unveil the “secret” behind it.

The beginning

First things first, I’ll tell you how I ended up investigating all those things. As I said, a while ago I had a requirement in a project that I was working on to copy some pages with all its webparts. 

At that time PnP didn’t exist, so there were no provision techniques to handle such requirement.

I tried a lot of ways of exporting the desired file and then importing it again, but none of them really worked. All webparts were removed after reimporting the file – that behaviour was related with the ghosted files, but that is a subject to another post.

SharePoint Designer to the rescue

After trying a lot of different methods without success, I was starting to wonder whether would be possible to tackle that requirement or not and, for my complete astonishment, when I copied the page using the SharePoint Designer, all webparts were copied as well.

So, if SharePoint Designer was capable of doing such a thing, so was I. I started fiddler, did the very same process again, and started to evaluate the request that was just executed.

The following immediately got my attention:

HTTP POST /_vti_bin/_vti_aut/author.dll

Headers: X-Vermeer-Content-Type = application/x-www-form-urlencoded

At that time, to tackle that requirement I had created a PowerShell script that would do the same request and thus fulfilling the goal. If you are interested in the script, please check it out in the following Github repository:

Apart from that, there are a lot of other endpoints that are (or were) often used by SharePoint developers, like /_vtin_bin/listdata.svc.

The origin of the _vti_bin

Now that the story has been told and at that time, my issue was fixed, it was about time to find out more about the _vti_bin.

Tracing back to very beginning, you’d find the following article that dates back to 1996!

At that time, Microsoft has acquired a company called Vermeer Technologies Inc. (Does that ring a bell? If not, just look at the request header that was sent by SharePoint Designer: X-Vermeer-Content-Type)

With that acquisition, Microsoft had also incorporated a Vermeer’s flagship software: FrontPage.

Long story short, Vermeer’s developers decided to call the FrontPage extensions folder as VTI, that stands for Vermeer Technologies Inc. So, when those FrontPage Extensions were ultimately included in SharePoint, the folder name remained the same. Pretty cool, isn’t it?

So, if you’d like to know more about other APIs available in SharePoint through FrontPage Extensions, click here.

Why should I think about a project workflow?

Being part of the IT industry for many years as I am, is really common to hear many buzzwords meant or intended to transform something into another, but not always necessarily to a better version. Whom of you haven’t heard anything about Full-Stack developers, DevOps, Cloud, Cloud-First, Mobile-First, Disruptive Technologies, just to quote a few recent ones.


For a time in the recent past it was really important for an IT professional to become a specialist in something, focus on some technologies and really understand how it works under the hood. Being a specialist in something was something really good from a career perspective. You were always involved in some really complex projects, projects which most of colleagues couldn’t get them done. Because of all of that, you could ask for your price and companies would pay for you to get the project done. I’ve been there and done that with SharePoint projects.

More recently, most because of Node I’d dare to say, the term Full-Stack developer was forged and with that, professionals were encouraged to be more generalists rather than specialists. Suddenly, the developers that were part of a Silo (Back-End vs Front-End) had to leave their own island and take a journey towards the unknown.

The same thing happened with the DevOps. Developers had to leave their comfort zone and get their hands dirty with some infrastructure knowledge. I don’t think this was a bad idea, au contraire, it is important for a good developer to have some infrastructure knowledge, to understand where his code will run and understand the impact of something that he wrote may have on the hosting infrastructure. It is even more important to be able to automate tasks that you had to do manually in the past, so you could really concentrate on what really matter the most, writing the code 🙂


The bottom line is, after I’ve had experienced all those “changes” in the industry and worked in a lot of different projects, quite often the issues that I encountered in the projects I’ve worked on is a lack of a properly defined workflow, how the project will evolve throughout its lifecycle, from its conception to the delivery; how easy will it be to create new releases, to onboard new developers, to implement changes.

In my opinion, having a well-defined workflow is a really critical factor for the success of the project. Automate everything you can, make it easy for incremental deployments. Take sometime at the beginning of the project to setup such things, it will pay off.

Start with just a Hello World. Define the project name and that’s it. Create a repository to host the code and configure the Continuous Integration/Release right away. There aren’t many dependencies yet, so it would be easier to configure the build and the release of your project. Check the outcome of this process in the released version (if the application is a website, just navigate to the url and check if everything is running).

With these steps, you will already have the procedures required to build and install your application. When you add new features, you’ll always think about how the new feature will be installed upon the previous version, the impact of the new feature and the steps required to make it available. You’d also reduce or completely remove the “it works on my machine” and will be confident that a deploy will work, because you have been already testing the very same process since the beginning of the development. Time and money saver!

So, whenever you think about your next project, take a deep breath and start thinking about the workflow first. It is really nice to go directly to the bits and start working on a new project, but I assure you, the planning time will bring a great benefit for you and your company!




Visual Studio Live Share


The other day I felt astonished with the release of Visual Studio Live Share functionality. Although another IDEs / Code Editors might already have launched similar features, like Teletype for ATOM, I was very impressed on how smoothly things just works with Visual Studio Live Share.

Please, don’t let the name mislead you, it works for either the full IDE Visual Studio as for the Visual Studio Code.

In order to install it, open the extensions menu by CTRL+SHIFT+P or CMD+SHIFT+P, look for VS Live Share, click on install and just wait.

Click on Reload.

And then on Sign in at the bottom bar.

That’s it! You are ready to use the Live Share functionality.

Somethings that I really liked about this feature:

  1. People that join your session, will be able to navigate through the project structure without having the code downloaded to their machines.
  2. You can share a terminal window
  3. You can share a local port, so users that are connected to your session can “run” the application in their own machine without any hassle.

A feature like this would really help when you need some external assistance, but you can’t really share the code you are working on or when setting up a new environment just for the other people be able to debug and find the issue is too much trouble and perhaps not even worth it.

All the “Code Sharing” experience worked really smoothly with me, so I’d definitely use it more times 🙂

Thanks Thiago Silva for helping me testing out this feature 🙂



SQL Server – Script to move all NONCLUSTERED indexes to another filegroup


Today I had the requirement to move all NONCLUSTERED indexes to a different filegroup in all databases.

First attempt

My first approach was using the SMO objects in .NET/PowerShell to generate the scripts for me.

It would be something like this:

Whilst it worked, I couldn’t get the DROP_EXISTING property set to ON. I didn’t have the time to look this up further, so I decided to go for a different approach.


I was convinced that SQL Server could provide the information I needed.  After some investigation, I found the following script that I’ve used as a starting point and did some modifications to fit my needs.

So, the final result is:


SQL Server 2016 – Identity columns values has skipped 1000 values


Today’s post will be about something that I recently discovered: why sometime the identity value generated for some rows could skip some values.

A developer asked me why suddenly his identity values has skipped 1000 values in some days. I didn’t know the answer at the time, but it seemed to be so specific to be something completely random.

After some research, I found the Microsoft documentation explaining about that behavior:

It states:

Consecutive values after server restart or other failures – SQL Server might cache identity values for performance reasons and some of the assigned values can be lost during a database failure or server restart. This can result in gaps in the identity value upon insert. If gaps are not acceptable then the application should use its own mechanism to generate key values. Using a sequence generator with the NOCACHE option can limit the gaps to transactions that are never committed.

So, basically, SQL server caches some values and after a server restart or a cluster failover those cache values are discarded.

If you really need to have a sequential number you should rather use another feature like a Sequence.

Live and learning! 😀



SQL Server Error – Failed to connect to an IPC Port: The System cannot find the specified path (mscorlib)

Today I was analyzing some queries in SQL Server Management Studio. When I clicked on Analyze Query in Database Engine Tuning Advisor the following error was displayed Failed to connect to an IPC Port: The System cannot find the specified path (mscorlib).

To solve that error, open the Task Manager, find the process DTASHELL.EXE and terminate it.


Et Voilà, now you can safely try opening the Database Engine Tuning Advisor again.


Blue Frontend – Great times are coming!

Hello SharePointers,

This won’t be a technical post, but rather a big THANK YOU one.

But first, I’ll just rewind to the beginning.

The Beginning

This year I had decided to move abroad. I really wanted to experience working in another country, and all the kind of personal growth that such experience could provide.

I couldn’t proceed without saying Thank You to my former company, Globant. I really had a great time there. That company gave me a lot of friends that I’d take with me forever.

Globant provided me the opportunity to work with companies in the U.S., actually most part of my job there was working for an American client. Having those experiences only pushed me even more to pursue my dream of living and working abroad. But to do that, I’d have to get out of my comfort zone.

Again, I really liked my job. So, I started to look for job opportunities that would provide relocation support, but not that hard. After all, I had no rush.


Someday around July or August, I’ve had finally found a job that matched my criteria. Germany was about to be my destination. I did the whole process, interview at the Company, Interview with the client, signed the contract and ultimately applied for the VISA.

When everything was in the right place and the VISA request was filled at German Embassy, I resigned from Globant. I know I shouldn’t have done that before the result of my VISA process, but I’d have a short time after the result of my visa to be in Germany.

For reasons I couldn’t comprehend back then, my visa was denied. Neither the company or the german government could provide a direct answer of what went wrong and what I could do to fix it. The company was in fact astonished that the process didn’t work out. After a lot of effort that my future-not-even-started company did, we haven’t got an answer and ran without of options. So the dream was postponed (even though back then I thought it was actually canceled).

By this point, I left my job, my visa was rejected, the economy in Brazil wasn’t so good for a change – I was really bad about everything. There were days that I couldn’t leave my bed, I was really down.

What was really weird is that despite the fact I didn’t want to had another denial, I couldn’t look for a new job in Brazil. I just couldn’t.

New hope

After a couple months, I was too afraid to try again. The visa rejection really got into me. I applied for a few companies without much hope, just to keep some hope that eventually things would change. I was kind of tricking myself. I applied for international jobs so my brain could leave me alone (if that’s even possible!).

Until I got a reply from Blue Frontend.

I did some interviews and I could instantly feel the connection with that company, I really wanted to work there. I couldn’t explain why I felt that way, but everything seemed to be in the right place.  After my last conversation with Sam, the managing director of the company, I had the impression that I was hired, but after the trauma I just had, I’d rather wait.

Seconds seemed to last eras.

After some days, my contract arrived. I signed it and two weeks later I was in Ghent, Belgium. I couldn’t believe that!

To be honest, I’ve never thought to move in to Belgium before. Actually, I always have pictured myself moving to USA. Talking with some friends in Brazil, one of them asked me: “You said you wanted to go to USA, but have you ever tried? Have you applied for any job there?”. As surprisingly at it may sound, the answer for that question is NO. For some reason, I was only trying to move to a german-speaking country.

New home

Nowadays, I can understand why everything went wrong about Germany. I have no words to describe what Blue Frontend did for me.

All the support I needed and what I’ve never imagined, they’ve provided me. Really, I simply cannot describe what they’ve done. I’d like to say a big THANK YOU to you guys: Sam, Thais, Kim and all the Blue Frontend family members, that’s what you all are to me, family members.

I’ll push myself to the very limit, work as hard as I can to payback what you’ve done for me.

The Belgium people are so friendly, everyone I’ve had the chance to talk to were really nice to me. I really feel welcomed here and want to call this country as my home.

Last but not least

I just thought in writing this post so you could see why I haven’t been so active in the community and also to acknowledge that sometimes the life is mysterious and things happens in a way you couldn’t see at the moment. You might even get angry, but after a while you’ll see it was the best thing for you.

So, keep walking 🙂

Some pictures of Gent:

Microsoft MVP 4.0

Hello SharePointers,

Today arrived my 4th MVP Award, category Office Servers and Services.

This is a very special award because is signed by Saty Nadella, Microsoft’s new CEO, whom is doing a really great job with Microsoft’s new vision and positioning.

It has been a honor to be beside such great professionals for one more year!


Thank you so much Microsoft!

New MAXPATH limits in SharePoint Online and OneDrive

Hello SharePointers,

The Microsoft has incresead the MAXPATH limits in SharePoint Online and OneDrive.

The actual value was 256 unicode characters and now it is 400.

This new limit section applies to un-encoded URLS, and you can use the following formula to calculate the value:

URL = protocol + server name + folder or file path + folder or file path + parameters

So, using this url as sample:

the extracted parts are:

Protocol http://
Server name
Folder or file path sites/marketing/documents/Shared%20Documents/Promotion/
File name Some%20File.xlsx