Thanks Thomas... i'm glad that in the end it worked for you though as you say it is not straight forward.
My bad about option#1... i realized later that that wouldn't help in this case.
for future reference, here is a boilerplate json to create a map service from the Admin site.
update values for 'serviceName' and 'filePath' and you should be fine.
{
"serviceName": "<mapservice_name>",
"type": "MapServer",
"description": "",
"capabilities": "Map,Query,Data",
"provider": "ArcObjects",
"clusterName": "default",
"minInstancesPerNode": 1,
"maxInstancesPerNode": 1,
"instancesPerContainer": 1,
"maxWaitTime": 60,
"maxStartupTime": 300,
"maxIdleTime": 180,
"maxUsageTime": 600,
"loadBalancing": "ROUND_ROBIN",
"isolationLevel": "HIGH",
"configuredState": "STARTED",
"recycleInterval": 24,
"recycleStartTime": "00:00",
"keepAliveInterval": -1,
"private": false,
"isDefault": false,
"maxUploadFileSize": 0,
"allowedUploadFileTypes": "",
"properties": {
"useLocalCacheDir": "true",
"outputDir": "C:\\arcgisserver\\directories\\arcgisoutput",
"cacheDir": "C:\\arcgisserver\\directories\\arcgiscache",
"filePath": "C:\\temp\\mymap.msd",
"maxRecordCount": "1000",
"supportedImageReturnTypes": "MIME+URL",
"clientCachingAllowed": "true",
"isCached": "false",
"virtualOutputDir": "/rest/directories/arcgisoutput",
"maxExportTilesCount": "100000",
"ignoreCache": "false",
"exportTilesAllowed": "false",
"cacheOnDemand": "false"
},
"extensions": [],
"frameworkProperties": {},
"datasets": []
}