> For the complete documentation index, see [llms.txt](https://gebra-it.gitbook.io/wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gebra-it.gitbook.io/wiki/client-api-reference/functions/copyconfigrecordbyid.md).

# copyConfigRecordById

Creates a deep copy from a config record. Typical example is to create a copy of an "order" record, with a copy of all the "orderLines" from that source "order". Gebra Suite will use the "Cascade Copy" flag of a grid control, to decide if which referenced records will be copied.

## Parameters

1. configName
2. recordId - the id of the source record
3. additionalValues - json object of values in the target record that should be modified. e.g. an "orderDate" field. Can be null, in this case you get a 1:1 copy except the record id.

## Example Usages

Exact copy:

```javascript
let newOrder = app.copyConfigRecordById("customerOrder", 1376);
```

Copy with new date for header data and manipulating two columns of line item data:

```javascript
let newOrder = app.copyConfigRecordById("customerOrder", 1376, {
  cordOrderDate: new Date(),
  cordlnOrderQuantity: "1",
  cordlnDeliveredQuantity: null,
});
```

In both cases, input parameters "customerOrder" and 1376 translate to function parameters **configName** and **recordId**. The last input parameter in the later example is a JSON object that holds values to be modified. On the other hand, assigning null to an input parameter and to a field in a JSON object are different things.

### Return Values

The function returns "null" if the "id" is falsy or equal to "0". Otherwise, it returns the result of (internal) calling the "brixxCallEventProcessor" function with the provided arguments. The result of this function call is a "jsonData" object.
