Hay varias cosas que tener en cuenta aquí. Lo primero es que el VSCode debe estar en la misma máquina que la instancia de IRIS para que puedan compartir procesos de sistema operativo. Lo demás es poder adjuntarse al proceso del BO y luego poder parar en la línea de código.

Echa un ojo a esto si no lo has hecho ya:

https://intersystems-community.github.io/vscode-objectscript/rundebug/

Para adjuntarte a un proceso utiliza esta configuración en el fichero .vscode/launch.json

{
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "objectscript",
      "request": "attach",
      "name": "ObjectScript Attach",
      "processId": "${command:PickProcess}",
      "system": true
    }
  ]
}

Evgeny encontró una solución muy útil a su pregunta para convertir el resultado de una SQL a un objeto JSON. Así de Fácil:

s sc=##class(%ZEN.Auxiliary.jsonSQLProvider).%WriteJSONFromSQL("json","SELECT Name FROM Sample.Person")

y con un poco más de magia construyo esta librería para cumplir también con la parte REST

Se puede instalar fácilmente con ZPM:

USER>zpm "install sql-rest"

Lo de pasar los datos “vía PHP” es lo que me suena muy raro. Si quieres migrar los datos de una BD a la otra se me ocurren mil mejores formas que con PHP. Si lo que necesitas es conectarte a Caché para recuperar información a una pantalla de PHP y luego moverla a MySQL. El problema se reduce a conectar PHP a Caché. Mírate este proyecto de código abierto: https://github.com/chrisemunt/mg_php

Para empezar veo que estás creando una clase Adaptador que hereda de Test.BO.Adapter.HTTPOutboundAdapter. Eso no es una Operación. Es un adaptador.

Y la verdad no veo dónde estás metiendo los datos del Body... quizá hay más código

Yo mejor haría una operación que herede de EnsLib.REST.Operation.

Ejemplo:

Class demo.bo.RESTOperation Extends EnsLib.REST.Operation
{

Parameter INVOCATION = "Queue";

Method SendHTTP(pHttpVerb As %String, pURL As %String, Output pHttpResponse As %Net.HttpResponse, jsonObject As %JSON.Adaptor) As %Status
{
    set httpRequest = ##class(%Net.HttpRequest).%New()
    set httpRequest.ContentType = "application/json"
    if $IsObject(jsonObject) {
        set tSC=jsonObject.%JSONExportToStream(httpRequest.EntityBody)
        if $$$ISERR(tSC) quit tSC
    }  
    set tSC = ..Adapter.SendFormDataURL(pURL,.pHttpResponse,pHttpVerb,httpRequest)
    quit tSC
}

Method PostJSON(pURL As %String, Output pHttpResponse As %Net.HttpResponse, jsonObject As %JSON.Adaptor) As %Status
{
    Return ..SendHTTP("POST",pURL,.pHttpResponse,jsonObject)
} 

Method OnPostRequest(pRequest As demo.PostRequest, Output pResponse As demo.PostResponse) As %Status
{
    set tURL=..Adapter.URL_"/demo"
    set tSC=..PostJSON(tURL,.tHttpResponse,pRequest.orden)
    if $$$ISERR(tSC)&&$IsObject(tHttpResponse)&&$IsObject(tHttpResponse.Data)&&tHttpResponse.Data.Size {
        set tSC=$$$ERROR($$$EnsErrGeneral,$$$StatusDisplayString(tSC)_":"_tHttpResponse.Data.Read())
    }
    if $$$ISERR(tSC) quit tSC
    // procesar respuesta
    set pResponse = ##class(demo.msg.PostResponse).%New()
    set pResponse.respuesta = ##class(demo.msg.Respuesta).%New()
    if tHttpResponse.StatusCode=200 {
        $$$TRACE(tHttpResponse.Data.Read())
        set tSC = pResponse.respuesta.%JSONImport(tHttpResponse.Data)
    } else { 
        set tSC=$$$ERROR($$$EnsErrGeneral,"HTTP Status:"_tHttpResponse.StatusCode)
    }
    quit tSC
}



XData MessageMap
{
<MapItems>
    <MapItem MessageType="demo.PostRequest"> 
        <Method>OnPostRequest</Method>
    </MapItem>
</MapItems>
}

}

Hola,

Gracias por preguntar. 

Por lo que veo me parece que esto es un mensaje de MONMGR. Si es así este mensaje es generado por el Core y no por la para de Interoperabilidad así que ahora mismo el mecanismo es solo correo. Pero se me ocurre que pueden utilizar un servicio de lectura de correo y generar una alerta (Ens.Alert) que puedan manipular a su criterio. Aunque claro siendo una advertencia del correo es posible que haya procesos que se paren.

Hola @Yunier Gonzalez hay varias opciones. Una es hacer como dices un Backup/Restore de la BD para "jugar" con una imagen sin perjudicar los datos reales. Otra cosa que se puede hacer es utilizar un Shadow. Un Shadow replica todo lo que sucede en una BD a otra BD en otra instancia mediante el uso del journal. De esta forma tienes datos "casi" en tiempo real. En el caso de un Mirror se puede usar una replicación asíncrona para uso como Reporting.
 

@Javier Ordonez Martin 

El error, a priori parece claro, "permiso denegado". ¿Has probado a acceder mediante FTP directamente desde línea de comandos al servidor y probar que funciona correctamente? También es posible que el error se produzca porque el fichero no exista, así que si no es tema de privilegios es posible que esté buscando un fichero pero no un directorio y es por eso que salta este error. En la documentación habla solo de fichero y no de directorio.