Phasor data history in OpenHistorian

Hi guys,

I just wanted to confirm something. I add a device for a while and collect history on that device. I delete that device, then add the same device with a few different parameters. Will the prior history be lost forever, or is there is a way of combining the history of the removed device and the newly added device ( being the same physical device )?

Hi jeffhill,

Unfortunately, openHistorian 2.0 relies heavily on the configuration database to manage its metadata. There is an autoincrementing integer associated with each measurement which is used as part of the key for the corresponding measurements in the historian database. By deleting the device, you delete all the metadata for that device including its original measurement IDs, and there is no way to get these back without a backup of the configuration. When you recreate the device, it creates all-new data points based on the configuration it receives via the synchrophasor protocol. This creates brand new IDs that are not linked to the original data, and there’s no way to reassociate them since the original IDs were lost when you deleted the device in the first place.

Note that there is a folder called ConfigurationCache in the openHistorian directory that maintains five consecutive backups every time the system reloads configuration. If you’ve already deleted a device and need a copy of those IDs, you should be able to find them there, assuming you haven’t reloaded configuration five times since then.


Thanks Stephen.

The reason I was asking this is because the Goose device needed to have its measurements manually added to the device, I ended up writing a program to do it for me. While testing I would delete and re-add measurements (which generated a new GUID) hence made me start thinking about how to keep history. Currently I am just backing up the Measurements table anytime a measurement is modified and then I can simply use the initially created GUID. A bit cheesy, and I haven’t tested it yet, but everything else works fine.