First step to project using FIX protocol

Imported from previous forum

Hello,

What is the first step I need to do to start a project using FIX protocol? Should I come up with a specification defining the messages that my system will support. Is it a normal practice. If yes, is there a standard format?

Can my new specification specified the size of each tag?

Is user defined messages allowed in FIX 4.2?

Thank you.