Repository: CS-SI/eodag
Pull request #1149 (2024-05-22 09:12:59)

Use OData API for `creodias` & `cop_dataspace`
Use `OData` API back for `creodias`, `creodias_s3` and `cop_dataspace`

github-actions[bot]: ## Test Results
  1 files   -     3    1 suites   - 3   1m 12s :stopwatch: - 3m 55s
530 tests ±    0  524 :white_check_mark:  -     3  3 :zzz: ± 0  3 :x: +3 
530 runs   - 1 590  524 :white_check_mark:  - 1 502  3 :zzz:  - 91  3 :x: +3 

For more details on these failures, see [this check](https://github.com/CS-SI/eodag/runs/25268945146).

Results for commit a4ccc4f3. ± Comparison against base commit 9764ac8d.

[test-results]:data:application/gzip;base64,H4sIAPy3TWYC/1WMyw7CIBAAf6Xh7EEXqNSfMWQpyca2GB6nxn93qbG0x5lJZhWepjGJR3e7dCIVyju4Em2msDDegZlLrk3L65+eqSBWBaqpF71ZyV14S9NJjDGGyKZuYlnas8J5+TPtuPFhuPHxh2GeKTMIqxBReWnAeoW9hkEaj70HCQ6cVK63ZtDKic8X2eBP5QQBAAA=

github-actions[bot]: ![badge](https://raw.githubusercontent.com/CS-SI/eodag/_xml_coverage_reports/data/1147-use-odata-api-for-creodias-cop_dataspace/./badge.svg)


## Code Coverage (Ubuntu)

<details>


```
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                     11       0  100.00%
cli.py                                         303      51  83.17%   60, 646-692, 794-845, 849
config.py                                      342      27  92.11%   81-83, 92, 100, 104-106, 179, 191, 445-447, 511-514, 561-562, 571-572, 651, 720-725, 727
crunch.py                                        6       6  0.00%    18-24
api/__init__.py                                  1       0  100.00%
api/core.py                                    739      76  89.72%   88-97, 370, 597, 641-644, 682, 787, 791-796, 822, 892, 969, 1082, 1172-1184, 1224, 1226, 1230, 1253, 1257-1268, 1281-1287, 1377-1380, 1409-1429, 1486, 1503-1506, 1518-1521, 1889, 1922-1928, 2193, 2197-2200, 2214-2216, 2251
api/search_result.py                            44       6  86.36%   33-35, 70, 79, 86, 100
api/product/__init__.py                          6       0  100.00%
api/product/_assets.py                          44       5  88.64%   27-29, 79, 129
api/product/_product.py                        203      32  84.24%   52-59, 63-65, 169-176, 260-261, 343, 372, 433, 447-450, 463, 487-490, 533-539
api/product/metadata_mapping.py                677      84  87.59%   67-69, 130-132, 233, 265-266, 312-313, 323-335, 337, 348, 354-366, 407-410, 447, 468-471, 494, 502-503, 579-580, 604-605, 611-614, 629-630, 779, 825, 999-1004, 1135, 1149-1169, 1189, 1194, 1304, 1326, 1340, 1353-1372, 1411, 1463, 1501-1505, 1524
api/product/drivers/__init__.py                  6       0  100.00%
api/product/drivers/base.py                      8       2  75.00%   23, 41
plugins/__init__.py                              1       0  100.00%
plugins/base.py                                 23       3  86.96%   25, 48, 55
plugins/manager.py                             132      14  89.39%   49-51, 105-110, 156, 195, 215, 241, 280-281
plugins/apis/__init__.py                         1       0  100.00%
plugins/apis/base.py                             4       0  100.00%
plugins/apis/ecmwf.py                           98      15  84.69%   47-55, 156-158, 205-206, 232-234
plugins/apis/usgs.py                           172      36  79.07%   59-64, 128, 201, 235, 270-272, 277, 303-304, 309, 339-346, 357-362, 384-390, 392-398, 421
plugins/authentication/__init__.py               7       1  85.71%   31
plugins/authentication/aws_auth.py              20       2  90.00%   25-27
plugins/authentication/base.py                  19       3  84.21%   26, 34, 47
plugins/authentication/generic.py               16       3  81.25%   28, 40, 50
plugins/authentication/header.py                17       1  94.12%   27
plugins/authentication/keycloak.py              88      17  80.68%   32-34, 159-160, 190-212, 238-243
plugins/authentication/oauth.py                 15       8  46.67%   25, 32-34, 38-41
plugins/authentication/openid_connect.py       117      11  90.60%   40-42, 153, 159, 172-173, 184-189
plugins/authentication/qsauth.py                36       2  94.44%   32, 83
plugins/authentication/sas_auth.py              49       2  95.92%   32, 76
plugins/authentication/token.py                 90      17  81.11%   35-37, 79, 107, 109, 131-143, 198-201
plugins/authentication/token_exchange.py        35      19  45.71%   74-80, 92-120
plugins/crunch/__init__.py                       1       0  100.00%
plugins/crunch/base.py                          10       2  80.00%   25, 38
plugins/crunch/filter_date.py                   62      15  75.81%   30, 53-58, 72, 81, 90, 93, 105-107, 116-118, 125
plugins/crunch/filter_latest_intersect.py       50      10  80.00%   32-34, 51-52, 71, 80-83, 85, 92-95
plugins/crunch/filter_latest_tpl_name.py        33       2  93.94%   28, 86
plugins/crunch/filter_overlap.py                68      17  75.00%   28-30, 33, 82-85, 91, 99, 110-126
plugins/crunch/filter_property.py               33       8  75.76%   29, 60-65, 68-69, 85-89
plugins/download/__init__.py                     1       0  100.00%
plugins/download/aws.py                        492     165  66.46%   77-83, 272, 285, 352-355, 369-373, 419-421, 425, 459-460, 466-470, 503, 538, 542, 549, 579-587, 591, 629-637, 644-646, 687-761, 779-840, 851-856, 872-885, 914, 929-931, 934, 944-952, 960-973, 983-1002, 1009-1021, 1062, 1088, 1133-1135, 1355
plugins/download/base.py                       260      57  78.08%   58-64, 145, 180, 319-320, 340-346, 377-381, 387-388, 432, 435-449, 461, 465, 538-542, 572-573, 581-598, 605-613, 615-619, 666, 688, 710, 718
plugins/download/creodias_s3.py                 17       9  47.06%   44-58
plugins/download/http.py                       529     132  75.05%   85-91, 124, 203-213, 215-216, 251-254, 318-321, 323-324, 331-336, 354-369, 386-388, 400, 448, 455-461, 479, 493, 507, 515-517, 533-538, 549, 567, 609-613, 635, 675, 720, 734-740, 776-837, 855, 888-897, 923-924, 951-956, 962, 978, 995-996, 1023-1024, 1031, 1093-1099, 1154-1155, 1161, 1171, 1237, 1241, 1255-1271
plugins/download/s3rest.py                     118      27  77.12%   55-58, 121, 162, 197, 227-234, 237-239, 243, 256-262, 270-271, 274-278, 301, 322-325
plugins/search/__init__.py                       1       0  100.00%
plugins/search/base.py                         127       9  92.91%   49-54, 108, 112, 275, 295, 378
plugins/search/build_search_result.py          179      24  86.59%   62, 97, 142-143, 149, 160, 296-299, 333, 390-407, 469, 472, 482, 499, 527, 529
plugins/search/creodias_s3.py                   54       3  94.44%   55, 73, 107
plugins/search/csw.py                          107      83  22.43%   43-45, 57-58, 62-63, 74-122, 128-141, 149-181, 199-240
plugins/search/data_request_search.py          197      65  67.01%   52, 89-92, 108, 120, 124-125, 139, 144, 149, 156, 169-172, 226-227, 231, 241-247, 252, 278-281, 289-300, 317, 319, 326-327, 329-330, 348-352, 385, 392, 403, 416, 422-434, 439
plugins/search/qssearch.py                     559      58  89.62%   96, 368-374, 382-383, 490-496, 551-554, 627-628, 669, 688, 703, 756, 777, 780-781, 790, 801, 810, 833, 895-900, 904-905, 933, 1004, 1051, 1127-1131, 1197-1198, 1219, 1244-1256, 1263, 1294-1295, 1306-1312, 1355, 1370, 1390, 1492
plugins/search/static_stac_search.py            47       3  93.62%   39-40, 82
rest/__init__.py                                 5       2  60.00%   21-22
rest/core.py                                   206      16  92.23%   66-72, 261, 345, 605, 607, 610-612, 684, 691-695
rest/server.py                                 299      54  81.94%   80-81, 107, 130-131, 244-246, 262, 302-303, 315-331, 423-428, 460, 627-634, 667, 711-712, 803-805, 822-827, 858, 860, 864-865, 869-870
rest/stac.py                                   436      86  80.28%   60-62, 272, 294, 366, 403-405, 428, 463-464, 550-595, 640, 660-661, 841, 906-908, 1127, 1137-1149, 1162-1184, 1198-1243, 1402-1403
rest/types/__init__.py                           1       0  100.00%
rest/types/eodag_search.py                     185       9  95.14%   52-55, 231-235, 288, 291, 359
rest/types/stac_queryables.py                   32       2  93.75%   28, 116
rest/types/stac_search.py                      122      10  91.80%   48-51, 167, 182-184, 192, 196
rest/utils/__init__.py                          96      13  86.46%   51, 108-109, 128-130, 182, 192-206
rest/utils/cql_evaluate.py                      48       5  89.58%   69, 76, 90, 97, 105
rest/utils/rfc3339.py                           31       3  90.32%   78, 90, 92
types/__init__.py                              111      12  89.19%   53, 70, 129-132, 199, 214-218, 245, 250, 258
types/bbox.py                                   43      19  55.81%   46-61, 72-74, 85-87, 99-101, 113-115, 123
types/download_args.py                           9       0  100.00%
types/queryables.py                             81       0  100.00%
types/search_args.py                            70      18  74.29%   60-64, 71-88, 104
types/whoosh.py                                 15       0  100.00%
utils/__init__.py                              502      42  91.63%   84, 89, 110-112, 193-194, 203-230, 233, 247, 329-333, 409-413, 434-436, 518, 533, 571-572, 968-971, 979-980, 1021-1022, 1102, 1186, 1204, 1380
utils/constraints.py                           123      42  65.85%   31, 84-93, 134, 139, 143, 154, 177-178, 189-197, 206, 220-236, 245-256
utils/exceptions.py                             37       2  94.59%   23, 93
utils/import_system.py                          30      20  33.33%   27, 67-81, 93-103
utils/logging.py                                29       1  96.55%   123
utils/notebook.py                               44      23  47.73%   25-29, 36-41, 58-62, 72-78, 83-87
utils/rest.py                                   28       1  96.43%   49
utils/stac_reader.py                            91      28  69.23%   55-56, 63-86, 93-95, 99, 141, 155-158
TOTAL                                         8949    1540  82.79%
```

</details>


### Diff against develop

```
Filename      Stmts    Miss  Cover
----------  -------  ------  --------
TOTAL             0       0  +100.00%
```


Results for commit: c49ce1e8e80d2b366698c26cff5c763a18950ea9


_Minimum allowed coverage is `70%`_


:recycle: This comment has been updated with latest results


<!-- Sticky Pull Request Commentartifacts/unit-test-results-python3.12-ubuntu-latest/coverage.xml -->
github-actions[bot]: ![badge](https://raw.githubusercontent.com/CS-SI/eodag/_xml_coverage_reports_win/data/1147-use-odata-api-for-creodias-cop_dataspace/./badge.svg)


## Code Coverage (Windows)

<details>


```
Filename                                     Stmts    Miss  Cover    Missing
-----------------------------------------  -------  ------  -------  -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
__init__.py                                     11       0  100.00%
cli.py                                         303      51  83.17%   60, 646-692, 794-845, 849
config.py                                      342      28  91.81%   81-83, 92, 100, 104-106, 179, 191, 445-447, 511-514, 561-562, 571-572, 651, 685, 720-725, 727
crunch.py                                        6       6  0.00%    18-24
api/__init__.py                                  1       0  100.00%
api/core.py                                    739      76  89.72%   88-97, 370, 597, 641-644, 682, 787, 791-796, 822, 892, 969, 1082, 1172-1184, 1224, 1226, 1230, 1253, 1257-1268, 1281-1287, 1377-1380, 1409-1429, 1486, 1503-1506, 1518-1521, 1889, 1922-1928, 2193, 2197-2200, 2214-2216, 2251
api/search_result.py                            44       6  86.36%   33-35, 70, 79, 86, 100
api/product/__init__.py                          6       0  100.00%
api/product/_assets.py                          44       5  88.64%   27-29, 79, 129
api/product/_product.py                        203      32  84.24%   52-59, 63-65, 169-176, 260-261, 343, 372, 433, 447-450, 463, 487-490, 533-539
api/product/metadata_mapping.py                677      85  87.44%   67-69, 130-132, 233, 265-266, 312-313, 323-335, 337, 348, 354-366, 407-410, 447, 468-471, 494, 502-503, 579-580, 604-605, 611-614, 629-630, 779, 825, 999-1004, 1135, 1149-1169, 1189, 1194, 1304, 1326, 1340, 1353-1372, 1411, 1463, 1486, 1501-1505, 1524
api/product/drivers/__init__.py                  6       0  100.00%
api/product/drivers/base.py                      8       2  75.00%   23, 41
plugins/__init__.py                              1       0  100.00%
plugins/base.py                                 23       4  82.61%   25, 48, 55, 68
plugins/manager.py                             132      14  89.39%   49-51, 105-110, 156, 195, 215, 241, 280-281
plugins/apis/__init__.py                         1       0  100.00%
plugins/apis/base.py                             4       0  100.00%
plugins/apis/ecmwf.py                           98      15  84.69%   47-55, 156-158, 205-206, 232-234
plugins/apis/usgs.py                           172      36  79.07%   59-64, 128, 201, 235, 270-272, 277, 303-304, 309, 339-346, 357-362, 384-390, 392-398, 421
plugins/authentication/__init__.py               7       1  85.71%   31
plugins/authentication/aws_auth.py              20       2  90.00%   25-27
plugins/authentication/base.py                  19       3  84.21%   26, 34, 47
plugins/authentication/generic.py               16       3  81.25%   28, 40, 50
plugins/authentication/header.py                17       1  94.12%   27
plugins/authentication/keycloak.py              88      17  80.68%   32-34, 159-160, 190-212, 238-243
plugins/authentication/oauth.py                 15       8  46.67%   25, 32-34, 38-41
plugins/authentication/openid_connect.py       117      11  90.60%   40-42, 153, 159, 172-173, 184-189
plugins/authentication/qsauth.py                36       2  94.44%   32, 83
plugins/authentication/sas_auth.py              49       2  95.92%   32, 76
plugins/authentication/token.py                 90      17  81.11%   35-37, 79, 107, 109, 131-143, 198-201
plugins/authentication/token_exchange.py        35      19  45.71%   74-80, 92-120
plugins/crunch/__init__.py                       1       0  100.00%
plugins/crunch/base.py                          10       2  80.00%   25, 38
plugins/crunch/filter_date.py                   62      15  75.81%   30, 53-58, 72, 81, 90, 93, 105-107, 116-118, 125
plugins/crunch/filter_latest_intersect.py       50      35  30.00%   32-34, 48-53, 69-114
plugins/crunch/filter_latest_tpl_name.py        33       2  93.94%   28, 86
plugins/crunch/filter_overlap.py                68      17  75.00%   28-30, 33, 82-85, 91, 99, 110-126
plugins/crunch/filter_property.py               33       8  75.76%   29, 60-65, 68-69, 85-89
plugins/download/__init__.py                     1       0  100.00%
plugins/download/aws.py                        492     165  66.46%   77-83, 272, 285, 352-355, 369-373, 419-421, 425, 459-460, 466-470, 503, 538, 542, 549, 579-587, 591, 629-637, 644-646, 687-761, 779-840, 851-856, 872-885, 914, 929-931, 934, 944-952, 960-973, 983-1002, 1009-1021, 1062, 1088, 1133-1135, 1355
plugins/download/base.py                       260      59  77.31%   58-64, 145, 180, 250-252, 319-320, 340-346, 377-381, 387-388, 432, 435-449, 461, 465, 538-542, 572-573, 581-598, 605-613, 615-619, 666, 688, 710, 718
plugins/download/creodias_s3.py                 17       9  47.06%   44-58
plugins/download/http.py                       529     132  75.05%   85-91, 124, 203-213, 215-216, 251-254, 318-321, 323-324, 331-336, 354-369, 386-388, 400, 448, 455-461, 479, 493, 507, 515-517, 533-538, 549, 567, 609-613, 635, 675, 720, 734-740, 776-837, 855, 888-897, 923-924, 951-956, 962, 978, 995-996, 1023-1024, 1031, 1093-1099, 1154-1155, 1161, 1171, 1237, 1241, 1255-1271
plugins/download/s3rest.py                     118      27  77.12%   55-58, 121, 162, 197, 227-234, 237-239, 243, 256-262, 270-271, 274-278, 301, 322-325
plugins/search/__init__.py                       1       0  100.00%
plugins/search/base.py                         127       9  92.91%   49-54, 108, 112, 275, 295, 378
plugins/search/build_search_result.py          179      31  82.68%   62, 97, 142-143, 149, 160, 296-299, 333, 390-407, 469, 472, 482, 499, 519-534
plugins/search/creodias_s3.py                   54       3  94.44%   55, 73, 107
plugins/search/csw.py                          107      83  22.43%   43-45, 57-58, 62-63, 74-122, 128-141, 149-181, 199-240
plugins/search/data_request_search.py          197      65  67.01%   52, 89-92, 108, 120, 124-125, 139, 144, 149, 156, 169-172, 226-227, 231, 241-247, 252, 278-281, 289-300, 317, 319, 326-327, 329-330, 348-352, 385, 392, 403, 416, 422-434, 439
plugins/search/qssearch.py                     559      82  85.33%   96, 368-374, 382-383, 490-496, 551-554, 627-628, 669, 688, 703, 756, 777, 780-781, 790, 801, 810, 833, 895-900, 904-905, 933, 1004, 1051, 1127-1131, 1197-1198, 1219, 1244-1256, 1263, 1294-1295, 1306-1312, 1355, 1370, 1390, 1452-1521
plugins/search/static_stac_search.py            47       3  93.62%   39-40, 82
rest/__init__.py                                 5       2  60.00%   21-22
rest/core.py                                   206      95  53.88%   66-72, 153, 155, 157, 163-164, 185-193, 199-205, 252-306, 319-355, 505-536, 554, 604-643, 684, 691-695
rest/server.py                                 299     299  0.00%    18-883
rest/stac.py                                   436     145  66.74%   60-62, 214, 272, 294, 366, 403-405, 428, 463-464, 550-595, 640, 648-649, 653-661, 783, 841, 906-908, 925-927, 935-937, 950-952, 966-983, 993-1014, 1024-1046, 1054-1071, 1094-1117, 1127, 1137-1149, 1162-1184, 1198-1243, 1396-1422
rest/types/__init__.py                           1       0  100.00%
rest/types/eodag_search.py                     185      18  90.27%   52-55, 231-235, 268-270, 288, 291, 297, 301, 359, 371-374
rest/types/stac_queryables.py                   32       6  81.25%   28, 55-60, 116
rest/types/stac_search.py                      122      12  90.16%   48-51, 167, 182-184, 192, 196, 240, 243
rest/utils/__init__.py                          96      31  67.71%   51, 79-85, 105, 108-109, 128-130, 143, 150, 175-183, 190-211
rest/utils/cql_evaluate.py                      48       5  89.58%   69, 76, 90, 97, 105
rest/utils/rfc3339.py                           31       5  83.87%   73-74, 78, 90, 92
types/__init__.py                              111      36  67.57%   53, 66-70, 81-93, 120-122, 129-132, 172, 199, 209-221, 226, 245, 250, 258, 268
types/bbox.py                                   43      19  55.81%   46-61, 72-74, 85-87, 99-101, 113-115, 123
types/download_args.py                           9       0  100.00%
types/queryables.py                             81       0  100.00%
types/search_args.py                            70      18  74.29%   60-64, 71-88, 104
types/whoosh.py                                 15       0  100.00%
utils/__init__.py                              502      43  91.43%   84, 89, 110-112, 193-194, 203-230, 233, 247, 329-333, 409-413, 434-436, 518, 533, 571-572, 968-971, 979-980, 1021-1022, 1102, 1185-1186, 1204, 1380
utils/constraints.py                           123      42  65.85%   31, 84-93, 134, 139, 143, 154, 177-178, 189-197, 206, 220-236, 245-256
utils/exceptions.py                             37       2  94.59%   23, 93
utils/import_system.py                          30      20  33.33%   27, 67-81, 93-103
utils/logging.py                                29       1  96.55%   123
utils/notebook.py                               44      23  47.73%   25-29, 36-41, 58-62, 72-78, 83-87
utils/rest.py                                   28       1  96.43%   49
utils/stac_reader.py                            91      28  69.23%   55-56, 63-86, 93-95, 99, 141, 155-158
TOTAL                                         8949    2044  77.16%
```

</details>


### Diff against develop

```
Filename      Stmts    Miss  Cover
----------  -------  ------  --------
TOTAL             0       0  +100.00%
```


Results for commit: c49ce1e8e80d2b366698c26cff5c763a18950ea9


_Minimum allowed coverage is `70%`_


:recycle: This comment has been updated with latest results


<!-- Sticky Pull Request Commentartifacts/unit-test-results-python3.12-windows-latest/coverage.xml -->

Patch:
diff --git a/eodag/plugins/search/creodias_s3.py b/eodag/plugins/search/creodias_s3.py
index e38ae49e..74b66f09 100644
--- a/eodag/plugins/search/creodias_s3.py
+++ b/eodag/plugins/search/creodias_s3.py
@@ -26,7 +26,7 @@ from botocore.exceptions import BotoCoreError
 from eodag.api.product import AssetsDict, EOProduct  # type: ignore
 from eodag.config import PluginConfig
 from eodag.plugins.authentication.aws_auth import AwsAuth
-from eodag.plugins.search.qssearch import QueryStringSearch
+from eodag.plugins.search.qssearch import ODataV4Search
 from eodag.utils import guess_file_type
 from eodag.utils.exceptions import AuthenticationError, MisconfiguredError, RequestError
 
@@ -110,7 +110,7 @@ def _update_assets(product: EOProduct, config: PluginConfig, auth: AwsAuth):
             raise RequestError(f"assets for product {prefix} could not be found") from e
 
 
-class CreodiasS3Search(QueryStringSearch):
+class CreodiasS3Search(ODataV4Search):
     """
     Search on creodias and adapt results to s3
     """
diff --git a/eodag/resources/providers.yml b/eodag/resources/providers.yml
index 92ee1a5a..e3b26194 100644
--- a/eodag/resources/providers.yml
+++ b/eodag/resources/providers.yml
@@ -884,125 +884,153 @@
     - host
   url: https://creodias.eu/
   search: !plugin
-    type: QueryStringSearch
-    api_endpoint: 'http://datahub.creodias.eu/resto/api/collections/{collection}/search.json'
+    type: ODataV4Search
+    api_endpoint: 'https://datahub.creodias.eu/odata/v1/Products'
     need_auth: false
-    timeout: 60
+    timeout: 120
     ssl_verify: true
+    dont_quote:
+      - '['
+      - ']'
+      - '$'
+      - '='
+      - '&'
+      - ':'
     pagination:
-      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1'
-      total_items_nb_key_path: '$.properties.totalResults'
+      next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets&$count=True'
+      total_items_nb_key_path: '$."@odata.count"'
       max_items_per_page: 1_000
     sort:
       sort_by_default:
         - !!python/tuple [startTimeFromAscendingNode, ASC]
-      sort_by_tpl: '&sortParam={sort_param}&sortOrder={sort_order}'
+      sort_by_tpl: '&$orderby={sort_param} {sort_order}'
       sort_param_mapping:
-        startTimeFromAscendingNode: startDate
-        completionTimeFromAscendingNode: completionDate
-        publicationDate: published
+        startTimeFromAscendingNode: ContentDate/Start
+        completionTimeFromAscendingNode: ContentDate/End
+        publicationDate: PublicationDate
+        modificationDate: ModificationDate
       sort_order_mapping:
         ascending: asc
         descending: desc
       max_sort_params: 1
+    results_entry: 'value'
+    free_text_search_operations:
+      $filter:
+        union: ' or '
+        wrapper: '{}'
+        operations:
+          and:
+            - "Collection/Name eq '{collection}'"
+            - "OData.CSC.Intersects(area=geography'{geometry#to_ewkt}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq '{productType}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformShortName' and att/OData.CSC.StringAttribute/Value eq '{platform}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformSerialIdentifier' and att/OData.CSC.StringAttribute/Value eq '{platformSerialIdentifier}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'spatialResolution' and att/OData.CSC.StringAttribute/Value eq '{resolution}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'authority' and att/OData.CSC.StringAttribute/Value eq '{organisationName}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'orbitNumber' and att/OData.CSC.StringAttribute/Value eq '{orbitNumber}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'orbitDirection' and att/OData.CSC.StringAttribute/Value eq '{orbitDirection}')"
+            - "Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le {cloudCover})"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'operationalMode' and att/OData.CSC.StringAttribute/Value eq '{sensorMode}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'polarisationChannels' and att/OData.CSC.StringAttribute/Value eq '{polarizationChannels}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'tileId' and att/OData.CSC.StringAttribute/Value eq '{tileIdentifier}')"
+            - 'ContentDate/Start gt {startTimeFromAscendingNode#to_iso_utc_datetime}'
+            - 'ContentDate/End lt {completionTimeFromAscendingNode#to_iso_utc_datetime}'
+            - contains(Name,'{id}')
     discover_metadata:
       auto_discovery: true
       metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$'
-      search_param: '{metadata}={{{metadata}}}'
-      metadata_path: '$.properties.*'
+      search_param:
+        free_text_search_operations:
+          $filter:
+            operations:
+              and:
+                -  "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq '{metadata}' and att/OData.CSC.StringAttribute/Value eq '{{{metadata}}}')"
+      metadata_path: '$.Attributes.*'
     discover_product_types:
       fetch_url: null
+    per_product_metadata_query: false
+    metadata_pre_mapping:
+      metadata_path: '$.Attributes'
+      metadata_path_id: 'Name'
+      metadata_path_value: 'Value'
     metadata_mapping:
-      uid: '$.id'
+      # Opensearch resource identifier within the search engine context (in our case
+      # within the context of the data provider)
+      # Queryable parameters are set with null as 1st configuration list value to mark them as queryable,
+      #   but `free_text_search_operations.$filter.operations.and` entries are then used instead.
+      uid: '$.Id'
+      # OpenSearch Parameters for Collection Search (Table 3)
       productType:
-        - productType
-        - '$.properties.productType'
-      platform: '$.properties.collection'
+        - null
+        - '$.Attributes.productType'
+      platform:
+        - null
+        - '$.Attributes.platformShortName'
       platformSerialIdentifier:
-        - platform
-        - '$.properties.platform'
+        - null
+        - '$.Attributes.platformSerialIdentifier'
       instrument:
-        - instrument
-        - '$.properties.instrument'
+        - null
+        - '$.Attributes.instrumentShortName'
       processingLevel:
-        - processingLevel
-        - '$.properties.processingLevel'
+        - null
+        - '$.Attributes.processingLevel'
       # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
-      title: '{$.properties.title#remove_extension}'
-      topicCategory: '$.properties.topicCategory'
-      keyword: '$.properties.keywords'
-      abstract: '$.properties.description'
+      title: '$.Name'
       resolution:
-        - 'resolution'
-        - '$.properties.resolution'
+        - null
+        - '$.Attributes.spatialResolution'
       organisationName:
-        - 'organisationName'
-        - '$.properties.organisationName'
-      publicationDate: '$.properties.published'
-      accessConstraint: '$.properties.license'
-
+        - null
+        - '$.Attributes.authority'
+      publicationDate: '$.PublicationDate'
       # OpenSearch Parameters for Product Search (Table 5)
-      parentIdentifier:
-        - 'parentIdentifier'
-        - '$.properties.parentIdentifier'
-      acquisitionType: '$.properties.acquisitionType'
       orbitNumber:
-        - 'orbitNumber'
-        - '$.properties.orbitNumber'
+        - null
+        - '$.Attributes.orbitNumber'
       orbitDirection:
-        - 'orbitDirection'
-        - '$.properties.orbitDirection'
-      swathIdentifier:
-        - 'swath'
-        - '$.properties.swath'
+        - null
+        - '$.Attributes.orbitDirection'
       cloudCover:
-        - 'cloudCover=[0,{cloudCover}]'
-        - '$.properties.cloudCover'
-      snowCover:
-        - 'snowCover=[0,{snowCover}]'
-        - '$.properties.snowCover'
-      productVersion: '$.properties.version'
-      productQualityStatus: '$.properties.onlineQualityCheck'
-      processorName: '$.properties.processingName'
-      processingCenter: '$.properties.processingCenter'
-      creationDate: '$.properties.dhusIngestDate'
-      modificationDate: '$.properties.updated'
+        - null
+        - '$.Attributes.cloudCover'
+      modificationDate: '$.ModificationDate'
       sensorMode:
-        - 'sensorMode'
-        - '$.properties.sensorMode'
+        - null
+        - '$.Attributes.operationalMode'
       # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
       startTimeFromAscendingNode:
-        - startDate
-        - '$.properties.startDate'
+        - null
+        - '$.ContentDate.Start'
       completionTimeFromAscendingNode:
-        - completionDate
-        - '$.properties.completionDate'
-      polarizationMode:
-        - 'polarisation'
-        - '$.properties.polarisation'
-
+        - null
+        - '$.ContentDate.End'
+      polarizationChannels:
+        - null
+        - '$.Attributes.polarisationChannels'
       # Custom parameters (not defined in the base document referenced above)
       id:
-        - 'productIdentifier=%{id#remove_extension}%'
-        - '{$.properties.title#remove_extension}'
+        - null
+        - '{$.Name#remove_extension}'
       tileIdentifier:
-        - tileId
-        - '$.null'
+        - null
+        - '$.Attributes.tileId'
       # The geographic extent of the product
       geometry:
-        - 'geometry={geometry#to_rounded_wkt}'
-        # - '$.geometry'
-        - '($.geometry.`str()`.`sub(/^\\[\\]$/, POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)))`)|($.geometry[*])'
-      # The url of the quicklook
-      quicklook: '$.properties.thumbnail'
+        - null
+        - '{$.Footprint.`sub(/.*(SRID=[0-9]+;[A-Z0-9 \(\),.-]+).*/, \\1)`#from_ewkt}'
       # The url to download the product "as is" (literal or as a template to be completed either after the search result
       # is obtained from the provider or during the eodag download phase)
-      downloadLink: 'https://zipper.creodias.eu/download/{uid}'
-      # storageStatus must be one of ONLINE, STAGING, OFFLINE
-      storageStatus: '$.properties.status'
-
+      downloadLink: 'https://zipper.creodias.eu/odata/v1/Products({uid})/$value'
+      # storageStatus: must be one of ONLINE, STAGING, OFFLINE
+      storageStatus: '{$.Online#get_group_name((?P<ONLINE>True)|(?P<OFFLINE>False))}'
+      collection:
+        - null
+        - $.null
+      quicklook: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
+      thumbnail: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
       # Additional metadata provided by the providers but that don't appear in the reference spec
-      thumbnail: '$.properties.thumbnail'
+      productIdentifier: '$.S3Path'
   download: !plugin
     type: HTTPDownload
     base_uri: 'https://zipper.creodias.eu/download/'
@@ -1024,22 +1052,22 @@
       # S1
     S1_SAR_RAW:
       productType: RAW
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_GRD:
       productType: GRD
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_SLC:
       productType: SLC
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_OCN:
       productType: OCN
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     # S2
@@ -1051,174 +1079,174 @@
       productType: S2MSI2A
     # S3 SRAL
     S3_SRA:
-      productType: SRA
-      collection: Sentinel3
+      productType: SR_1_SRA___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_A:
-      productType: SRA_A
-      collection: Sentinel3
+      productType: SR_1_SRA_A_
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_BS:
-      productType: SRA_BS
-      collection: Sentinel3
+      productType: SR_1_SRA_BS
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_LAN:
-      productType: LAN
-      collection: Sentinel3
+      productType: SR_2_LAN___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_WAT:
-      productType: WAT
-      collection: Sentinel3
+      productType: SR_2_WAT___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     # S3 OLCI
     S3_EFR:
-      productType: EFR
-      collection: Sentinel3
+      productType: OL_1_EFR___
+      collection: SENTINEL-3
     S3_ERR:
-      productType: ERR
-      collection: Sentinel3
+      productType: OL_1_ERR___
+      collection: SENTINEL-3
     S3_OLCI_L2LRR:
-      productType: LRR
-      collection: Sentinel3
+      productType: OL_2_LRR___
+      collection: SENTINEL-3
     S3_OLCI_L2LFR:
-      productType: LFR
-      collection: Sentinel3
+      productType: OL_2_LFR___
+      collection: SENTINEL-3
     S3_OLCI_L2WRR:
-      productType: WRR
-      collection: Sentinel3
+      productType: OL_2_WRR___
+      collection: SENTINEL-3
     S3_OLCI_L2WFR:
-      productType: WFR
-      collection: Sentinel3
+      productType: OL_2_WFR___
+      collection: SENTINEL-3
     # S3 SLSTR
     S3_SLSTR_L1RBT:
-      productType: RBT
-      collection: Sentinel3
+      productType: SL_1_RBT___
+      collection: SENTINEL-3
     S3_SLSTR_L2LST:
-      productType: LST
-      collection: Sentinel3
+      productType: SL_2_LST___
+      collection: SENTINEL-3
     S3_SLSTR_L2WST:
-      productType: WST
-      collection: Sentinel3
+      productType: SL_2_WST___
+      collection: SENTINEL-3
     S3_SLSTR_L2AOD:
-      productType: AOD___
-      collection: Sentinel3
+      productType: SL_2_AOD___
+      collection: SENTINEL-3
     S3_SLSTR_L2FRP:
-      productType: FRP___
-      collection: Sentinel3
+      productType: SL_2_FRP___
+      collection: SENTINEL-3
     # S3 SY
     S3_SY_AOD:
       productType: SY_2_AOD___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_SYN:
       productType: SY_2_SYN___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_V10:
       productType: SY_2_V10___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VG1:
       productType: SY_2_VG1___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VGP:
       productType: SY_2_VGP___
-      collection: Sentinel3
+      collection: SENTINEL-3
     # S5P L1
     S5P_L1B_IR_SIR:
       productType: L1B_IR_SIR
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_IR_UVN:
       productType: L1B_IR_UVN
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD1:
       productType: L1B_RA_BD1
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD2:
       productType: L1B_RA_BD2
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD3:
       productType: L1B_RA_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD4:
       productType: L1B_RA_BD4
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD5:
       productType: L1B_RA_BD5
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD6:
       productType: L1B_RA_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD7:
       productType: L1B_RA_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD8:
       productType: L1B_RA_BD8
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     # S5P L2
     S5P_L2_NO2:
       productType: L2__NO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CLOUD:
       productType: L2__CLOUD_
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3:
       productType: L2__O3____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CO:
       productType: L2__CO____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_AER_AI:
       productType: L2__AER_AI
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_PR:
       productType: L2__O3__PR
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_TCL:
       productType: L2__O3_TCL
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_AER_LH:
       productType: L2__AER_LH
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_HCHO:
       productType: L2__HCHO__
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CH4:
       productType: L2__CH4___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD3:
       productType: L2__NP_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD6:
       productType: L2__NP_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD7:
       productType: L2__NP_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_SO2:
       productType: L2__SO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     # COP DEM
     COP_DEM_GLO30_DGED:
       productType: DGE_30
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO30_DTED:
       productType: DTE_30
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO90_DGED:
       productType: DGE_90
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO90_DTED:
       productType: DTE_90
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     GENERIC_PRODUCT_TYPE:
@@ -3803,104 +3831,151 @@
     - host
   url: https://dataspace.copernicus.eu/
   search: !plugin
-    type: QueryStringSearch
-    api_endpoint: 'http://catalogue.dataspace.copernicus.eu/resto/api/collections/{collection}/search.json'
+    type: ODataV4Search
+    api_endpoint: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products'
     need_auth: false
-    timeout: 60
+    timeout: 120
     ssl_verify: true
+    dont_quote:
+      - '['
+      - ']'
+      - '$'
+      - '='
+      - '&'
+      - ':'
     pagination:
-      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1'
-      total_items_nb_key_path: '$.properties.totalResults'
+      next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets&$count=True'
+      total_items_nb_key_path: '$."@odata.count"'
       max_items_per_page: 1_000
     sort:
       sort_by_default:
         - !!python/tuple [startTimeFromAscendingNode, ASC]
-      sort_by_tpl: '&sortParam={sort_param}&sortOrder={sort_order}'
+      sort_by_tpl: '&$orderby={sort_param} {sort_order}'
       sort_param_mapping:
-        startTimeFromAscendingNode: startDate
-        completionTimeFromAscendingNode: completionDate
-        publicationDate: published
-        modificationDate: updated
+        startTimeFromAscendingNode: ContentDate/Start
+        completionTimeFromAscendingNode: ContentDate/End
+        publicationDate: PublicationDate
+        modificationDate: ModificationDate
       sort_order_mapping:
         ascending: asc
         descending: desc
       max_sort_params: 1
+    results_entry: 'value'
+    free_text_search_operations:
+      $filter:
+        union: ' or '
+        wrapper: '{}'
+        operations:
+          and:
+            - "Collection/Name eq '{collection}'"
+            - "OData.CSC.Intersects(area=geography'{geometry#to_ewkt}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq '{productType}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformShortName' and att/OData.CSC.StringAttribute/Value eq '{platform}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformSerialIdentifier' and att/OData.CSC.StringAttribute/Value eq '{platformSerialIdentifier}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'spatialResolution' and att/OData.CSC.StringAttribute/Value eq '{resolution}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'authority' and att/OData.CSC.StringAttribute/Value eq '{organisationName}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'orbitNumber' and att/OData.CSC.StringAttribute/Value eq '{orbitNumber}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'orbitDirection' and att/OData.CSC.StringAttribute/Value eq '{orbitDirection}')"
+            - "Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le {cloudCover})"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'operationalMode' and att/OData.CSC.StringAttribute/Value eq '{sensorMode}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'polarisationChannels' and att/OData.CSC.StringAttribute/Value eq '{polarizationChannels}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'tileId' and att/OData.CSC.StringAttribute/Value eq '{tileIdentifier}')"
+            - 'ContentDate/Start gt {startTimeFromAscendingNode#to_iso_utc_datetime}'
+            - 'ContentDate/End lt {completionTimeFromAscendingNode#to_iso_utc_datetime}'
+            - contains(Name,'{id}')
     discover_metadata:
       auto_discovery: true
       metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$'
-      search_param: '{metadata}={{{metadata}}}'
-      metadata_path: '$.properties.*'
+      search_param:
+        free_text_search_operations:
+          $filter:
+            operations:
+              and:
+                -  "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq '{metadata}' and att/OData.CSC.StringAttribute/Value eq '{{{metadata}}}')"
+      metadata_path: '$.Attributes.*'
+    per_product_metadata_query: false
+    metadata_pre_mapping:
+      metadata_path: '$.Attributes'
+      metadata_path_id: 'Name'
+      metadata_path_value: 'Value'
     metadata_mapping:
       # Opensearch resource identifier within the search engine context (in our case
       # within the context of the data provider)
-      uid: '$.id'
+      # Queryable parameters are set with null as 1st configuration list value to mark them as queryable,
+      #   but `free_text_search_operations.$filter.operations.and` entries are then used instead.
+      uid: '$.Id'
       # OpenSearch Parameters for Collection Search (Table 3)
       productType:
-        - productType
-        - '$.properties.productType'
-      platform: '$.properties.collection'
+        - null
+        - '$.Attributes.productType'
+      platform:
+        - null
+        - '$.Attributes.platformShortName'
       platformSerialIdentifier:
-        - platform
-        - '$.properties.platform'
+        - null
+        - '$.Attributes.platformSerialIdentifier'
       instrument:
-        - instrument
-        - '$.properties.instrument'
+        - null
+        - '$.Attributes.instrumentShortName'
       processingLevel:
-        - processingLevel
-        - '$.properties.processingLevel'
+        - null
+        - '$.Attributes.processingLevel'
       # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
-      title: '{$.properties.title#remove_extension}'
+      title: '$.Name'
       resolution:
-        - 'resolution'
-        - '$.properties.resolution'
+        - null
+        - '$.Attributes.spatialResolution'
       organisationName:
-        - 'organisationName'
-        - '$.properties.organisationName'
-      publicationDate: '$.properties.published'
+        - null
+        - '$.Attributes.authority'
+      publicationDate: '$.PublicationDate'
       # OpenSearch Parameters for Product Search (Table 5)
       orbitNumber:
-        - 'orbitNumber'
-        - '$.properties.orbitNumber'
+        - null
+        - '$.Attributes.orbitNumber'
       orbitDirection:
-        - 'orbitDirection'
-        - '$.properties.orbitDirection'
+        - null
+        - '$.Attributes.orbitDirection'
       cloudCover:
-        - 'cloudCover=[0,{cloudCover}]'
-        - '$.properties.cloudCover'
-      modificationDate: '$.properties.updated'
+        - null
+        - '$.Attributes.cloudCover'
+      modificationDate: '$.ModificationDate'
       sensorMode:
-        - 'sensorMode'
-        - '$.properties.sensorMode'
+        - null
+        - '$.Attributes.operationalMode'
       # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
       startTimeFromAscendingNode:
-        - startDate
-        - '$.properties.startDate'
+        - null
+        - '$.ContentDate.Start'
       completionTimeFromAscendingNode:
-        - completionDate
-        - '$.properties.completionDate'
+        - null
+        - '$.ContentDate.End'
       polarizationChannels:
-        - 'polarisation'
-        - '$.properties.polarisation'
+        - null
+        - '$.Attributes.polarisationChannels'
       # Custom parameters (not defined in the base document referenced above)
       id:
-        - 'productIdentifier={id#remove_extension}'
-        - '{$.properties.title#remove_extension}'
+        - null
+        - '{$.Name#remove_extension}'
       tileIdentifier:
-        - tileId
-        - '$.null'
+        - null
+        - '$.Attributes.tileId'
       # The geographic extent of the product
       geometry:
-        - 'geometry={geometry#to_rounded_wkt}'
-        - '($.geometry.`str()`.`sub(/^\\[\\]$/, POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)))`)|($.geometry[*])'
-      # The url of the quicklook
-      quicklook: '$.properties.thumbnail'
+        - null
+        - '{$.Footprint.`sub(/.*(SRID=[0-9]+;[A-Z0-9 \(\),.-]+).*/, \\1)`#from_ewkt}'
       # The url to download the product "as is" (literal or as a template to be completed either after the search result
       # is obtained from the provider or during the eodag download phase)
       downloadLink: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products({uid})/$value'
       # storageStatus: must be one of ONLINE, STAGING, OFFLINE
-      storageStatus: '$.properties.status'
+      storageStatus: '{$.Online#get_group_name((?P<ONLINE>True)|(?P<OFFLINE>False))}'
+      collection:
+        - null
+        - $.null
+      quicklook: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
+      thumbnail: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
       # Additional metadata provided by the providers but that don't appear in the reference spec
-      thumbnail: '$.properties.thumbnail'
+      productIdentifier: '$.S3Path'
   download: !plugin
     type: HTTPDownload
     base_uri: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products'
@@ -3921,183 +3996,183 @@
   products:
     # S2
     S2_MSI_L1C:
-      collection: Sentinel2
+      collection: SENTINEL-2
       productType: S2MSI1C
     S2_MSI_L2A:
-      collection: Sentinel2
+      collection: SENTINEL-2
       productType: S2MSI2A
     # S1
     S1_SAR_RAW:
       productType: RAW
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_GRD:
       productType: GRD
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_SLC:
       productType: SLC
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_OCN:
       productType: OCN
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     # S3 SRAL
     S3_SRA:
       productType: SR_1_SRA___
-      collection: Sentinel3
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_A:
       productType: SR_1_SRA_A_
-      collection: Sentinel3
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_BS:
       productType: SR_1_SRA_BS
-      collection: Sentinel3
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_LAN:
       productType: SR_2_LAN___
-      collection: Sentinel3
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_WAT:
       productType: SR_2_WAT___
-      collection: Sentinel3
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     # S3 OLCI
     S3_EFR:
       productType: OL_1_EFR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_ERR:
       productType: OL_1_ERR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_OLCI_L2LRR:
       productType: OL_2_LRR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_OLCI_L2LFR:
       productType: OL_2_LFR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_OLCI_L2WRR:
       productType: OL_2_WRR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_OLCI_L2WFR:
       productType: OL_2_WFR___
-      collection: Sentinel3
+      collection: SENTINEL-3
     # S3 SLSTR
     S3_SLSTR_L1RBT:
       productType: SL_1_RBT___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SLSTR_L2LST:
       productType: SL_2_LST___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SLSTR_L2WST:
       productType: SL_2_WST___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SLSTR_L2AOD:
       productType: SL_2_AOD___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SLSTR_L2FRP:
       productType: SL_2_FRP___
-      collection: Sentinel3
+      collection: SENTINEL-3
     # S3 SY
     S3_SY_AOD:
       productType: SY_2_AOD___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_SYN:
       productType: SY_2_SYN___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_V10:
       productType: SY_2_V10___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VG1:
       productType: SY_2_VG1___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VGP:
       productType: SY_2_VGP___
-      collection: Sentinel3
+      collection: SENTINEL-3
     # S5P L1
     S5P_L1B_IR_SIR:
       productType: L1B_IR_SIR
-      collection: Sentinel5P
+      collection: Sentinel-5P
     S5P_L1B_IR_UVN:
       productType: L1B_IR_UVN
-      collection: Sentinel5P
+      collection: Sentinel-5P
     S5P_L1B_RA_BD1:
       productType: L1B_RA_BD1
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD2:
       productType: L1B_RA_BD2
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD3:
       productType: L1B_RA_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD4:
       productType: L1B_RA_BD4
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD5:
       productType: L1B_RA_BD5
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD6:
       productType: L1B_RA_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD7:
       productType: L1B_RA_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD8:
       productType: L1B_RA_BD8
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     # S5P L2
     S5P_L2_NO2:
       productType: L2__NO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CLOUD:
       productType: L2__CLOUD_
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3:
       productType: L2__O3____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CO:
       productType: L2__CO____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_AER_AI:
       productType: L2__AER_AI
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_PR:
       productType: L2__O3__PR
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_TCL:
       productType: L2__O3_TCL
-      collection: Sentinel5P
+      collection: Sentinel-5P
     S5P_L2_AER_LH:
       productType: L2__AER_LH
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_HCHO:
       productType: L2__HCHO__
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CH4:
       productType: L2__CH4___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD3:
       productType: L2__NP_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD6:
       productType: L2__NP_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD7:
       productType: L2__NP_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_SO2:
       productType: L2__SO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     GENERIC_PRODUCT_TYPE:
       productType: '{productType}'
       collection: '{collection}'
@@ -5992,125 +6067,153 @@
   url: https://creodias.eu/
   search: !plugin
     type: CreodiasS3Search
-    api_endpoint: 'http://datahub.creodias.eu/resto/api/collections/{collection}/search.json'
+    api_endpoint: 'https://datahub.creodias.eu/odata/v1/Products'
     s3_endpoint: 'https://eodata.cloudferro.com'
     need_auth: true
-    timeout: 60
+    timeout: 120
     ssl_verify: true
+    dont_quote:
+      - '['
+      - ']'
+      - '$'
+      - '='
+      - '&'
+      - ':'
     pagination:
-      next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1'
-      total_items_nb_key_path: '$.properties.totalResults'
+      next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets&$count=True'
+      total_items_nb_key_path: '$."@odata.count"'
       max_items_per_page: 1_000
     sort:
       sort_by_default:
         - !!python/tuple [startTimeFromAscendingNode, ASC]
-      sort_by_tpl: '&sortParam={sort_param}&sortOrder={sort_order}'
+      sort_by_tpl: '&$orderby={sort_param} {sort_order}'
       sort_param_mapping:
-        startTimeFromAscendingNode: startDate
-        completionTimeFromAscendingNode: completionDate
-        publicationDate: published
+        startTimeFromAscendingNode: ContentDate/Start
+        completionTimeFromAscendingNode: ContentDate/End
+        publicationDate: PublicationDate
+        modificationDate: ModificationDate
       sort_order_mapping:
         ascending: asc
         descending: desc
       max_sort_params: 1
+    results_entry: 'value'
+    free_text_search_operations:
+      $filter:
+        union: ' or '
+        wrapper: '{}'
+        operations:
+          and:
+            - "Collection/Name eq '{collection}'"
+            - "OData.CSC.Intersects(area=geography'{geometry#to_ewkt}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq '{productType}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformShortName' and att/OData.CSC.StringAttribute/Value eq '{platform}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformSerialIdentifier' and att/OData.CSC.StringAttribute/Value eq '{platformSerialIdentifier}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'spatialResolution' and att/OData.CSC.StringAttribute/Value eq '{resolution}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'authority' and att/OData.CSC.StringAttribute/Value eq '{organisationName}')"
+            - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'orbitNumber' and att/OData.CSC.StringAttribute/Value eq '{orbitNumber}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'orbitDirection' and att/OData.CSC.StringAttribute/Value eq '{orbitDirection}')"
+            - "Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le {cloudCover})"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'operationalMode' and att/OData.CSC.StringAttribute/Value eq '{sensorMode}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'polarisationChannels' and att/OData.CSC.StringAttribute/Value eq '{polarizationChannels}')"
+            - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'tileId' and att/OData.CSC.StringAttribute/Value eq '{tileIdentifier}')"
+            - 'ContentDate/Start gt {startTimeFromAscendingNode#to_iso_utc_datetime}'
+            - 'ContentDate/End lt {completionTimeFromAscendingNode#to_iso_utc_datetime}'
+            - contains(Name,'{id}')
     discover_metadata:
       auto_discovery: true
       metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$'
-      search_param: '{metadata}={{{metadata}}}'
-      metadata_path: '$.properties.*'
+      search_param:
+        free_text_search_operations:
+          $filter:
+            operations:
+              and:
+                -  "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq '{metadata}' and att/OData.CSC.StringAttribute/Value eq '{{{metadata}}}')"
+      metadata_path: '$.Attributes.*'
     discover_product_types:
       fetch_url: null
+    per_product_metadata_query: false
+    metadata_pre_mapping:
+      metadata_path: '$.Attributes'
+      metadata_path_id: 'Name'
+      metadata_path_value: 'Value'
     metadata_mapping:
-      uid: '$.id'
+      # Opensearch resource identifier within the search engine context (in our case
+      # within the context of the data provider)
+      # Queryable parameters are set with null as 1st configuration list value to mark them as queryable,
+      #   but `free_text_search_operations.$filter.operations.and` entries are then used instead.
+      uid: '$.Id'
+      # OpenSearch Parameters for Collection Search (Table 3)
       productType:
-        - productType
-        - '$.properties.productType'
-      platform: '$.properties.collection'
+        - null
+        - '$.Attributes.productType'
+      platform:
+        - null
+        - '$.Attributes.platformShortName'
       platformSerialIdentifier:
-        - platform
-        - '$.properties.platform'
+        - null
+        - '$.Attributes.platformSerialIdentifier'
       instrument:
-        - instrument
-        - '$.properties.instrument'
+        - null
+        - '$.Attributes.instrumentShortName'
       processingLevel:
-        - processingLevel
-        - '$.properties.processingLevel'
+        - null
+        - '$.Attributes.processingLevel'
       # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
-      title: '{$.properties.title#remove_extension}'
-      topicCategory: '$.properties.topicCategory'
-      keyword: '$.properties.keywords'
-      abstract: '$.properties.description'
+      title: '$.Name'
       resolution:
-        - 'resolution'
-        - '$.properties.resolution'
+        - null
+        - '$.Attributes.spatialResolution'
       organisationName:
-        - 'organisationName'
-        - '$.properties.organisationName'
-      publicationDate: '$.properties.published'
-      accessConstraint: '$.properties.license'
-
+        - null
+        - '$.Attributes.authority'
+      publicationDate: '$.PublicationDate'
       # OpenSearch Parameters for Product Search (Table 5)
-      parentIdentifier:
-        - 'parentIdentifier'
-        - '$.properties.parentIdentifier'
-      acquisitionType: '$.properties.acquisitionType'
       orbitNumber:
-        - 'orbitNumber'
-        - '$.properties.orbitNumber'
+        - null
+        - '$.Attributes.orbitNumber'
       orbitDirection:
-        - 'orbitDirection'
-        - '$.properties.orbitDirection'
-      swathIdentifier:
-        - 'swath'
-        - '$.properties.swath'
+        - null
+        - '$.Attributes.orbitDirection'
       cloudCover:
-        - 'cloudCover=[0,{cloudCover}]'
-        - '$.properties.cloudCover'
-      snowCover:
-        - 'snowCover=[0,{snowCover}]'
-        - '$.properties.snowCover'
-      productVersion: '$.properties.version'
-      productQualityStatus: '$.properties.onlineQualityCheck'
-      processorName: '$.properties.processingName'
-      processingCenter: '$.properties.processingCenter'
-      creationDate: '$.properties.dhusIngestDate'
-      modificationDate: '$.properties.updated'
+        - null
+        - '$.Attributes.cloudCover'
+      modificationDate: '$.ModificationDate'
       sensorMode:
-        - 'sensorMode'
-        - '$.properties.sensorMode'
+        - null
+        - '$.Attributes.operationalMode'
       # OpenSearch Parameters for Acquistion Parameters Search (Table 6)
       startTimeFromAscendingNode:
-        - startDate
-        - '$.properties.startDate'
+        - null
+        - '$.ContentDate.Start'
       completionTimeFromAscendingNode:
-        - completionDate
-        - '$.properties.completionDate'
-      polarizationMode:
-        - 'polarisation'
-        - '$.properties.polarisation'
-
+        - null
+        - '$.ContentDate.End'
+      polarizationChannels:
+        - null
+        - '$.Attributes.polarisationChannels'
       # Custom parameters (not defined in the base document referenced above)
       id:
-        - 'productIdentifier=%{id#remove_extension}%'
-        - '{$.properties.title#remove_extension}'
+        - null
+        - '{$.Name#remove_extension}'
       tileIdentifier:
-        - tileId
-        - '$.null'
+        - null
+        - '$.Attributes.tileId'
       # The geographic extent of the product
       geometry:
-        - 'geometry={geometry#to_rounded_wkt}'
-        # - '$.geometry'
-        - '($.geometry.`str()`.`sub(/^\\[\\]$/, POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)))`)|($.geometry[*])'
-      # The url of the quicklook
-      quicklook: '$.properties.thumbnail'
+        - null
+        - '{$.Footprint.`sub(/.*(SRID=[0-9]+;[A-Z0-9 \(\),.-]+).*/, \\1)`#from_ewkt}'
       # The url to download the product "as is" (literal or as a template to be completed either after the search result
       # is obtained from the provider or during the eodag download phase)
-      downloadLink: 'https://zipper.creodias.eu/download/{uid}'
-      # storageStatus must be one of ONLINE, STAGING, OFFLINE
-      storageStatus: '$.properties.status'
-
-      # Additional metadata provided by the providers but that don't appear in the reference spec
-      thumbnail: '$.properties.thumbnail'
+      downloadLink: 'https://zipper.creodias.eu/odata/v1/Products({uid})/$value'
+      # storageStatus: must be one of ONLINE, STAGING, OFFLINE
+      storageStatus: '{$.Online#get_group_name((?P<ONLINE>True)|(?P<OFFLINE>False))}'
+      collection:
+        - null
+        - $.null
+      quicklook: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
+      thumbnail: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink'
+        # Additional metadata provided by the providers but that don't appear in the reference spec
+      productIdentifier: '$.S3Path'
   download: !plugin
     type: CreodiasS3Download
     flatten_top_dirs: True
@@ -6122,205 +6225,204 @@
     auth_error_code: 403
     ssl_verify: true
   products:
-    # S1
+      # S1
     S1_SAR_RAW:
       productType: RAW
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_GRD:
       productType: GRD
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_SLC:
       productType: SLC
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     S1_SAR_OCN:
       productType: OCN
-      collection: Sentinel1
+      collection: SENTINEL-1
       metadata_mapping:
         cloudCover: '$.null'
     # S2
     S2_MSI_L1C:
       collection: SENTINEL-2
       productType: S2MSI1C
-      prefixes_delimiter: ".jp2"
     S2_MSI_L2A:
       collection: SENTINEL-2
       productType: S2MSI2A
     # S3 SRAL
     S3_SRA:
-      productType: SRA
-      collection: Sentinel3
+      productType: SR_1_SRA___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_A:
-      productType: SRA_A
-      collection: Sentinel3
+      productType: SR_1_SRA_A_
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_SRA_BS:
-      productType: SRA_BS
-      collection: Sentinel3
+      productType: SR_1_SRA_BS
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_LAN:
-      productType: LAN
-      collection: Sentinel3
+      productType: SR_2_LAN___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     S3_WAT:
-      productType: WAT
-      collection: Sentinel3
+      productType: SR_2_WAT___
+      collection: SENTINEL-3
       metadata_mapping:
         cloudCover: '$.null'
     # S3 OLCI
     S3_EFR:
-      productType: EFR
-      collection: Sentinel3
+      productType: OL_1_EFR___
+      collection: SENTINEL-3
     S3_ERR:
-      productType: ERR
-      collection: Sentinel3
+      productType: OL_1_ERR___
+      collection: SENTINEL-3
     S3_OLCI_L2LRR:
-      productType: LRR
-      collection: Sentinel3
+      productType: OL_2_LRR___
+      collection: SENTINEL-3
     S3_OLCI_L2LFR:
-      productType: LFR
-      collection: Sentinel3
+      productType: OL_2_LFR___
+      collection: SENTINEL-3
     S3_OLCI_L2WRR:
-      productType: WRR
-      collection: Sentinel3
+      productType: OL_2_WRR___
+      collection: SENTINEL-3
     S3_OLCI_L2WFR:
-      productType: WFR
-      collection: Sentinel3
+      productType: OL_2_WFR___
+      collection: SENTINEL-3
     # S3 SLSTR
     S3_SLSTR_L1RBT:
-      productType: RBT
-      collection: Sentinel3
+      productType: SL_1_RBT___
+      collection: SENTINEL-3
     S3_SLSTR_L2LST:
-      productType: LST
-      collection: Sentinel3
+      productType: SL_2_LST___
+      collection: SENTINEL-3
     S3_SLSTR_L2WST:
-      productType: WST
-      collection: Sentinel3
+      productType: SL_2_WST___
+      collection: SENTINEL-3
     S3_SLSTR_L2AOD:
-      productType: AOD___
-      collection: Sentinel3
+      productType: SL_2_AOD___
+      collection: SENTINEL-3
     S3_SLSTR_L2FRP:
-      productType: FRP___
-      collection: Sentinel3
+      productType: SL_2_FRP___
+      collection: SENTINEL-3
     # S3 SY
     S3_SY_AOD:
       productType: SY_2_AOD___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_SYN:
       productType: SY_2_SYN___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_V10:
       productType: SY_2_V10___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VG1:
       productType: SY_2_VG1___
-      collection: Sentinel3
+      collection: SENTINEL-3
     S3_SY_VGP:
       productType: SY_2_VGP___
-      collection: Sentinel3
+      collection: SENTINEL-3
     # S5P L1
     S5P_L1B_IR_SIR:
       productType: L1B_IR_SIR
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_IR_UVN:
       productType: L1B_IR_UVN
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD1:
       productType: L1B_RA_BD1
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD2:
       productType: L1B_RA_BD2
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD3:
       productType: L1B_RA_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD4:
       productType: L1B_RA_BD4
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD5:
       productType: L1B_RA_BD5
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD6:
       productType: L1B_RA_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD7:
       productType: L1B_RA_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L1B_RA_BD8:
       productType: L1B_RA_BD8
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     # S5P L2
     S5P_L2_NO2:
       productType: L2__NO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CLOUD:
       productType: L2__CLOUD_
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3:
       productType: L2__O3____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CO:
       productType: L2__CO____
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_AER_AI:
       productType: L2__AER_AI
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_PR:
       productType: L2__O3__PR
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_O3_TCL:
       productType: L2__O3_TCL
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_AER_LH:
       productType: L2__AER_LH
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_HCHO:
       productType: L2__HCHO__
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_CH4:
       productType: L2__CH4___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD3:
       productType: L2__NP_BD3
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD6:
       productType: L2__NP_BD6
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_NP_BD7:
       productType: L2__NP_BD7
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     S5P_L2_SO2:
       productType: L2__SO2___
-      collection: Sentinel5P
+      collection: SENTINEL-5P
     # COP DEM
     COP_DEM_GLO30_DGED:
       productType: DGE_30
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO30_DTED:
       productType: DTE_30
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO90_DGED:
       productType: DGE_90
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     COP_DEM_GLO90_DTED:
       productType: DTE_90
-      collection: CopDem
+      collection: COP-DEM
       metadata_mapping:
         cloudCover: '$.null'
     GENERIC_PRODUCT_TYPE:


Test patch:
diff --git a/tests/integration/test_core_search.py b/tests/integration/test_core_search.py
index b83efb16..8d8e97a1 100644
--- a/tests/integration/test_core_search.py
+++ b/tests/integration/test_core_search.py
@@ -236,7 +236,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         products, count = self.dag.search(productType="S1_SAR_SLC")
@@ -264,7 +271,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         self.assertRaises(
@@ -291,7 +305,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         # peps comes 1st by priority
@@ -324,6 +345,8 @@ class TestCoreSearch(unittest.TestCase):
     @mock.patch(
         "eodag.plugins.search.qssearch.requests.Request",
         autospec=True,
+        # fail on creodias, then succeeds on onda (count and search)
+        side_effect=[RequestException, mock.DEFAULT, mock.DEFAULT],
     )
     @mock.patch(
         "eodag.plugins.search.qssearch.requests.get",
@@ -338,7 +361,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         # onda comes 3rd by priority
@@ -373,7 +403,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         mock_query.side_effect = [
@@ -400,7 +437,14 @@ class TestCoreSearch(unittest.TestCase):
         available_providers = self.dag.available_providers(product_type)
         self.assertListEqual(
             available_providers,
-            ["peps", "cop_dataspace", "creodias", "onda", "sara", "wekeo"],
+            [
+                "peps",
+                "cop_dataspace",
+                "creodias",
+                "onda",
+                "sara",
+                "wekeo",
+            ],
         )
 
         mock_query.return_value = ([], 0)
diff --git a/tests/resources/eodag_search_result_creodias.json b/tests/resources/eodag_search_result_creodias.json
new file mode 100644
index 00000000..751cc1e3
--- /dev/null
+++ b/tests/resources/eodag_search_result_creodias.json
@@ -0,0 +1,1 @@
+{"@odata.context":"$metadata#Products(Attributes())","@odata.count":3123749,"value":[{"@odata.mediaContentType":"application/octet-stream","Id":"78d5c597-78e9-56e8-b4ea-3c2aa92a5d4e","Name":"S1A_IW_GRDH_1SSV_20141004T005844_20141004T005913_002673_002FAB_4FCD.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:00:24.811Z","PublicationDate":"2017-12-16T09:13:28.955Z","ModificationDate":"2017-12-16T09:13:28.955Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T005844_20141004T005913_002673_002FAB_4FCD.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T00:58:44.620Z","End":"2014-10-04T00:59:13.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-105.359001 28.981216, -102.76075 29.394079, -102.414383 27.64957, -104.969788 27.233603, -105.359001 28.981216))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-105.359001,28.981216],[-102.76075,29.394079],[-102.414383,27.64957],[-104.969788,27.233603],[-105.359001,28.981216]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"28.981216,-105.359001 29.394079,-102.760750 27.649570,-102.414383 27.233603,-104.969788 28.981216,-105.359001","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":1,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T00:59:13.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T00:58:44.620Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"7996915b-3dc9-5197-bf4b-ffc69ce5120e","Name":"S1A_IW_GRDH_1SSV_20141004T005913_20141004T005938_002673_002FAB_1265.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:02:11.335Z","PublicationDate":"2017-12-16T09:12:12.382Z","ModificationDate":"2017-12-16T09:12:12.382Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T005913_20141004T005938_002673_002FAB_1265.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T00:59:13.612Z","End":"2014-10-04T00:59:38.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-105.693146 30.488607, -103.054344 30.898907, -102.760162 29.39426, -105.359024 28.981306, -105.693146 30.488607))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-105.693146,30.488607],[-103.054344,30.898907],[-102.760162,29.39426],[-105.359024,28.981306],[-105.693146,30.488607]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"30.488607,-105.693146 30.898907,-103.054344 29.394260,-102.760162 28.981306,-105.359024 30.488607,-105.693146","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":2,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T00:59:38.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T00:59:13.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"9e18d2e7-1900-5840-9254-637720f5f719","Name":"S1A_IW_GRDH_1SSV_20141004T005938_20141004T010003_002673_002FAB_53D4.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:04:48.218Z","PublicationDate":"2017-12-16T09:10:55.010Z","ModificationDate":"2017-12-16T09:10:55.010Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T005938_20141004T010003_002673_002FAB_53D4.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T00:59:38.612Z","End":"2014-10-04T01:00:03.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-106.031609 31.995399, -103.34903 32.403305, -103.053642 30.899101, -105.693169 30.488699, -106.031609 31.995399))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-106.031609,31.995399],[-103.34903,32.403305],[-103.053642,30.899101],[-105.693169,30.488699],[-106.031609,31.995399]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"31.995399,-106.031609 32.403305,-103.349030 30.899101,-103.053642 30.488699,-105.693169 31.995399,-106.031609","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":3,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:00:03.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T00:59:38.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"b714cbfd-c3c2-556d-84ff-f050a37763f5","Name":"S1A_IW_GRDH_1SSV_20141004T010003_20141004T010028_002673_002FAB_817D.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:07:06.188Z","PublicationDate":"2017-12-16T09:09:07.670Z","ModificationDate":"2017-12-16T09:09:07.670Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010003_20141004T010028_002673_002FAB_817D.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:00:03.612Z","End":"2014-10-04T01:00:28.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-106.37149 33.502102, -103.641792 33.907703, -103.348213 32.403515, -106.031624 31.995491, -106.37149 33.502102))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-106.37149,33.502102],[-103.641792,33.907703],[-103.348213,32.403515],[-106.031624,31.995491],[-106.37149,33.502102]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"33.502102,-106.371490 33.907703,-103.641792 32.403515,-103.348213 31.995491,-106.031624 33.502102,-106.371490","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":4,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:00:28.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:00:03.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"bd905c2f-65db-53f4-9f31-1e5d335ca06e","Name":"S1A_IW_GRDH_1SSV_20141004T010028_20141004T010053_002673_002FAB_57F0.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:09:20.179Z","PublicationDate":"2017-12-16T09:08:27.892Z","ModificationDate":"2017-12-16T09:08:27.892Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010028_20141004T010053_002673_002FAB_57F0.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:00:28.612Z","End":"2014-10-04T01:00:53.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-106.719139 35.00774, -103.938728 35.411278, -103.640846 33.907925, -106.371513 33.50219, -106.719139 35.00774))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-106.719139,35.00774],[-103.938728,35.411278],[-103.640846,33.907925],[-106.371513,33.50219],[-106.719139,35.00774]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"35.007740,-106.719139 35.411278,-103.938728 33.907925,-103.640846 33.502190,-106.371513 35.007740,-106.719139","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":5,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:00:53.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:00:28.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"dfbd23e6-5ec6-5fac-a5a6-8bd317b41fe0","Name":"S1A_IW_GRDH_1SSV_20141004T010053_20141004T010118_002673_002FAB_D5C1.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:10:29.566Z","PublicationDate":"2017-12-16T09:09:37.775Z","ModificationDate":"2017-12-16T09:09:37.775Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010053_20141004T010118_002673_002FAB_D5C1.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:00:53.611Z","End":"2014-10-04T01:01:18.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-107.067474 36.513474, -104.2332 36.914917, -103.938416 35.411404, -106.719154 35.007824, -107.067474 36.513474))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-107.067474,36.513474],[-104.2332,36.914917],[-103.938416,35.411404],[-106.719154,35.007824],[-107.067474,36.513474]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"36.513474,-107.067474 36.914917,-104.233200 35.411404,-103.938416 35.007824,-106.719154 36.513474,-107.067474","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":6,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:01:18.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:00:53.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"bb271992-775f-5ab1-af87-70fd3455c6dc","Name":"S1A_IW_GRDH_1SSV_20141004T010118_20141004T010143_002673_002FAB_D1B9.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:12:41.209Z","PublicationDate":"2017-12-16T09:09:38.775Z","ModificationDate":"2017-12-16T09:09:38.775Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010118_20141004T010143_002673_002FAB_D1B9.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:01:18.611Z","End":"2014-10-04T01:01:43.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-107.421638 38.018654, -104.529083 38.418228, -104.232224 36.915138, -107.067497 36.513565, -107.421638 38.018654))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-107.421638,38.018654],[-104.529083,38.418228],[-104.232224,36.915138],[-107.067497,36.513565],[-107.421638,38.018654]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"38.018654,-107.421638 38.418228,-104.529083 36.915138,-104.232224 36.513565,-107.067497 38.018654,-107.421638","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":7,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:01:43.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:01:18.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"3a0980b9-9cd9-5c29-a1d1-05d4ead978f1","Name":"S1A_IW_GRDH_1SSV_20141004T010143_20141004T010208_002673_002FAB_E37A.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:15:33.928Z","PublicationDate":"2017-12-16T09:08:26.571Z","ModificationDate":"2017-12-16T09:08:26.571Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010143_20141004T010208_002673_002FAB_E37A.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:01:43.612Z","End":"2014-10-04T01:02:08.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-107.806076 39.519547, -104.849121 39.918293, -104.527985 38.418457, -107.421669 38.018745, -107.806076 39.519547))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-107.806076,39.519547],[-104.849121,39.918293],[-104.527985,38.418457],[-107.421669,38.018745],[-107.806076,39.519547]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"39.519547,-107.806076 39.918293,-104.849121 38.418457,-104.527985 38.018745,-107.421669 39.519547,-107.806076","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":8,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:02:08.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:01:43.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"dd1f5c25-da5b-542f-9235-57dffecd3db8","Name":"S1A_IW_GRDH_1SSV_20141004T010208_20141004T010233_002673_002FAB_58A8.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:17:38.789Z","PublicationDate":"2017-12-16T09:06:21.362Z","ModificationDate":"2017-12-16T09:06:21.362Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010208_20141004T010233_002673_002FAB_58A8.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:02:08.612Z","End":"2014-10-04T01:02:33.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-108.193359 41.020485, -105.16925 41.418285, -104.847984 39.918522, -107.806091 39.519638, -108.193359 41.020485))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-108.193359,41.020485],[-105.16925,41.418285],[-104.847984,39.918522],[-107.806091,39.519638],[-108.193359,41.020485]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"41.020485,-108.193359 41.418285,-105.169250 39.918522,-104.847984 39.519638,-107.806091 41.020485,-108.193359","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":9,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:02:33.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:02:08.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"ff3330d7-98f0-57e0-887a-89a5e9077a2a","Name":"S1A_IW_GRDH_1SSV_20141004T010233_20141004T010258_002673_002FAB_19F2.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:19:28.019Z","PublicationDate":"2017-12-16T09:05:41.123Z","ModificationDate":"2017-12-16T09:05:41.123Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010233_20141004T010258_002673_002FAB_19F2.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:02:33.612Z","End":"2014-10-04T01:02:58.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-108.589508 42.520641, -105.493301 42.917763, -105.168915 41.418404, -108.193382 41.020561, -108.589508 42.520641))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-108.589508,42.520641],[-105.493301,42.917763],[-105.168915,41.418404],[-108.193382,41.020561],[-108.589508,42.520641]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"42.520641,-108.589508 42.917763,-105.493301 41.418404,-105.168915 41.020561,-108.193382 42.520641,-108.589508","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":10,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:02:58.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:02:33.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]}],"@odata.nextLink":"https://datahub.creodias.eu/odata/v1/Products?%24filter=Collection%2FName+eq+%27SENTINEL-1%27+and+Attributes%2FOData.CSC.StringAttribute%2Fany%28att%3Aatt%2FName+eq+%27productType%27+and+att%2FOData.CSC.StringAttribute%2FValue+eq+%27GRD%27%29&%24orderby=ContentDate%2FStart+asc&%24top=10&%24skip=10&%24expand=Attributes&%24count=True"}
diff --git a/tests/units/test_core.py b/tests/units/test_core.py
index 4a87cd94..416e91de 100644
--- a/tests/units/test_core.py
+++ b/tests/units/test_core.py
@@ -1406,38 +1406,53 @@ class TestCore(TestCoreBase):
         self.maxDiff = None
         expected_result = {
             "peps": None,
-            "usgs": None,
+            "astraea_eod": {
+                "sortables": ["id", "startTimeFromAscendingNode", "creationDate"],
+                "max_sort_params": None,
+            },
+            "aws_eos": None,
+            "cop_ads": None,
+            "cop_cds": None,
+            "cop_dataspace": {
+                "sortables": [
+                    "startTimeFromAscendingNode",
+                    "completionTimeFromAscendingNode",
+                    "publicationDate",
+                    "modificationDate",
+                ],
+                "max_sort_params": 1,
+            },
             "creodias": {
                 "sortables": [
                     "startTimeFromAscendingNode",
                     "completionTimeFromAscendingNode",
                     "publicationDate",
+                    "modificationDate",
                 ],
                 "max_sort_params": 1,
             },
-            "aws_eos": None,
-            "theia": None,
-            "onda": {
-                "sortables": ["startTimeFromAscendingNode", "uid", "storageStatus"],
+            "creodias_s3": {
+                "sortables": [
+                    "startTimeFromAscendingNode",
+                    "completionTimeFromAscendingNode",
+                    "publicationDate",
+                    "modificationDate",
+                ],
                 "max_sort_params": 1,
             },
-            "astraea_eod": {
-                "sortables": ["id", "startTimeFromAscendingNode", "creationDate"],
+            "dedl": {
                 "max_sort_params": None,
-            },
-            "usgs_satapi_aws": {
                 "sortables": [
                     "id",
                     "startTimeFromAscendingNode",
                     "creationDate",
                     "modificationDate",
                     "platformSerialIdentifier",
-                    "illuminationElevationAngle",
-                    "illuminationAzimuthAngle",
+                    "resolution",
                     "cloudCover",
                 ],
-                "max_sort_params": None,
             },
+            "dedt_lumi": None,
             "earth_search": {
                 "sortables": [
                     "id",
@@ -1450,25 +1465,25 @@ class TestCore(TestCoreBase):
                 ],
                 "max_sort_params": None,
             },
-            "earth_search_cog": {
+            "earth_search_gcs": {
                 "sortables": [
                     "id",
                     "startTimeFromAscendingNode",
                     "creationDate",
                     "modificationDate",
-                    "platform",
                     "platformSerialIdentifier",
                     "resolution",
                     "cloudCover",
                 ],
                 "max_sort_params": None,
             },
-            "earth_search_gcs": {
+            "earth_search_cog": {
                 "sortables": [
                     "id",
                     "startTimeFromAscendingNode",
                     "creationDate",
                     "modificationDate",
+                    "platform",
                     "platformSerialIdentifier",
                     "resolution",
                     "cloudCover",
@@ -1476,25 +1491,26 @@ class TestCore(TestCoreBase):
                 "max_sort_params": None,
             },
             "ecmwf": None,
-            "cop_ads": None,
-            "cop_cds": None,
-            "dedt_lumi": None,
-            "sara": {
+            "eumetsat_ds": {
                 "sortables": [
                     "startTimeFromAscendingNode",
-                    "completionTimeFromAscendingNode",
-                    "sensorMode",
+                    "publicationDate",
                 ],
                 "max_sort_params": 1,
             },
-            "meteoblue": None,
-            "cop_dataspace": {
+            "hydroweb_next": {
                 "sortables": [
+                    "id",
                     "startTimeFromAscendingNode",
                     "completionTimeFromAscendingNode",
-                    "publicationDate",
-                    "modificationDate",
+                    "productVersion",
+                    "processingLevel",
                 ],
+                "max_sort_params": None,
+            },
+            "meteoblue": None,
+            "onda": {
+                "sortables": ["startTimeFromAscendingNode", "uid", "storageStatus"],
                 "max_sort_params": 1,
             },
             "planetary_computer": {
@@ -1505,45 +1521,31 @@ class TestCore(TestCoreBase):
                 ],
                 "max_sort_params": None,
             },
-            "hydroweb_next": {
+            "sara": {
                 "sortables": [
-                    "id",
                     "startTimeFromAscendingNode",
                     "completionTimeFromAscendingNode",
-                    "productVersion",
-                    "processingLevel",
+                    "sensorMode",
                 ],
-                "max_sort_params": None,
+                "max_sort_params": 1,
             },
-            "dedl": {
-                "max_sort_params": None,
+            "theia": None,
+            "usgs": None,
+            "usgs_satapi_aws": {
                 "sortables": [
                     "id",
                     "startTimeFromAscendingNode",
                     "creationDate",
                     "modificationDate",
                     "platformSerialIdentifier",
-                    "resolution",
+                    "illuminationElevationAngle",
+                    "illuminationAzimuthAngle",
                     "cloudCover",
                 ],
+                "max_sort_params": None,
             },
             "wekeo": None,
             "wekeo_cmems": None,
-            "creodias_s3": {
-                "sortables": [
-                    "startTimeFromAscendingNode",
-                    "completionTimeFromAscendingNode",
-                    "publicationDate",
-                ],
-                "max_sort_params": 1,
-            },
-            "eumetsat_ds": {
-                "sortables": [
-                    "startTimeFromAscendingNode",
-                    "publicationDate",
-                ],
-                "max_sort_params": 1,
-            },
         }
         sortables = self.dag.available_sortables()
         self.assertDictEqual(sortables, expected_result)
diff --git a/tests/units/test_search_plugins.py b/tests/units/test_search_plugins.py
index b4be2a8b..dfb8a2ad 100644
--- a/tests/units/test_search_plugins.py
+++ b/tests/units/test_search_plugins.py
@@ -1817,7 +1817,9 @@ class TestSearchPluginCreodiasS3Search(BaseSearchPluginTest):
         super(TestSearchPluginCreodiasS3Search, self).setUp()
         self.provider = "creodias_s3"
 
-    @mock.patch("eodag.plugins.search.qssearch.requests.get", autospec=True)
+    @mock.patch(
+        "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True
+    )
     def test_plugins_search_creodias_s3_links(self, mock_request):
         # s3 links should be added to products with register_downloader
         search_plugin = self.get_search_plugin("S1_SAR_GRD", self.provider)
@@ -1829,7 +1831,7 @@ class TestSearchPluginCreodiasS3Search(BaseSearchPluginTest):
         with open(s3_response_file) as f:
             list_objects_response = json.load(f)
         creodias_search_result_file = (
-            Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.geojson"
+            Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.json"
         )
         with open(creodias_search_result_file) as f:
             creodias_search_result = json.load(f)
@@ -1862,7 +1864,9 @@ class TestSearchPluginCreodiasS3Search(BaseSearchPluginTest):
         for asset in assets.values():
             self.assertIn("s3://eodata/Sentinel-1/SAR/GRD/2014/10/10", asset["href"])
 
-    @mock.patch("eodag.plugins.search.qssearch.requests.get", autospec=True)
+    @mock.patch(
+        "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True
+    )
     def test_plugins_search_creodias_s3_client_error(self, mock_request):
         # request error should be raised when there is an error when fetching data from the s3
         search_plugin = self.get_search_plugin("S1_SAR_GRD", self.provider)
@@ -1870,7 +1874,7 @@ class TestSearchPluginCreodiasS3Search(BaseSearchPluginTest):
         stubber = Stubber(client)
 
         creodias_search_result_file = (
-            Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.geojson"
+            Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.json"
         )
         with open(creodias_search_result_file) as f:
             creodias_search_result = json.load(f)