diff --git a/domain.admin.inc b/domain.admin.inc
index 0310908..1986997 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..f01b255 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'),
@@ -1946,10 +1956,22 @@ function domain_node_access_records($node) {
   // If not, we are dealing with an automated node process, which
   // means we have to add the logic from hook_form_alter() here.
   if (!isset($node->domain_site)) {
+    // get the default affiliates
+	$default_affiliates = domain_node_get_default_affiliates($node->type);
+    // we need a compatible array for the $node->domains property:
+	$node_default_domains = array();
+	foreach($default_affiliates as $key => $value) {
+	    // build the compatible property array
+		$node_default_domains[$value] = $value;
+	}
+	// ensure there exists an assigned domain, so lets grab the currently active one here:
+	if(empty($node_default_domains)) {
+		$node_default_domains[$_domain['domain_id']] = $_domain['domain_id'];
+	}
     // 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 = $node_default_domains;
   }
 
   // If the form is hidden, we are passed the 'domains_raw' variable.
@@ -2300,10 +2322,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 +3877,35 @@ function domain_get_tokens($prefixes = array()) {
   }
   return $tokens;
 }
+
+/**
+ * Returns all default affiliate's domain ids of a node, determined by its bundle.
+ *
+ * This function is used in domain_form_alter().
+ *
+ * @param $bundle
+ *  The bundle of the node (like 'article').
+ *
+ * @return
+ *  An array of domain ids. Array is empty if there are no affiliates by default or bundlename doesnt exist.
+ */
+function domain_node_get_default_affiliates($bundle) {
+$bundles = node_type_get_names();
+// return no affiliates if bundlename doesnt exist
+if(!isset($bundle) || !array_key_exists($bundle,$bundles)) return array();
+$affiliates = array();
+$domains = domain_domains();
+foreach($domains as $id => $info) {
+   $settings = variable_get('domain_node_affiliate_' . $id, array());
+   if(isset($settings) && $settings[$bundle] == 1)
+      $affiliates[] = $id;
+}
+// Assign the requesting domain if not disabled by user in the domain_bundles_form.
+$settings = variable_get('domain_node_affiliate_active', array());
+if(empty($settings) || (isset($settings[$bundle]) && $settings[$bundle] == 1)) {
+	$_domain = domain_get_domain();
+	if(!in_array($_domain['domain_id'],$affiliates))
+		$affiliates[] = $_domain['domain_id'];
+}
+return $affiliates;
+}
diff --git a/domain_settings/domain_settings.module b/domain_settings/domain_settings.module
index 265da4c..4ff9962 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.
   );
