Some of my customers required an Arduino compatible boards so they can utilize the Arduino development environment. Since most of the time I am offering only schematic and PCB design for such a projects I was never interested what firmware and how will be uploaded, in general I am not an Arduino fan, until now. Not that I become a fan, but a client have no any experience neither the equipment to load the bootloader firmware himself. 

I anticipate to be a simple few minutes task, download the hex, upload and done ... but it takes me a few hours to collect all the information to accomplish the task. Since I didn't find any clear and straightforward explanation, I decided to share the way I did it, and maybe saving someone those hours and frustration. 
Arduino IDE allow you to upload the firmware, but mainly using a third party programing tools, not those sold by Microchip, and here where the problems start. I am using a genius Microchip tools and they are not supported by Arduino. 

The two major problems i faced is to locate the proper bootloader HEX, and later on the proper configuration bytes values. 

The board i design is for Atmega32U4, and is very similar to Arduino Micro in regards to the USB connections. 

Attached a short step by step guide how I did it.