ActionAdapter does not publish frames

I have configured an ActionAdapter and i can see in the OpenPDC console this adapter is disposed but running, but when i tried to debbug the code, it never go into the PublishFrame function.

i have tried changed the .netFramework, use another OpenPDC version, send and read constant but nothing work to me.

Could you tell me what can i check?

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.ComponentModel;
using GSF.TimeSeries;
using GSF.TimeSeries.Adapters;
using GSF.Diagnostics;

namespace RAG_Adapter_OPDC2942
[Description(“RAG Adapter: Este es el adaptador para la prueba del Core para OpenPDC versión 2.9.49”)]
public class Rag : ActionAdapterBase
public int multiplicador = 2;

    //public override bool SupportsTemporalProcessing => throw new NotImplementedException();

    public override bool SupportsTemporalProcessing => false;

    protected override void Dispose(bool disposing)

        OnStatusMessage(MessageLevel.Info, "Both inputs were not available - could not calculate :-(");
        //OnStatusMessage(MessageLevel.Info, fasor1.Value.ToString());
        OnStatusMessage(MessageLevel.Info, multiplicador.ToString());


        // Kill my database connections, etc...

    public override void Initialize()

    OnStatusMessage(MessageLevel.Warning, "Logré inicializarme otra vez");

    protected override void PublishFrame(IFrame frame, int index)
        IMeasurement fasor1 = frame.Measurements.Values.ElementAtOrDefault(0);
        IMeasurement fasor2 = frame.Measurements.Values.ElementAtOrDefault(1);
        IMeasurement fasor3 = frame.Measurements.Values.ElementAtOrDefault(2);

        double resultado1 = (fasor1.Value + fasor2.Value + fasor3.Value) * multiplicador;

        bool buenacalidad = fasor1.TimestampQualityIsGood() && fasor1.ValueQualityIsGood() && fasor2.TimestampQualityIsGood() && fasor2.ValueQualityIsGood() && fasor3.TimestampQualityIsGood() && fasor3.ValueQualityIsGood();

        //if(resultado1 > 120 || resultado1 < 120)
        IMeasurement disparo = Measurement.Clone(OutputMeasurements[0], resultado1, frame.Timestamp);

        //disparo.StateFlags = buenacalidad ? MeasurementStateFlags.Normal : MeasurementStateFlags.BadData;

        OnNewMeasurements(new[] { disparo });
        //throw new NotImplementedException();



There are several important configuration parameters when dealing with an ActionAdapter, i.e., the FramesPerSecond, LeadTime, LagTime, InputMeasurementKeys and OutputMeasurements

See the following: openPDC/ at master · GridProtectionAlliance/openPDC · GitHub

Here are various ActionAdapter examples:

Also, here is another good example of an adapter, this happens to be an InputAdapter, but the most concepts still apply: GitHub - GridProtectionAlliance/CSVLimitsLoader: GSF Time-series Library Adapter for Loading EMS Limits from a CSV File

Here are some good documentation links:

Hi Ritchie, thank you for your reply.

I have an ActionAdapter it was made following the steps you sent me, but when i inicialized the Adapter it show me this error:

[Action Adapter Collection] Failed to initialize adapter RAG_GPA: The given key was not present in the dictionary.

I was looking for this dictionary or the connection string and i did not find, could yo help me plese?

I may not be able to help much without source code, but it sounds like you are missing some connection string parameters, e.g.:

FramesPerSecond=30; LagTime=5.0; LeadTime=5.0;
InputMeasurementKeys=FILTER TOP 2 ActiveMeasurements WHERE SignalType='VPHA'