In order to upload a CFD app, one of the following conditions must be met:
1) The extension doesn't exist. In this case the 3CX console will create a new extension for the CFD app and set the C# script to it.
2) The extension exists, but it's a RoutePoint (i.e. an existing CFD app). In this case the 3CX console assumes that you're updating an existing CFD app, and changes the existing C# script with the new one.