---
title: "system.mes.changelog.getChangelogData"
id: "system-mes-changelog-getchangelogdata"
project: "MES User Manual"
url: "https://docs.sepasoft.com/articles/user-manual/system-mes-changelog-getchangelogdata"
updated: 2026-09-28T21:15:27Z
---

# system\.mes\.changelog\.getChangelogData

**Sepasoft MES Module Suite**

### getChangelogData(filter)

## 

The **getChangelogData** script function makes a blocking request that returns changelog history as an Ignition Dataset. This is useful when the result needs to be bound directly to a table component or processed using Ignition's dataset utilities. Use a [MESChangelogFilter](/articles/user-manual/meschangelogfilter) (created with [system.mes.changelog.createFilter()](/articles/user-manual/system-mes-changelog-createfilter)) to narrow the results.

### Syntax

system.mes.changelog.getChangelogData(filter)

### Required Parameters
| Parameter | Type | Description |
| --- | --- | --- |
| **filter** | [MESChangelogFilter](/articles/user-manual/meschangelogfilter) | The filter object defining search constraints. Create one with [system.mes.changelog.createFilter()](/articles/user-manual/system-mes-changelog-createfilter). Cannot be None. |
### Return Value
| Type | Description |
| --- | --- |
| Dataset | An Ignition Dataset representing the changelog history. Each row corresponds to a change event record. Returns an empty dataset when no records match the filter. |

| Dataset Column | Type | Description |
| --- | --- | --- |
| Date/Time | Date | When the change was recorded. |
| MES Object Name | String | The object's current name. |
| Historical Name | String | The object's name at the time of that row. The column is present when `showHistoricalNames(True)` was called. `MES Object Name` remains the current name. MES **3.81.13 SP3 and MES 4.83.3 SP3 and later**.<br><br><br><br>With `showHistoricalNames(True)`, Historical Name is the name at the time of the row. MES Object Name stays the current name. Leave the call out, or pass `False`, and the Historical Name column is omitted. `True` makes the gateway look up name changes for the objects in the result, including name changes that the other filter settings would leave out. |
| MES Object UUID | String | The object's UUID. |
| Change Event Type | String | The kind of change. |
| Property Path | String | The property that changed. |
| Old Value | String | The value before the change. |
| New Value | String | The value after the change. |
| Source | String | The gateway location where the change was made. |
| Changed By | String | The person name recorded for the change. |

### Scope
| Context | Availability |
| --- | --- |
| Client | Available in Vision Client and Designer scripts |
| Gateway | Available in Gateway-scoped scripts |
### Example Usage


```python
# Minimal — retrieve all changelog records as a Dataset
changelogFilter = system.mes.changelog.createFilter()
data = system.mes.changelog.getChangelogData(filter=changelogFilter)

# Realistic workflow — filter by user and populate a table component
changelogFilter = system.mes.changelog.createFilter()
changelogFilter.setChangedByNames("jsmith", "System")
changelogFilter.setDescending(True)
changelogFilter.setLimit(200)

data = system.mes.changelog.getChangelogData(filter=changelogFilter)
event.source.parent.getComponent("ChangelogTable").data = data
```


```python
changelogFilter = system.mes.changelog.createFilter()
changelogFilter.setMESObjectUUIDs('adc792ed-fce1-4fb2-80ae-fb249fc43b37')
changelogFilter.showHistoricalNames(True)

data = system.mes.changelog.getChangelogData(changelogFilter)

for row in range(data.getRowCount()):
	print data.getValueAt(row, 'MES Object Name'), data.getValueAt(row, 'Historical Name')
```


**Sepasoft MES Module Suite**