diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
index 2b2861a..00cc4d2 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceHandler.java
@@ -412,8 +412,8 @@
             for (int j = 0; j < svc.getProperties().length; j++) {
                 Property prop = svc.getProperties()[j];
                 if (fieldName.equals(prop.getField())) {
-                    // it is the associated property
-                    return prop.getValue();
+                    // Manage the No Value case.
+                    return prop.onGet(pojo, fieldName, value); 
                 }
             }
         }
diff --git a/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/NullCheckServiceProvider.java b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/NullCheckServiceProvider.java
new file mode 100644
index 0000000..ee775b3
--- /dev/null
+++ b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/component/NullCheckServiceProvider.java
@@ -0,0 +1,57 @@
+package org.apache.felix.ipojo.test.scenarios.component;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
+
+public class NullCheckServiceProvider implements FooService {
+    
+    private String prop1;
+    private String prop2;
+    
+    public NullCheckServiceProvider() {
+      if (prop1 == null) {
+          prop2= "0";
+      }
+    }
+    
+
+    public boolean foo() {
+        if (prop1 == null  && prop2 != null) {
+            prop1 = "0";
+            prop2 = null;
+            return true;
+        }
+        if (prop2 == null  && prop1 != null) {
+            prop1 = null;
+            prop2 = "0";
+            return true;
+        }
+        return false;
+    }
+
+    public Properties fooProps() {
+        return null;
+    }
+
+    public boolean getBoolean() {
+        return false;
+    }
+
+    public double getDouble() {
+        return 0;
+    }
+
+    public int getInt() {
+        return 0;
+    }
+
+    public long getLong() {
+        return 0;
+    }
+
+    public Boolean getObject() {
+        return null;
+    }
+
+}
diff --git a/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/NullCheck.java b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/NullCheck.java
new file mode 100644
index 0000000..9466f33
--- /dev/null
+++ b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/NullCheck.java
@@ -0,0 +1,77 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.test.scenarios.ps;
+
+import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.junit4osgi.helpers.IPOJOHelper;
+import org.apache.felix.ipojo.test.scenarios.ps.service.FooService;
+import org.osgi.framework.ServiceReference;
+
+public class NullCheck extends OSGiTestCase {
+    
+    public void testNull() {
+        IPOJOHelper helper = new IPOJOHelper(this);
+        
+        String factName = "PS-Null";
+        String compName = "NullCheck";
+        ServiceReference ref = null;
+        
+        // Check that no Foo Service are available
+        ref = getServiceReference(FooService.class.getName());
+        assertNull("FS already available", ref);
+    
+        // Get the factory to create a component instance
+        Factory fact = helper.getFactory(factName);
+        assertNotNull("Cannot find the factory FooProvider-1", fact);
+        
+        // Don't give any configuration so, properties are null.
+        helper.createComponentInstance(factName, compName);
+        
+        // Get a FooService provider
+        ref = getServiceReference(FooService.class.getName(), "(" + "instance.name" + "=" + compName + ")");
+
+        assertNotNull("FS not available", ref);
+        
+        // Check service properties
+        assertNull(ref.getProperty("prop1"));
+        assertNotNull(ref.getProperty("prop2"));
+        
+        // Test foo invocation
+        FooService fs = (FooService) getServiceObject(ref);
+        assertTrue("FooService invocation failed", fs.foo());
+        
+        ref = getServiceReference(FooService.class.getName(), "(" + "instance.name" + "=" + compName + ")");
+        // Check service properties
+        assertNotNull(ref.getProperty("prop1"));
+        assertNull(ref.getProperty("prop2"));
+
+        
+        helper.dispose();
+
+        
+        // Check that there is no more FooService
+        ref = getServiceReference(FooService.class.getName(), null);
+        
+        
+        assertNull("FS available, but component instance stopped", ref);
+        
+    }
+
+}
diff --git a/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceTestSuite.java b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceTestSuite.java
index fc7f83f..720c46a 100644
--- a/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceTestSuite.java
+++ b/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceTestSuite.java
@@ -38,6 +38,7 @@
         ots.addTestSuite(ProvidedServiceArchitectureTest.class);
         ots.addTestSuite(ClassTest.class);
         ots.addTestSuite(OSGiPropertiesTest.class);
+        ots.addTestSuite(NullCheck.class);
         return ots;
     }
 
diff --git a/ipojo/tests/core/service-providing/src/main/resources/metadata.xml b/ipojo/tests/core/service-providing/src/main/resources/metadata.xml
index 3e7c026..50c458d 100644
--- a/ipojo/tests/core/service-providing/src/main/resources/metadata.xml
+++ b/ipojo/tests/core/service-providing/src/main/resources/metadata.xml
@@ -3,160 +3,169 @@
     xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
     xmlns="org.apache.felix.ipojo"
 >
-	<!-- Simple provider  -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		name="PS-FooProviderType-1" architecture="true">
-		<provides />
-	</component>
-	
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		name="PS-FooProviderType-itf" architecture="true">
-		<provides
-			specifications="org.apache.felix.ipojo.test.scenarios.ps.service.FooService" />
-	</component>
-	
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		name="PS-FooProviderType-3" architecture="true">
-		<provides>
-			<property name="foo" field="m_foo" />
-			<property name="bar" field="m_bar" />
-			<property name="baz" type="java.lang.String" />
-		</provides>
-		<properties propagation="true">
-			<property name="foo" field="m_foo" />
-			<property name="bar" field="m_bar" />
-		</properties>
-	</component>
-	
-	<!-- Providers providing 2 services -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
-		name="PS-FooBarProviderType-1" architecture="true">
-		<provides />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
-		name="PS-FooBarProviderType-2" architecture="true">
-		<provides
-			specifications="{org.apache.felix.ipojo.test.scenarios.ps.service.FooService, org.apache.felix.ipojo.test.scenarios.ps.service.BarService }" />
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
-		name="PS-FooBarProviderType-3" architecture="true">
-		<provides
-			specifications="{org.apache.felix.ipojo.test.scenarios.ps.service.FooService}">
-			<property name="baz" type="java.lang.String" value="foo" />
-		</provides>
-		<provides
-			specifications="{org.apache.felix.ipojo.test.scenarios.ps.service.BarService}">
-			<property name="baz" type="java.lang.String" value="bar" />
-		</provides>
-	</component>
-	
+  <!-- Simple provider  -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+    name="PS-FooProviderType-1" architecture="true">
+    <provides />
+  </component>
+  
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+    name="PS-FooProviderType-itf" architecture="true">
+    <provides
+      specifications="org.apache.felix.ipojo.test.scenarios.ps.service.FooService" />
+  </component>
+  
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+    name="PS-FooProviderType-3" architecture="true">
+    <provides>
+      <property name="foo" field="m_foo" />
+      <property name="bar" field="m_bar" />
+      <property name="baz" type="java.lang.String" />
+    </provides>
+    <properties propagation="true">
+      <property name="foo" field="m_foo" />
+      <property name="bar" field="m_bar" />
+    </properties>
+  </component>
+  
+  <!-- Providers providing 2 services -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
+    name="PS-FooBarProviderType-1" architecture="true">
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
+    name="PS-FooBarProviderType-2" architecture="true">
+    <provides
+      specifications="{org.apache.felix.ipojo.test.scenarios.ps.service.FooService, org.apache.felix.ipojo.test.scenarios.ps.service.BarService }" />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.FooBarProviderType1"
+    name="PS-FooBarProviderType-3" architecture="true">
+    <provides
+      specifications="{org.apache.felix.ipojo.test.scenarios.ps.service.FooService}">
+      <property name="baz" type="java.lang.String" value="foo" />
+    </provides>
+    <provides
+      specifications="{org.apache.felix.ipojo.test.scenarios.ps.service.BarService}">
+      <property name="baz" type="java.lang.String" value="bar" />
+    </provides>
+  </component>
+  
 
-	<!-- Provider with dynamic property -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
-		name="PS-FooProviderType-Dyn" architecture="true">
-		<provides>
-			<property name="int" field="intProp" value="2" />
-			<property name="boolean" field="boolProp" value="false" />
-			<property name="string" field="strProp" value="foo" />
-			<property name="strAProp" field="strAProp"
-				value="{foo, bar}" />
-			<property name="intAProp" field="intAProp" value="{ 1,2,3}" />
-		</provides>
-	</component>
-	
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
-		name="PS-FooProviderType-2" architecture="true">
-		<provides>
-			<property name="int" type="int" value="2" />
-			<property name="long" type="long" value="40" />
-			<property name="string" type="java.lang.String" value="foo" />
-			<property name="strAProp" type="java.lang.String[]"
-				value="{foo, bar}" />
-			<property name="intAProp" type="int[]" value="{1,2,3}" />
-		</provides>
-	</component>
-	
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn2"
-		name="PS-FooProviderType-Dyn2" architecture="true">
-		<provides>
-			<property name="int" field="intProp" value="4" />
-			<property name="boolean" field="boolProp" />
-			<property name="string" field="strProp" />
-			<property name="strAProp" field="strAProp" />
-			<property name="intAProp" field="intAProp"
-				value="{1, 2,3 }" />
-		</provides>
-	</component>
-	
-	<!--  Inherited Provides -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
-		name="PS-PI1" architecture="true">
-		<provides />
-	</component>
+  <!-- Provider with dynamic property -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
+    name="PS-FooProviderType-Dyn" architecture="true">
+    <provides>
+      <property name="int" field="intProp" value="2" />
+      <property name="boolean" field="boolProp" value="false" />
+      <property name="string" field="strProp" value="foo" />
+      <property name="strAProp" field="strAProp"
+        value="{foo, bar}" />
+      <property name="intAProp" field="intAProp" value="{1,2,3}" />
+    </provides>
+  </component>
+  
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+    name="PS-FooProviderType-2" architecture="true">
+    <provides>
+      <property name="int" type="int" value="2" />
+      <property name="long" type="long" value="40" />
+      <property name="string" type="java.lang.String" value="foo" />
+      <property name="strAProp" type="java.lang.String[]"
+        value="{foo, bar}" />
+      <property name="intAProp" type="int[]" value="{1,2,3}" />
+    </provides>
+  </component>
+  
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn2"
+    name="PS-FooProviderType-Dyn2" architecture="true">
+    <provides>
+      <property name="int" field="intProp" value="4" />
+      <property name="boolean" field="boolProp" />
+      <property name="string" field="strProp" />
+      <property name="strAProp" field="strAProp" />
+      <property name="intAProp" field="intAProp"
+        value="{1, 2,3 }" />
+    </provides>
+  </component>
+  
+  <!--  Inherited Provides -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
+    name="PS-PI1" architecture="true">
+    <provides />
+  </component>
 
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
-		name="PS-PI1-1" architecture="true">
-		<provides
-			specifications="org.apache.felix.ipojo.test.scenarios.ps.service.ParentParentInterface" />
-	</component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
+    name="PS-PI1-1" architecture="true">
+    <provides
+      specifications="org.apache.felix.ipojo.test.scenarios.ps.service.ParentParentInterface" />
+  </component>
 
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
-		name="PS-PI1-2" architecture="true">
-		<provides
-			specifications="{org.apache.felix.ipojo.test.scenarios.ps.service.ParentParentInterface, org.apache.felix.ipojo.test.scenarios.ps.service.ParentInterface2}" />
-	</component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation1"
+    name="PS-PI1-2" architecture="true">
+    <provides
+      specifications="{org.apache.felix.ipojo.test.scenarios.ps.service.ParentParentInterface, org.apache.felix.ipojo.test.scenarios.ps.service.ParentInterface2}" />
+  </component>
 
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation2"
-		name="PS-PI2" architecture="true">
-		<provides />
-	</component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation2"
+    name="PS-PI2" architecture="true">
+    <provides />
+  </component>
 
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation2"
-		name="PS-PI2-1" architecture="true">
-		<provides
-			specifications="org.apache.felix.ipojo.test.scenarios.ps.service.ParentParentInterface" />
-	</component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation2"
+    name="PS-PI2-1" architecture="true">
+    <provides
+      specifications="org.apache.felix.ipojo.test.scenarios.ps.service.ParentParentInterface" />
+  </component>
 
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation3"
-		name="PS-PI3" architecture="true">
-		<provides />
-	</component>
-	
-	<!-- Concrete and abstract class -->
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation"
-		name="PS-PI4" architecture="true">
-		<provides specifications="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation"/>
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation2"
-		name="PS-PI5" architecture="true">
-		<provides specifications="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation"/>
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation4"
-		name="PS-PI6" architecture="true">
-		<provides specifications="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation"/>
-	</component>
-	<component
-		classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation3"
-		name="PS-PI7" architecture="true">
-		<provides specifications="[org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation, 
-					org.apache.felix.ipojo.test.scenarios.ps.service.FooService]"/>
-	</component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation3"
+    name="PS-PI3" architecture="true">
+    <provides />
+  </component>
+  
+  <!-- Concrete and abstract class -->
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation"
+    name="PS-PI4" architecture="true">
+    <provides specifications="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation"/>
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation2"
+    name="PS-PI5" architecture="true">
+    <provides specifications="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation"/>
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation4"
+    name="PS-PI6" architecture="true">
+    <provides specifications="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation"/>
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessImplementation3"
+    name="PS-PI7" architecture="true">
+    <provides specifications="[org.apache.felix.ipojo.test.scenarios.component.inherited.ProcessParentImplementation, 
+          org.apache.felix.ipojo.test.scenarios.ps.service.FooService]"/>
+  </component>
+  
+  <!--  Null Check -->
+  <component classname="org.apache.felix.ipojo.test.scenarios.component.NullCheckServiceProvider" immediate="true"
+    name="PS-Null">
+    <provides>
+      <property field="prop1"/>
+      <property field="prop2"/>
+    </provides>
+  </component>
 </ipojo>
