diff --git a/Modules/Applications/AppMorphology/app/otbMorphologicalProfilesAnalysis.cxx b/Modules/Applications/AppMorphology/app/otbMorphologicalProfilesAnalysis.cxx
index a7bc15c56bfde1cc0cd1615327be8810a50f9b74..ceb603301466957915e5fbdc093637306575cbc0 100644
--- a/Modules/Applications/AppMorphology/app/otbMorphologicalProfilesAnalysis.cxx
+++ b/Modules/Applications/AppMorphology/app/otbMorphologicalProfilesAnalysis.cxx
@@ -269,12 +269,13 @@ private:
       }
 
     classificationFilter = MultiScaleClassificationFilterType::New();
-    classificationFilter->SetOpeningProfileDerivativeMaxima( omsCharFilter->GetOutput() );
-    classificationFilter->SetOpeningProfileCharacteristics( omsCharFilter->GetOutputCharacteristics() );
-    classificationFilter->SetClosingProfileDerivativeMaxima( cmsCharFilter->GetOutput() );
-    classificationFilter->SetClosingProfileCharacteristics( cmsCharFilter->GetOutputCharacteristics() );
-    classificationFilter->SetSigma( sigma );
-    classificationFilter->SetLabelSeparator( static_cast<unsigned short>(initValue + profileSize * step) );
+    using namespace Functor::MultiScaleConvexOrConcaveDecisionRule_tags;
+    classificationFilter->SetVariadicNamedInput<max_opening_profile_derivative>( omsCharFilter->GetOutput() );
+    classificationFilter->SetVariadicNamedInput<opening_profile_characteristics>( omsCharFilter->GetOutputCharacteristics() );
+    classificationFilter->SetVariadicNamedInput<max_closing_profile_derivative>( cmsCharFilter->GetOutput() );
+    classificationFilter->SetVariadicNamedInput<opening_profile_characteristics>( cmsCharFilter->GetOutputCharacteristics() );
+    classificationFilter->GetModifiableFunctor().SetSigma( sigma );
+    classificationFilter->GetModifiableFunctor().SetLabelSeparator( static_cast<unsigned short>(initValue + profileSize * step) );
     AddProcess(classificationFilter, "Classification");
     classificationFilter->Update();
     SetParameterOutputImage( "out", classificationFilter->GetOutput() );