diff --git a/domain.admin.inc b/domain.admin.inc
index 0310908..f297536 100644
--- a/domain.admin.inc
+++ b/domain.admin.inc
@@ -175,36 +175,6 @@ function domain_configure() {
  * FormsAPI for configuring the domain module.
  */
 function domain_configure_form($form, &$form_state, $user_submitted = FALSE) {
-  $form['domain_behavior'] = array(
-    '#type' => 'radios',
-    '#title' => t('New content settings'),
-    '#required' => TRUE,
-    '#default_value' => (int) variable_get('domain_behavior', DOMAIN_INSTALL_RULE),
-    '#options' => array(1 => t('Show on all affiliate sites'), 2 => t('Only show on selected sites')),
-    '#description' => t('If set to <em>Show on all affiliate sites</em>, this value will automatically assign new content to all affiliates.')
-  );
-  $node_types = node_type_get_names();
-  $form['domain_node'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Send to all affiliates'),
-    '#collapsible' => TRUE,
-    '#collapsed' => FALSE,
-    '#states' => array(
-      'visible' => array(
-        ':input[name=domain_behavior]' => array('value' => '2'),
-      ),
-    ),
-  );
-  foreach ($node_types as $key => $value) {
-    $form['domain_node']['domain_node_' . $key] = array(
-      '#type' => 'checkbox',
-      '#title' => check_plain($value),
-      '#default_value' => variable_get('domain_node_' . $key, 0),
-    );
-  }
-  $form['domain_node']['message'] = array(
-    '#markup' => t('If new content is set to "Show on all affiliate sites," these settings will be ignored.'),
-  );
   $form['domain_debug'] = array(
     '#type' => 'radios',
     '#title' => t('Debugging status'),
@@ -1072,6 +1042,109 @@ function domain_batch_form_submit($form, &$form_state) {
 }
 
 /**
+ * FormsAPI to set default domain_site and domain_id membership settings for bundles.
+ *
+ * @todo: persistent variables 'domain_node_[bundlename]' and 'domain_node_affiliate_[domain_id]' should be changed to
+ *        'domain_node_affiliate_all' = array(bundlebame -> 0 || 1) and domain_node_affiliate_[domain_id] = array(bundlename -> 0 || 1)
+ *
+ * Current variables:
+ *
+ * domain_node_[bundlename] (return int):
+ *   determines default behaviour whether node of type [bundlename] is being published to all domains or not.
+ *
+ * domain_node_affiliate_[domain_id] (return array(bundlename => 0 || 1)): 
+ *   determines default behaviour whether node of type [bundlename] is being published to affiliate [domain_id] or not.
+ *
+ */
+function domain_bundles_form($form, &$form_state) {
+ $form = array();
+ $node_types = node_type_get_names();
+ 
+ $form['domain_behavior'] = array(
+    '#type' => 'radios',
+    '#title' => t('New content settings'),
+    '#required' => TRUE,
+    '#default_value' => (int) variable_get('domain_behavior', DOMAIN_INSTALL_RULE),
+    '#options' => array(1 => t('Show on all affiliate sites'), 2 => t('Only show on selected sites')),
+    '#description' => t('If set to <em>Show on all affiliate sites</em>, this value will automatically assign new content to all affiliates.')
+  );
+  $form['domain_node'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Send to all affiliates'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+    '#states' => array(
+      'visible' => array(
+        ':input[name=domain_behavior]' => array('value' => '2'),
+      ),
+    ),
+  );
+  foreach ($node_types as $key => $value) {
+    $form['domain_node']['domain_node_' . $key] = array(
+      '#type' => 'checkbox',
+      '#title' => check_plain($value),
+      '#default_value' => variable_get('domain_node_' . $key, 0),
+    );
+  }
+  $form['domain_node']['message'] = array(
+    '#markup' => t('If new content is set to "Show on all affiliate sites", these settings will be ignored.'),
+  );
+  $form['domain_node_affiliate_active'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Publish on currently active domain'),
+    '#collapsible' => TRUE,
+    '#tree' => TRUE,
+    '#collapsed' => TRUE,
+    '#states' => array(
+      'visible' => array(
+        ':input[name=domain_behavior]' => array('value' => '2'),
+      ),
+    ),
+  );
+  foreach ($node_types as $name => $title) {
+    $settings = variable_get('domain_node_affiliate_active', array());
+    $form['domain_node_affiliate_active'][$name] = array(
+      '#type' => 'checkbox',
+      '#title' => check_plain($title),
+      '#default_value' => (isset($settings[$name])) ? $settings[$name] : 1,
+    );
+  }
+  $form['domain_node_affiliate_active']['message'] = array(
+    '#markup' => t('If new content is set to "Show on all affiliate sites", these settings only determine to which domain(s) the content belongs to.'),
+    );
+  foreach (domain_domains() as $id => $info) {
+    $settings = variable_get('domain_node_affiliate_' . $id, array());
+    $form['domain_node_affiliate_' . $id] = array(
+        '#type' => 'fieldset',
+        '#title' => t('Publish on') . ' ' . check_plain($info['sitename']),
+        '#collapsible' => TRUE,
+        '#tree' => TRUE,
+        '#collapsed' => TRUE,
+        '#states' => array(
+          'visible' => array(
+           ':input[name=domain_behavior]' => array('value' => '2'),
+          ),
+        ),
+    );
+    foreach ($node_types as $name => $title) {
+    $form['domain_node_affiliate_' . $id][$name] = array(
+      '#type' => 'checkbox',
+      '#title' => check_plain($title),
+      '#default_value' => (isset($settings[$name])) ? $settings[$name] : 0,
+    );
+    }
+    $form['domain_node_affiliate_' . $id]['message'] = array(
+      '#markup' => t('If new content is set to "Show on all affiliate sites", these settings only determine to which domain(s) the content belongs to.'),
+    );
+  }
+ 
+  $form = system_settings_form($form);
+  // System settings form adds a theme we cannot use.
+  unset($form['#theme']);
+  return $form;
+}
+
+/**
  * FormsAPI to set default domain membership for each role.
  *
  * These settings are added to the $user object.
diff --git a/domain.module b/domain.module
index 0aac564..0072524 100644
--- a/domain.module
+++ b/domain.module
@@ -252,6 +252,16 @@ function domain_menu() {
       );
     }
   }
+  $items['admin/structure/domain/bundles'] = array(
+    'title' => 'Node defaults',
+    'access arguments' => array('administer domains'),
+    'type' => MENU_LOCAL_TASK,
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('domain_bundles_form'),
+    'file' => 'domain.admin.inc',
+    'description' => 'Default domain settings for bundles.',
+    'weight' => -3
+  );
   $items['admin/structure/domain/roles'] = array(
     'title' => 'User defaults',
     'access arguments' => array('administer domains'),
@@ -1938,8 +1948,9 @@ function domain_node_grants($account, $op) {
  *
  */
 function domain_node_access_records($node) {
-  $_domain = domain_get_domain();
-
+  // get the default affiliates, use currently active domain as fallback
+  $default_affiliates = domain_node_get_default_affiliates($node->type, array(domain_get_domain()));
+  
   // Define the $grants array.
   $grants = array();
   // Check to see if the node domains were set properly.
@@ -1948,8 +1959,8 @@ function domain_node_access_records($node) {
   if (!isset($node->domain_site)) {
     // We came from a separate source, so let's set the proper defaults.
     $node->domain_site = variable_get('domain_node_' . $node->type, variable_get('domain_behavior', DOMAIN_INSTALL_RULE));
-    // And the currently active domain.
-    $node->domains = array($_domain['domain_id'] => $_domain['domain_id']);
+    // And add the default affiliates.
+    $node->domains = $default_affiliates;
   }
 
   // If the form is hidden, we are passed the 'domains_raw' variable.
@@ -2300,10 +2311,9 @@ function domain_form_alter(&$form, &$form_state, $form_id) {
 
   // Grab the globals we need.
   global $user;
-  $_domain = domain_get_domain();
 
-  // By default, the requesting domain is assigned.
-  $default = array($_domain['domain_id']);
+  // Get default affiliates.
+  $default = domain_node_get_default_affiliates($form['#node']->type);
   // How is core content handled for this site?
   // In D7, type handling is strict, so make this value 0 or 1.
   // @TODO: clean up DOMAIN_INSTALL handling.
@@ -3856,3 +3866,41 @@ function domain_get_tokens($prefixes = array()) {
   }
   return $tokens;
 }
+
+/**
+ * Returns all default assigned domain ids of a node, determined by its bundle.
+ *
+ * @param $bundle
+ *  The bundle of the node (like 'article').
+ * @param $fallback_domains
+ *  (optional) An array of domains which are used if no default domain is assigned.
+ *  NOTE: The array can be empty because site admin may want empty domain assignment fields by default.
+ *
+ * @return
+ *  An array of domain ids, both key and value contain the id.
+ */
+function domain_node_get_default_affiliates($bundle, $fallback_domains = array()) {
+$affiliates = array();
+$domains = domain_domains();
+foreach($domains as $domain) {
+   $settings = variable_get('domain_node_affiliate_' . $domain['domain_id'], array());
+   if (isset($settings) && $settings[$bundle] == 1) {
+      $affiliates[$domain['domain_id']] = $domain['domain_id'];
+   }
+}
+// Assign the requesting domain if not disabled by user in the domain_bundles_form.
+$settings = variable_get('domain_node_affiliate_active', array());
+if (!isset($settings[$bundle]) || (isset($settings[$bundle]) && $settings[$bundle] == 1)) {
+  $_domain = domain_get_domain();
+  if (!in_array($_domain['domain_id'], $affiliates)) {
+    $affiliates[$_domain['domain_id']] = $_domain['domain_id'];
+  }
+}
+// use fallback domains (if any) when no default affiliate exists:
+if (empty($affiliates) && !empty($fallback_domains)) { 
+   foreach ($fallback_domains as $domain) {
+    $affiliates[$domain['domain_id']] = $domain['domain_id'];
+   }
+}
+return $affiliates;
+}
diff --git a/domain_settings/domain_settings.module b/domain_settings/domain_settings.module
index 265da4c..ad517c5 100644
--- a/domain_settings/domain_settings.module
+++ b/domain_settings/domain_settings.module
@@ -242,6 +242,7 @@ function domain_settings_add_element($form_id) {
   // These forms are known to be problematic, so omit them.
   $disallow = array(
     'domain_configure_form',
+    'domain_bundles_form', // @todo: allow domain sensitive settings.
     'system_file_system_settings', // Changing file paths is dangerous.
     'system_performance_settings', // JS and CSS aggregation is not supported.
   );
