diff --git a/org.eclipse.opencert.apm.assurproj.reuse/src/org/eclipse/opencert/apm/assurproj/reuse/views/ReuseAssistanceView.java b/org.eclipse.opencert.apm.assurproj.reuse/src/org/eclipse/opencert/apm/assurproj/reuse/views/ReuseAssistanceView.java
index c86c626..28a7096 100644
--- a/org.eclipse.opencert.apm.assurproj.reuse/src/org/eclipse/opencert/apm/assurproj/reuse/views/ReuseAssistanceView.java
+++ b/org.eclipse.opencert.apm.assurproj.reuse/src/org/eclipse/opencert/apm/assurproj/reuse/views/ReuseAssistanceView.java
Binary files differ
diff --git a/org.eclipse.opencert.apm.assurproj.wizards/src/org/eclipse/opencert/apm/assurproj/wizards/ui/wizards/AssurProjRefFrameworkSelectionWizardPage.java b/org.eclipse.opencert.apm.assurproj.wizards/src/org/eclipse/opencert/apm/assurproj/wizards/ui/wizards/AssurProjRefFrameworkSelectionWizardPage.java
index 4d56974..f72b153 100644
--- a/org.eclipse.opencert.apm.assurproj.wizards/src/org/eclipse/opencert/apm/assurproj/wizards/ui/wizards/AssurProjRefFrameworkSelectionWizardPage.java
+++ b/org.eclipse.opencert.apm.assurproj.wizards/src/org/eclipse/opencert/apm/assurproj/wizards/ui/wizards/AssurProjRefFrameworkSelectionWizardPage.java
@@ -543,36 +543,46 @@
 		while (actIterator.hasNext()){
 			RefActivity act=actIterator.next();
 			EList<RefActivity> subActivities = act.getSubActivity();
+			
+			EList<RefRequirement> requirements = act.getOwnedRequirement();
+			EList<RefApplicability> applicabilities = act.getApplicability();
+			UpdateCriticality(criticalityViewer,aplicabilityViewer, tviewer,applicabilities,act,null);
+			UpdateReqCriticality(criticalityViewer,aplicabilityViewer, tviewer,requirements,act);
+			
 			if(subActivities.size()>0){
 				UpdateActCriticality(criticalityViewer,aplicabilityViewer, tviewer,subActivities);
 			}
-			EList<RefRequirement> requirements = act.getOwnedRequirement();
-			EList<RefApplicability> applicabilities = act.getApplicability();
-			UpdateCriticality(criticalityViewer,aplicabilityViewer, tviewer,applicabilities);
-			UpdateReqCriticality(criticalityViewer,aplicabilityViewer, tviewer,requirements);
-			
 		}
 	}
 	
 	public void UpdateReqCriticality(CheckboxTreeViewerExt criticalityViewer, 
 			CheckboxTreeViewerExt aplicabilityViewer,
 			CheckboxTreeViewerExt tviewer,
-			EList<RefRequirement> requirements){
+			EList<RefRequirement> requirements,
+			RefActivity act){
 		Iterator<RefRequirement> reqIterator = requirements.iterator();
 		while(reqIterator.hasNext()){
 			RefRequirement req = reqIterator.next();
 			EList<RefRequirement> subReq = req.getSubRequirement();
-			if(subReq.size()>0){
-				UpdateReqCriticality(criticalityViewer,aplicabilityViewer, tviewer,subReq);
-			}
+			
 			EList<RefApplicability> reqApplicabilities = req.getApplicability();
-			UpdateCriticality(criticalityViewer, aplicabilityViewer, tviewer,reqApplicabilities);
+			UpdateCriticality(criticalityViewer, aplicabilityViewer, tviewer,reqApplicabilities,act,req);
+			
+			if(subReq.size()>0){
+				UpdateReqCriticality(criticalityViewer,aplicabilityViewer, tviewer,subReq,act);
+			}
 		}
 		
 	
 	}
-	public void UpdateCriticality(CheckboxTreeViewerExt criticalityViewer, CheckboxTreeViewerExt aplicabilityViewer,CheckboxTreeViewerExt tviewer,EList<RefApplicability> applicabilities){
+	public void UpdateCriticality(CheckboxTreeViewerExt criticalityViewer, CheckboxTreeViewerExt aplicabilityViewer,CheckboxTreeViewerExt tviewer,EList<RefApplicability> applicabilities, RefActivity act, RefRequirement req){
 		
+		//Is there is not applicabilities  related to the element,it will be checked if it's parent refActivity is checked
+		if(applicabilities.size()==0){		
+			if(req!=null){
+				tviewer.setChecked(req, tviewer.getChecked(act));
+			}
+		}
 		
 		Iterator<RefApplicability> applIterator = applicabilities.iterator();		
 		while(applIterator.hasNext()){
@@ -580,7 +590,7 @@
 			RefAssurableElement target = appli.getApplicTarget();
 			if (target!=null) {			
 				tviewer.setChecked(target, false);
-				tviewer.setChildrenStatus(target,false);
+				//tviewer.setChildrenStatus(target,false);
 				EList<RefCriticalityApplicability> critAppli = appli.getApplicCritic();
 				Iterator<RefCriticalityApplicability> critAppliIterator = critAppli.iterator();
 				while(critAppliIterator.hasNext()){
@@ -591,7 +601,7 @@
 					boolean statusApp =  aplicabilityViewer.getChecked(applicabilityLevel);
 					if(statusCrit && statusApp ){
 						tviewer.setChecked(target, true);
-						tviewer.setChildrenStatus(target,true);
+						//tviewer.setChildrenStatus(target,true);
 					}
 					
 					//ALC
@@ -607,6 +617,35 @@
 				}
 					
 			}	
+			else if (act!=null){
+				EList<RefCriticalityApplicability> critAppli = appli.getApplicCritic();
+				Iterator<RefCriticalityApplicability> critAppliIterator = critAppli.iterator();
+				while(critAppliIterator.hasNext()){
+					RefCriticalityApplicability critApp = critAppliIterator.next();
+					RefCriticalityLevel criticalityLevel = critApp.getCriticLevel();
+					RefApplicabilityLevel applicabilityLevel = critApp.getApplicLevel();
+					boolean statusCrit = criticalityViewer.getChecked(criticalityLevel);
+					boolean statusApp =  aplicabilityViewer.getChecked(applicabilityLevel);
+					if(statusCrit && statusApp ){						
+						tviewer.setChecked(act, true);						
+						//tviewer.setChildrenStatus(act,true);
+						if(req!=null){
+							tviewer.setChecked(req, true);						
+							//tviewer.setChildrenStatus(req,true);
+						}
+						
+					}
+					else{
+						tviewer.setChecked(act, false);
+						//tviewer.setChildrenStatus(act,false);
+						
+						if(req!=null){
+							tviewer.setChecked(req, false);						
+						//	tviewer.setChildrenStatus(req,false);
+						}
+					}
+				}
+			}
 		}
 
 	}
