With Atelier moving away from storing items as XML, LoadDir() might be the wrong way to do things moving forward. ImportDir() seems the correct way of doing things as it finds all files, not just XML.

Solved this issue. It was an Atelier issue. I created this class and checked it into git and it was compiling but when we went to re-push the file it wasn't being tracked. We then re-saved and re-compiled the class and was then able to track it again. At that point Atelier pushed the compiled code up to the server.

My thoughts were that every time you compile, Atelier pushes it to the server.

So in a sense, even though Ensemble picked up that myClass was a service class I was able to add it as a production but then it failed to recognize it again...?

Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2016.2 (Build 636U) Wed Apr 13 2016 21:04:51 EDT [HealthShare Modules:Core:14.02.2415 + Linkage Engine:14.02.2415 + Patient Index:14.02.2415 + Clinical Viewer:14.02.2415 + Active Analytics:14.02.2415]

I changed the output to mimic what you did earlier but to no avail. I agree that the behavior would not have been indictive of the problem. The confusing part about this problem is that when the ..OnProcessInput() is called in Ens.BusinessService and heads to it's own method rather than mine, the error returned says that my class and method is on the stack....

Either way, the process is not even jumping into my method as the first line is setting a global which to this second remains empty.

Interesting indeed. I am using 2016.2.

In Ensemble I have the myClass set up as a service listening on port 12016 and all the other settings are the default.

The code in the method is just:

Method OnProcessInput(pInput As %Stream.GlobalCharacter, Output pOutput As %Stream.Object = {$$$NULLOREF}) As %Status
    set ^pRR51616($I(^pRR51616)) = "onProcessInput"
    // Create the Provide and Register message
    // Automatically assigns a document unique ID
    set tMessage = ##class(HS.Message.IHE.XDSb.ProvideAndRegisterRequest).%New()
    set tMessage.SourceId = ""
    set tDocument = ##class(HS.Message.IHE.XDSb.Document).%New()
    set ^pRR51616($I(^pRR51616)) = "Pre-CopyFrom"
    set ^pRR51616($I(^pRR51616)) = tDocument.BodyCharacter.CopyFrom(pInput)
    set ^pRR51616($I(^pRR51616)) = "Document Created"
    // Set required minimum document metadata
    set tDocument.MimeType = "text/xml"
    set tDocument.FormatCode = ##class(HS.IHE.XDSb.Types.CodedValue).Create(
        "na", "IHE PCC", "Summary of Care")
    set tDocument.HealthcareFacilityTypeCode = ##class(HS.IHE.XDSb.Types.CodedValue).Create(
        "Outpatient", "Connect-a-thon healthcareFacilityTypeCodes", "Outpatient")
    set tDocument.PracticeSettingCode = ##class(HS.IHE.XDSb.Types.CodedValue).Create(
        "General Medicine", "Connect-a-thon practiceSettingCodes", "General Medicine")
    do tMessage.Documents.Insert(tDocument)
    set ^pRR51616($I(^pRR51616)) = "PnR request created"
    // Send Provide and Register synchronously
    set pOutput = ##class(HS.Test.Service).SendSync(tMessage, .rr)
    Quit $$$OK

With the globals in there I would be able to tell if the method was even being touched.

Great code but it doesn't touch my problem. The problem being that when Ens.BusinessService calls ..OnProcessInput(.pInput, .pOutput, .pHint) in ProcessInput() it ends up calling the OnProcessInput defined in Ens.BusinessService rather than the override method that I defined in myClass.