diff --git a/docs/MANUAL.md b/docs/MANUAL.md
index a84878b..9c97bb2 100644
--- a/docs/MANUAL.md
+++ b/docs/MANUAL.md
@@ -461,6 +461,20 @@ parámetros:
   Retorna el árbol de organizaciones creadas. Cada nodo tiene un campo `success` que indica si fue creado exitosamente o
   no. En caso de que `success` sea False, los hijos de esa organización no son creados.
 
+- **pydatajson.federation.push_organization_to_ckan()**: Tomando en un diccionario la data de una organización; la crea
+en el portal de destino. Toma los siguientes parámetros:
+  - **portal_url**: La URL del portal CKAN de destino.
+  - **apikey**: La apikey de un usuario con los permisos que le permitan crear las organizaciones.
+  - **organization**: Diccionario con la información a crear, el único campo obligatorio es `name`. Para más
+  información sobre los campos posibles, ver la [documentación de CKAN](https://docs.ckan.org/en/latest/api/#ckan.logic.action.create.organization_create)
+  - **parent** (opcional, default: None): Si se define, la organización pasada en `organization` se crea bajo la
+  organización con `name` pasado en `parent`. Si no se pasa un parámetro, las organizaciones son creadas como primer
+  nivel.
+  
+  Retorna el diccionario de la organización creada. El resultado tiene un campo `success` que indica si fue creado
+  exitosamente o no.
+
+
 ## Anexo I: Estructura de respuestas
 
 ### validate_catalog()
diff --git a/pydatajson/backup.py b/pydatajson/backup.py
index e0faf7d..2ee5544 100644
--- a/pydatajson/backup.py
+++ b/pydatajson/backup.py
@@ -79,7 +79,7 @@ def make_catalogs_backup(catalogs, local_catalogs_dir="",
 
 def make_catalog_backup(catalog, catalog_id=None, local_catalogs_dir="",
                         include_metadata=True, include_data=True,
-                        include_datasets=None,
+                        include_datasets=[],
                         include_distribution_formats=['CSV', 'XLS'],
                         include_metadata_xlsx=True, use_short_path=False):
     """Realiza una copia local de los datos y metadatos de un catálogo.
diff --git a/pydatajson/federation.py b/pydatajson/federation.py
index eb5564b..6ba9a28 100644
--- a/pydatajson/federation.py
+++ b/pydatajson/federation.py
@@ -347,23 +347,44 @@ def push_organization_tree_to_ckan(portal_url, apikey, org_tree, parent=None):
                     exitosa o no.
 
     """
-    portal = RemoteCKAN(portal_url, apikey=apikey)
     created = []
     for node in org_tree:
-        if parent:
-            node['groups'] = [{'name': parent}]
-        try:
-            pushed_org = portal.call_action('organization_create',
-                                            data_dict=node)
-            pushed_org['success'] = True
-        except Exception as e:
-            logger.exception('Ocurrió un error creando la organización {}: {}'
-                             .format(node['title'], str(e)))
-            pushed_org = {'name': node, 'success': False}
-
+        pushed_org = push_organization_to_ckan(portal_url,
+                                               apikey,
+                                               node,
+                                               parent=parent)
         if pushed_org['success']:
             pushed_org['children'] = push_organization_tree_to_ckan(
                 portal_url, apikey, node['children'], parent=node['name'])
 
         created.append(pushed_org)
     return created
+
+
+def push_organization_to_ckan(portal_url, apikey, organization, parent=None):
+    """Toma una organización y la crea en el portal de destino.
+        Args:
+            portal_url (str): La URL del portal CKAN de destino.
+            apikey (str): La apikey de un usuario con los permisos que le
+                permitan crear la organización.
+            organization(dict): Datos de la organización a crear.
+            parent(str): Campo name de la organización padre.
+        Returns:
+            (dict): Devuelve el diccionario de la organizacion enviada,
+                junto con el status detallando si la creación fue
+                exitosa o no.
+
+    """
+    portal = RemoteCKAN(portal_url, apikey=apikey)
+    if parent:
+        organization['groups'] = [{'name': parent}]
+    try:
+        pushed_org = portal.call_action('organization_create',
+                                        data_dict=organization)
+        pushed_org['success'] = True
+    except Exception as e:
+        logger.exception('Ocurrió un error creando la organización {}: {}'
+                         .format(organization['title'], str(e)))
+        pushed_org = {'name': organization, 'success': False}
+
+    return pushed_org

Push organization to ckan
El objetivo es implementar un método que tome la data de una organización y cree via API la organización en un andino pasado por parámetro
diff --git a/tests/test_federation.py b/tests/test_federation.py
index daf9df4..375dee3 100644
--- a/tests/test_federation.py
+++ b/tests/test_federation.py
@@ -495,6 +495,7 @@ class OrganizationsTestCase(FederationSuite):
         if parent is None:
             self.assertTrue('groups' not in node)
         else:
+            self.assertEqual(1, len(node['groups']))
             self.assertDictEqual(node['groups'][0],
                                  {'name': parent})
 
@@ -511,6 +512,33 @@ class OrganizationsTestCase(FederationSuite):
         mock_portal.return_value.call_action.assert_called_with(
             'organization_show', data_dict={'id': 'test_id'})
 
+    def test_push_organization_sets_correct_attributes_on_success(
+            self, mock_portal):
+        mock_portal.return_value.call_action = (lambda _, data_dict: data_dict)
+        pushed_org = push_organization_to_ckan(self.portal_url,
+                                               self.apikey,
+                                               self.org_tree[0])
+        self.assertTrue(pushed_org['success'])
+
+    def test_push_organization_assigns_parent_correctly(self, mock_portal):
+        mock_portal.return_value.call_action = (lambda _, data_dict: data_dict)
+        pushed_org = push_organization_to_ckan(self.portal_url,
+                                               self.apikey,
+                                               self.org_tree[0],
+                                               parent='parent')
+        self.assertEqual(1, len(pushed_org['groups']))
+        self.assertDictEqual(pushed_org['groups'][0], {'name': 'parent'})
+
+    def test_push_organization_sets_correct_attributes_on_failures(
+            self, mock_portal):
+        def broken_call(_, __):
+            raise Exception('broken api call')
+        mock_portal.return_value.call_action = broken_call
+        pushed_org = push_organization_to_ckan(self.portal_url,
+                                               self.apikey,
+                                               self.org_tree[0])
+        self.assertFalse(pushed_org['success'])
+
     def test_push_organizations_sends_correct_hierarchy(self, mock_portal):
         mock_portal.return_value.call_action = (lambda _, data_dict: data_dict)
         pushed_tree = push_organization_tree_to_ckan(self.portal_url,

pip install -e .[dev]
parse_log_pytest
requirements.txt
nose pytest
mkdir tests/temp
3.6
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
charset-normalizer==2.0.12
ckanapi==4.0
docopt==0.6.2
et-xmlfile==1.1.0
idna==3.10
importlib-metadata==4.8.3
iniconfig==1.1.1
isodate==0.6.0
jdcal==1.4.1
jsonschema==2.6.0
nose==1.3.7
openpyxl==2.4.11
packaging==21.3
pluggy==1.0.0
py==1.11.0
-e git+https://github.com/datosgobar/pydatajson.git@ac551b939a944f2e0bbabfef546672ae243233b2#egg=pydatajson
pyparsing==3.1.4
pytest==7.0.1
python-dateutil==2.6.1
requests==2.27.1
rfc3987==1.3.7
six==1.11.0
tomli==1.2.3
typing_extensions==4.1.1
unicodecsv==0.14.1
Unidecode==0.4.21
urllib3==1.22
zipp==3.6.0

name: pydatajson
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - charset-normalizer==2.0.12
      - ckanapi==4.0
      - docopt==0.6.2
      - et-xmlfile==1.1.0
      - idna==3.10
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - isodate==0.6.0
      - jdcal==1.4.1
      - jsonschema==2.6.0
      - nose==1.3.7
      - openpyxl==2.4.11
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - python-dateutil==2.6.1
      - requests==2.27.1
      - rfc3987==1.3.7
      - six==1.11.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - unicodecsv==0.14.1
      - unidecode==0.04.21
      - urllib3==1.22
      - zipp==3.6.0
prefix: /opt/conda/envs/pydatajson

tests/test_federation.py::OrganizationsTestCase::test_push_organization_assigns_parent_correctly tests/test_federation.py::OrganizationsTestCase::test_push_organization_sets_correct_attributes_on_failures tests/test_federation.py::OrganizationsTestCase::test_push_organization_sets_correct_attributes_on_success
tests/test_federation.py::PushDatasetTestCase::test_dataset_id_is_preserved_if_catalog_id_is_not_passed tests/test_federation.py::PushDatasetTestCase::test_dataset_level_wrappers tests/test_federation.py::PushDatasetTestCase::test_dataset_without_license_sets_notspecified tests/test_federation.py::PushDatasetTestCase::test_harvest_catalog_with_dataset_list tests/test_federation.py::PushDatasetTestCase::test_harvest_catalog_with_empty_list tests/test_federation.py::PushDatasetTestCase::test_harvest_catalog_with_errors tests/test_federation.py::PushDatasetTestCase::test_harvest_catalog_with_no_optional_parametres tests/test_federation.py::PushDatasetTestCase::test_harvest_catalog_with_owner_org tests/test_federation.py::PushDatasetTestCase::test_id_is_created_correctly tests/test_federation.py::PushDatasetTestCase::test_id_is_updated_correctly tests/test_federation.py::PushDatasetTestCase::test_licenses_are_interpreted_correctly tests/test_federation.py::PushDatasetTestCase::test_tags_are_passed_correctly tests/test_federation.py::RemoveDatasetTestCase::test_empty_search_doesnt_call_purge tests/test_federation.py::RemoveDatasetTestCase::test_filter_in_datasets tests/test_federation.py::RemoveDatasetTestCase::test_filter_in_out_datasets tests/test_federation.py::RemoveDatasetTestCase::test_query_one_dataset tests/test_federation.py::RemoveDatasetTestCase::test_query_over_500_datasets tests/test_federation.py::RemoveDatasetTestCase::test_remove_through_filters_and_organization tests/test_federation.py::PushThemeTestCase::test_ckan_portal_is_called_with_correct_parametres tests/test_federation.py::PushThemeTestCase::test_empty_theme_search_raises_exception tests/test_federation.py::PushThemeTestCase::test_function_pushes_theme_by_identifier tests/test_federation.py::PushThemeTestCase::test_function_pushes_theme_by_label tests/test_federation.py::PushCatalogThemesTestCase::test_empty_portal_pushes_every_theme tests/test_federation.py::PushCatalogThemesTestCase::test_full_portal_pushes_nothing tests/test_federation.py::PushCatalogThemesTestCase::test_non_empty_intersection_pushes_missing_themes tests/test_federation.py::OrganizationsTestCase::test_get_organization_calls_api_correctly tests/test_federation.py::OrganizationsTestCase::test_get_organizations_calls_api_correctly tests/test_federation.py::OrganizationsTestCase::test_push_organizations_cuts_trees_on_failures tests/test_federation.py::OrganizationsTestCase::test_push_organizations_sends_correct_hierarchy
pydatajson/backup.py pydatajson/federation.py docs/MANUAL.md
pydatajson/backup.py pydatajson/federation.py docs/MANUAL.md