diff --git a/scenarios/tests/StatechartProfilesTestArmar3Simulation/config/RobotControl.cfg b/scenarios/tests/StatechartProfilesTestArmar3Simulation/config/RobotControl.cfg
index 01fcafba4fec1e48dbcca6eb8abde6ec4582352c..6c8b174ef8ed1ea4d7a1aee4bf64f939d87bee4b 100644
--- a/scenarios/tests/StatechartProfilesTestArmar3Simulation/config/RobotControl.cfg
+++ b/scenarios/tests/StatechartProfilesTestArmar3Simulation/config/RobotControl.cfg
@@ -112,6 +112,6 @@ ArmarX.RobotControlStateOfferer.proxyName = "StatechartProfilesTestGroupRemoteSt
 #  - Case sensitivity:   no
 #  - Required:           no
 # ArmarX.RobotControlStateOfferer.ObjectName = ""
-
+ArmarX.RobotControlStateOfferer.XMLStatechartProfile = "Armar3Simulation"
 
 
diff --git a/scenarios/tests/StatechartProfilesTestArmar3a/config/RobotControl.cfg b/scenarios/tests/StatechartProfilesTestArmar3a/config/RobotControl.cfg
index 01fcafba4fec1e48dbcca6eb8abde6ec4582352c..0de35bad4f0b589d4eee3c528a38b196d3119eeb 100644
--- a/scenarios/tests/StatechartProfilesTestArmar3a/config/RobotControl.cfg
+++ b/scenarios/tests/StatechartProfilesTestArmar3a/config/RobotControl.cfg
@@ -113,5 +113,5 @@ ArmarX.RobotControlStateOfferer.proxyName = "StatechartProfilesTestGroupRemoteSt
 #  - Required:           no
 # ArmarX.RobotControlStateOfferer.ObjectName = ""
 
-
+ArmarX.XMLStateComponent.XMLStatechartProfile = "Armar3a"
 
diff --git a/source/RobotAPI/statecharts/operations/RobotControl.cpp b/source/RobotAPI/statecharts/operations/RobotControl.cpp
index 47c178faafd6d44ddb8c597dc59cad5fdb4085c2..d99d262ac3203a9a9037f747b80cc057b02f12e8 100644
--- a/source/RobotAPI/statecharts/operations/RobotControl.cpp
+++ b/source/RobotAPI/statecharts/operations/RobotControl.cpp
@@ -80,7 +80,7 @@ namespace armarx
         robotFunctionalState = stateList.begin()->second;
         callRemoteState(stateId, StringVariantContainerBaseMap());
 
-        const std::string proxyName = getProperty<std::string>("proxyName").getValue();
+        const std::string proxyName = getProperty<std::string>("XMLStatechartProfile").getValue() + getProperty<std::string>("proxyName").getValue();
         const std::string stateName = getProperty<std::string>("stateName").getValue();
         ARMARX_IMPORTANT << VAROUT(proxyName) << VAROUT(stateName);
 
diff --git a/source/RobotAPI/statecharts/operations/RobotControl.h b/source/RobotAPI/statecharts/operations/RobotControl.h
index c0d2cb409b03da05d24c8ea87e18ee8d7ee16949..fa875b00e5da55fc8a6e58a4232bf481f4af342d 100644
--- a/source/RobotAPI/statecharts/operations/RobotControl.h
+++ b/source/RobotAPI/statecharts/operations/RobotControl.h
@@ -38,6 +38,8 @@ namespace armarx
         RobotControlContextProperties(std::string prefix):
             StatechartContextPropertyDefinitions(prefix)
         {
+
+            defineOptionalProperty<std::string>("XMLStatechartProfile", "", "Name of the statechart profile to be used. This is used as prefix to the proxyName. So GraspGroupRemoteStateOfferer will be Armar3aGraspGroupRemoteStateOfferer");
             defineOptionalProperty<std::string>("proxyName", "", "name of the proxy to load");
             defineOptionalProperty<std::string>("stateName", "", "name of the state to load");
         }