# CopyAppAsync Method

## Overloads

| [CopyAppAsync(String, String, IEnumerable<String>)](https://help.qlik.com/en-US/sense-developer/November2024/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Hub.CopyAppAsync.htm#Qlik_Engine_Hub_CopyAppAsync_System_String_System_String_System_Collections_Generic_IEnumerable_System_String__) |  | Copies an app that is in the Qlik Sense repository.<br><br>The engine copies the app into an app entity that was previously created by the repository. |
| --- | --- | --- |
| [CopyAppAsync(AsyncHandle, String, String, IEnumerable<String>)](https://help.qlik.com/en-US/sense-developer/November2024/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Hub.CopyAppAsync.htm#Qlik_Engine_Hub_CopyAppAsync_Qlik_Engine_AsyncHandle_System_String_System_String_System_Collections_Generic_IEnumerable_System_String__) |  | Copies an app that is in the Qlik Sense repository.<br><br>The engine copies the app into an app entity that was previously created by the repository. |
| [CopyAppAsync<T>(AsyncHandle, Func<Response, T>, String, String, IEnumerable<String>)](https://help.qlik.com/en-US/sense-developer/November2024/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Hub.CopyAppAsync.htm#Qlik_Engine_Hub_CopyAppAsync__1_Qlik_Engine_AsyncHandle_System_Func_Qlik_Engine_Communication_IO_Response___0__System_String_System_String_System_Collections_Generic_IEnumerable_System_String__) |  | Copies an app that is in the Qlik Sense repository.<br><br>The engine copies the app into an app entity that was previously created by the repository. |

[](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Hub.CopyAppAsync.htm) [](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Hub.CopyAppAsync.htm)

## CopyAppAsync(String, String, IEnumerable&lt;String&gt;)

Copies an app that is in the Qlik Sense repository.

The engine copies the app into an app entity that was previously created by the repository.

### Declaration

```

          public Task<bool> CopyAppAsync([QixName("qTargetAppId")] string targetAppId, [QixName("qSrcAppId")] string srcAppId, [QixName("qIds")] IEnumerable<string> ids)
    
  
```

### Parameters

| Type | Name | Description |
| --- | --- | --- |
| System.String | targetAppId | Identifier (GUID) of the app entity in the Qlik Sense repository.<br>The app entity must have been previously created by the Qlik Sense Repository Service (QRS) API. |
| System.String | srcAppId | Identifier (GUID) of the source app in the Qlik Sense repository. |
| System.Collections.Generic.IEnumerable&lt;System.String&gt; | ids | Array of QRS identifiers.<br>The list of all objects in the app to be copied must be given. This list must contain the GUIDs of all these objects.<br>If the list of the QRS identifiers is empty, the `CopyApp` method copies all objects to the target app.<br>Script-defined variables are automatically copied when copying an app. To be able to copy variables not created via script, the GUID of each variable must be provided in the list of QRS identifiers.<br>To get the QRS identifiers of the objects in an app, you can use the QRS API. The GET method (from the QRS API) returns the identifiers of the objects in the app.<br>The following example returns the QRS identifiers of all the objects in a specified app:<br>GET /qrs/app/9c3f8634-6191-4a34-a114-a39102058d13<br>Where<br>`9c3f8634-6191-4a34-a114-a39102058d13` is the identifier of the app. |

### Returns

| Type | Description |
| --- | --- |
| System.Threading.Tasks.Task&lt;System.Boolean&gt; |  |

### Implements

[IHub.CopyAppAsync(String, String, IEnumerable<String>)](https://help.qlik.com/en-US/sense-developer/November2024/Subsystems/NetSDKAPIref/Content/Qlik.Engine.IHub.CopyAppAsync.htm#Qlik_Engine_IHub_CopyAppAsync_System_String_System_String_System_Collections_Generic_IEnumerable_System_String__)

### Remarks

This operation is possible only in Qlik Sense Enterprise.

[](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Hub.CopyAppAsync.htm) [](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Hub.CopyAppAsync.htm)

## CopyAppAsync(AsyncHandle, String, String, IEnumerable&lt;String&gt;)

Copies an app that is in the Qlik Sense repository.

The engine copies the app into an app entity that was previously created by the repository.

### Declaration

```

          public Task<bool> CopyAppAsync(AsyncHandle asyncHandle, [QixName("qTargetAppId")] string targetAppId, [QixName("qSrcAppId")] string srcAppId, [QixName("qIds")] IEnumerable<string> ids)
    
  
```

### Parameters

| Type | Name | Description |
| --- | --- | --- |
| [AsyncHandle](https://help.qlik.com/en-US/sense-developer/November2024/Subsystems/NetSDKAPIref/Content/Qlik.Engine.AsyncHandle.htm) | asyncHandle | Handle to asynchronous method request |
| System.String | targetAppId | Identifier (GUID) of the app entity in the Qlik Sense repository.<br>The app entity must have been previously created by the Qlik Sense Repository Service (QRS) API. |
| System.String | srcAppId | Identifier (GUID) of the source app in the Qlik Sense repository. |
| System.Collections.Generic.IEnumerable&lt;System.String&gt; | ids | Array of QRS identifiers.<br>The list of all objects in the app to be copied must be given. This list must contain the GUIDs of all these objects.<br>If the list of the QRS identifiers is empty, the `CopyApp` method copies all objects to the target app.<br>Script-defined variables are automatically copied when copying an app. To be able to copy variables not created via script, the GUID of each variable must be provided in the list of QRS identifiers.<br>To get the QRS identifiers of the objects in an app, you can use the QRS API. The GET method (from the QRS API) returns the identifiers of the objects in the app.<br>The following example returns the QRS identifiers of all the objects in a specified app:<br>GET /qrs/app/9c3f8634-6191-4a34-a114-a39102058d13<br>Where<br>`9c3f8634-6191-4a34-a114-a39102058d13` is the identifier of the app. |

### Returns

| Type | Description |
| --- | --- |
| System.Threading.Tasks.Task&lt;System.Boolean&gt; |  |

### Implements

[IHub.CopyAppAsync(AsyncHandle, String, String, IEnumerable<String>)](https://help.qlik.com/en-US/sense-developer/November2024/Subsystems/NetSDKAPIref/Content/Qlik.Engine.IHub.CopyAppAsync.htm#Qlik_Engine_IHub_CopyAppAsync_Qlik_Engine_AsyncHandle_System_String_System_String_System_Collections_Generic_IEnumerable_System_String__)

### Remarks

This operation is possible only in Qlik Sense Enterprise.

[](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Hub.CopyAppAsync.htm) [](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Hub.CopyAppAsync.htm)

## CopyAppAsync&lt;T&gt;(AsyncHandle, Func&lt;Response, T&gt;, String, String, IEnumerable&lt;String&gt;)

Copies an app that is in the Qlik Sense repository.

The engine copies the app into an app entity that was previously created by the repository.

### Declaration

```
public Task<T> CopyAppAsync<T>(AsyncHandle asyncHandle, Func<Response, T> onResult, [QixName("qTargetAppId")] string targetAppId, [QixName("qSrcAppId")] string srcAppId, [QixName("qIds")] IEnumerable<string> ids)
```

### Parameters

| Type | Name | Description |
| --- | --- | --- |
| [AsyncHandle](https://help.qlik.com/en-US/sense-developer/November2024/Subsystems/NetSDKAPIref/Content/Qlik.Engine.AsyncHandle.htm) | asyncHandle | Handle to asynchronous method request |
| System.Func&lt;[Response](https://help.qlik.com/en-US/sense-developer/November2024/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Communication.IO.Response.htm), T&gt; | onResult | Continuation function |
| System.String | targetAppId | Identifier (GUID) of the app entity in the Qlik Sense repository.<br>The app entity must have been previously created by the Qlik Sense Repository Service (QRS) API. |
| System.String | srcAppId | Identifier (GUID) of the source app in the Qlik Sense repository. |
| System.Collections.Generic.IEnumerable&lt;System.String&gt; | ids | Array of QRS identifiers.<br>The list of all objects in the app to be copied must be given. This list must contain the GUIDs of all these objects.<br>If the list of the QRS identifiers is empty, the `CopyApp` method copies all objects to the target app.<br>Script-defined variables are automatically copied when copying an app. To be able to copy variables not created via script, the GUID of each variable must be provided in the list of QRS identifiers.<br>To get the QRS identifiers of the objects in an app, you can use the QRS API. The GET method (from the QRS API) returns the identifiers of the objects in the app.<br>The following example returns the QRS identifiers of all the objects in a specified app:<br>GET /qrs/app/9c3f8634-6191-4a34-a114-a39102058d13<br>Where<br>`9c3f8634-6191-4a34-a114-a39102058d13` is the identifier of the app. |

### Returns

| Type | Description |
| --- | --- |
| System.Threading.Tasks.Task&lt;T&gt; |  |

### Type Parameters

| Name | Description |
| --- | --- |
| T |  |

### Implements

[IHub.CopyAppAsync<T>(AsyncHandle, Func<Response, T>, String, String, IEnumerable<String>)](https://help.qlik.com/en-US/sense-developer/November2024/Subsystems/NetSDKAPIref/Content/Qlik.Engine.IHub.CopyAppAsync.htm#Qlik_Engine_IHub_CopyAppAsync__1_Qlik_Engine_AsyncHandle_System_Func_Qlik_Engine_Communication_IO_Response___0__System_String_System_String_System_Collections_Generic_IEnumerable_System_String__)

### Remarks

This operation is possible only in Qlik Sense Enterprise.