Set a specific changed date for a node
The code you are using doesn't work as expected because you are first setting $node-&gt;changed, and then calling node_save(), which then unconditionally sets its value.

The code it uses is the following one.

// Set the timestamp fields.
if (empty($node-&gt;created)) {
  $node-&gt;created = REQUEST_TIME;
}
// The changed timestamp is always updated for bookkeeping purposes,
// for example: revisions, searching, etc.
$node-&gt;changed = REQUEST_TIME;

$node-&gt;timestamp = REQUEST_TIME;
$update_node = TRUE;

// Let modules modify the node before it is saved to the database.
module_invoke_all('node_presave', $node);
module_invoke_all('entity_presave', $node, 'node');


If you want to set $node-&gt;changed, you would need to implement hook_node_presave(), which is invoked right after node_save() sets 
$node-&gt;changed.
For example, in the code you are showing, I would add $node-&gt;release_change_date = strtotime($data-&gt;Release-&gt;LastChangeDate);; your implementation of hook_node_presave() would then use $node-&gt;release_change_date to set $node-&gt;changed ($node-&gt;changed = $node-&gt;release_change_date).