# How to perform c-move at Series Level

**URL:** https://discourse.orthanc-server.org/t/how-to-perform-c-move-at-series-level/2749
**Category:** Google Groups archive
**Created:** [December 20, 2021, 6:37pm UTC](https://discourse.orthanc-server.org/t/how-to-perform-c-move-at-series-level/2749 "2021-12-20T18:37:22Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Christopher](https://discourse.orthanc-server.org/letter_avatar_proxy/v4/letter/c/439d5e/32.png) [@Christopher](https://discourse.orthanc-server.org/u/Christopher)
#### Post date: [December 20, 2021, 6:37pm UTC](https://discourse.orthanc-server.org/t/how-to-perform-c-move-at-series-level/2749/1 "2021-12-20T18:37:22Z")

</div>

Hi Author,  
I refer to this page [https://book.orthanc-server.com/users/rest.html#performing-c-move](https://book.orthanc-server.com/users/rest.html#performing-c-move)  
This is the command I issue to orthanc

curl -i -u orthanc:orthanc -X POST [http://localhost:8044/modalities/orthancgw/move](http://localhost:8044/modalities/orthancgw/move) --data ‘{  
“Level” : “Series”,  
“Resources” : [  
{  
“StudyInstanceUID”: “1.2.840.113543.6.6.4.7.64067529866380271256212683512383713111129”  
},  
{  
“SeriesInstanceUID”: “1.2.840.113543.6.6.4.7.64067529866380271256212683512383713111129”  
}  
],  
“TargetAet”: “ORTHANCB”,  
“Timeout”: 60  
}’

But orthanc rreturns

HTTP/1.1 400 Bad Request  
Connection: keep-alive  
Keep-Alive: timeout=1  
Content-Length: 196

{  
“HttpError” : “Bad Request”,  
“HttpStatus” : 400,  
“Message” : “Bad request”,  
“Method” : “POST”,  
“OrthancError” : “Bad request”,  
“OrthancStatus” : 8,  
“Uri” : “/modalities/orthancgw/move”  
}

The verbose log does not show anything other than  
I1221 01:29:24.831417 HttpServer.cpp:1239] (http) POST /modalities/orthancgw/move

I am not sure I understand this code which handle c-move request from api

void DicomControlUserConnection::Move(const std::string& targetAet,  
ResourceType level,  
const DicomMap& findResult)  
{  
…

case ResourceType\_Series:  
TestAndCopyTag(move, findResult, DICOM\_TAG\_STUDY\_INSTANCE\_UID);  
TestAndCopyTag(move, findResult, DICOM\_TAG\_SERIES\_INSTANCE\_UID);  
break;

In OrthancRestModalities.cpp

for (Json::Value::ArrayIndex i = 0; i \< request[KEY\_RESOURCES].size(); i++)  
{  
DicomMap resource;  
FromDcmtkBridge::FromJson(resource, request[KEY\_RESOURCES][i]);

connection.Move(targetAet, level, resource);  
}  
If it’s in for loop then how ResourceType\_Series can be check at study tag. ?  
Can you please help to show me the right body in the api ?

---

<div class="post-metadata">

### Author: ![Christopher](https://discourse.orthanc-server.org/letter_avatar_proxy/v4/letter/c/439d5e/32.png) [@Christopher](https://discourse.orthanc-server.org/u/Christopher)
#### Post date: [December 20, 2021, 6:39pm UTC](https://discourse.orthanc-server.org/t/how-to-perform-c-move-at-series-level/2749/2 "2021-12-20T18:39:39Z")

</div>

Looks like I have to post with this body

curl -i -u orthanc:orthanc -X POST [http://localhost:8044/modalities/orthancgw/move](http://localhost:8044/modalities/orthancgw/move) --data '{  
“Level” : “Series”,  
“Resources” : [  
{  
“StudyInstanceUID”: “1.2.840.113543.6.6.4.7.64067529866380271256212683512383713111129”, “SeriesInstanceUID”: “1.2.840.113543.6.6.4.7.64067529866380271256212683512383713111129”  
},  
],

“TargetAet”: “ORTHANCB”,  
“Timeout”: 60  
}’
