Also, there's one more thing regarding adding a new map. There's a file with an .ATT extension for each map. This .ATT file must exist and be loaded into the GS so it will know when your character is colliding with an object and what position update your GS will do according to your map's objects and props, rivers, bridges, etc.
Usually, the GameServer is reading the entire folder with every ATT file, but some of the GameServers must actually have the map added manually into your GameServer source code. So sometimes it's not only drag and dropping the ATT file into a folder and that's it, but this depends on how your GameServer is loading the ATT files. Without ATT files, even if you have these in your client, your GS won't know when to stop and start updating your position according to your map's objects and collision meshes, so practically you would walk through map's objects, even if your client knows where to stop on that map because a collision mesh was in your character's movement path.
Another possibility would be that without an ATT file loaded, your GameServer will disconnect your character when moving on that map, because the GameServer have no idea of that map because it wasn't added into the source code of your GameServer.
Again, most of these things depends on how your GameServer was developed. Maybe there's a CustomMap.txt file in which you can add the .ATT file and everything you need so your GS would work with that map.
Maybe this link would help you:
https://forum.ragezone.com/f508/development-trying-to-add-new-1053923/
Long story short:
Your GameServer MUST support adding a new custom map (into a file for example)
when you don't have the source code of your GameServer.
Adding a new map into the GS
when you have the source code (you need to know C++ OOP) of your GameServer is pretty much on the link above.