- definitions.yaml
 
 topology_template:
-  description: Template of a queue including its hosting stack.
+  description: Template of a database including its hosting stack.
 
   inputs:
-    mq_server_ip:
+    server_ip:
       type: string
       description: IP address of the message queuing server to receive messages from.
       default: 127.0.0.1
-    my_receiver_port:
+    server_port:
       type: integer
       description: Port to be used for receiving messages.
       default: 8080
     tran_app:
       type: example.QueuingSubsystem
       properties:
-        server_ip: { get_input: mq_server_ip }
-        server_port: { get_input: my_receiver_port }
+        server_ip: { get_input: server_ip }
+        server_port: { get_input: server_port }
       requirements:
         - host:
             node: server
 
+++ /dev/null
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-  Service template with topology_template, act as a nested system inside another system.
-
-imports:
-  - definitions.yaml
-
-topology_template:
-  description: Template of a database including its hosting stack.
-
-  inputs:
-    mq_server_ip:
-      type: string
-      description: IP address of the message queuing server to receive messages from.
-    receiver_port:
-      type: string
-      description: Port to be used for receiving messages.
-    my_cpus:
-      type: integer
-      description: Number of CPUs for the server.
-      constraints:
-        - valid_values: [ 1, 2, 4, 8 ]
-
-  substitution_mappings:
-    node_type: example.TransactionSubsystem
-    capabilities:
-      message_receiver: [ app, message_receiver ]
-    requirements:
-      database_endpoint: [ app, database ]
-
-  node_templates:
-    app:
-      type: example.SomeApp
-      properties:
-        admin_user: foo
-        pool_size: 10
-      capabilities:
-        message_receiver:
-          properties:
-            server_ip: { get_input: mq_server_ip }
-      requirements:
-        - host:
-            node: websrv
-
-    websrv:
-      type: tosca.nodes.WebServer
-      capabilities:
-        data_endpoint:
-          properties:
-            port_name: { get_input: receiver_port }
-      requirements:
-        - host:
-            node: server
-
-    server:
-      type: tosca.nodes.Compute
-      capabilities:
-        host:
-          properties:
-            disk_size: 10 GB
-            num_cpus: { get_input: my_cpus }
-            mem_size: 4096 MB
-        os:
-          properties:
-            architecture: x86_64
-            type: Linux
-            distribution: Ubuntu
-            version: 14.04
-
-  outputs:
-    receiver_ip:
-      description: private IP address of the message receiver application
-      value: { get_attribute: [ server, private_address ] }
-# It seems current _process_intrisic_function can not handle more than 2 arguments, save it for later
-#    receiver_port:
-#      description: Port of the message receiver endpoint
-#      value: { get_attribute: [ app, data_endpoint, port_name ] }
-
-  groups:
-    webserver_group:
-      members: [ websrv, server ]
-      type: tosca.groups.Root
 
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 imports:
-  - definitions.yaml
-  - subsystem.yaml
+  - queuingsubsystem.yaml
+  - transactionsubsystem.yaml
+  - databasesubsystem.yaml
 
 topology_template:
   description: Template of online transaction processing service.
     mq:
       type: example.QueuingSubsystem
       # properties:
-        # to be updated when substitution_mapping is implemented
+        # to be updated when substitution_mapping is validated later
       properties:
         server_ip: { get_input: mq_server_ip }
         server_port: { get_input: mq_server_port }
       # capabilities:
         # message_queue_endpoint:
-          # to be updated when substitution_mapping is implemented
+          # to be updated when substitution_mapping is validated later
       requirements:
         - receiver1: trans1
         - receiver2: trans2
     trans1:
       type: example.TransactionSubsystem
       properties:
-        # TODO to be updated when substitution_mapping is implemented
-        # mq_server_ip: { get_attribute: [ mq, server_ip ] }
-        # for now, we will use the loopback address to avoid errors as
-        # this property is required in the schema
-        mq_server_ip: 127.0.0.1
-        receiver_port: 8080
+        # mq_server_ip: 127.0.0.1
+        mq_server_ip: { get_attribute: [ mq, server_ip ] }
+        # receiver_port: 8080
+        receiver_port: { get_attribute: [ mq, server_port ] }
       # capabilities:
         # message_receiver:
-          # to be updated when substitution_mapping is implemented
+          # to be updated when substitution_mapping is validated later
       requirements:
         - database_endpoint: dbsys
 
     trans2:
       type: example.TransactionSubsystem
       properties:
-        # TODO to be updated when substitution_mapping is implemented
-        # mq_server_ip: { get_attribute: [ mq, server_ip ] }
-        # for now, we will use the loopback address to avoid errors as
-        # this property is required in the schema
-        mq_server_ip: 127.0.0.1
-        receiver_port: 8080
+        # mq_server_ip: 127.0.0.1
+        mq_server_ip: { get_attribute: [ mq, server_ip ] }
+        # receiver_port: 8080
+        receiver_port: { get_attribute: [ mq, server_port ] }
       # capabilities:
         # message_receiver:
-          # to be updated when substitution_mapping is implemented
+          # to be updated when substitution_mapping is validated later
       requirements:
         - database_endpoint: dbsys
 
     dbsys:
       type: example.DatabaseSubsystem
       # properties:
-        # to be updated when substitution_mapping is implemented
+        # to be updated when substitution_mapping is validated later
       # capabilities:
         # database_endpoint:
-          # to be updated when substitution_mapping is implemented
+          # to be updated when substitution_mapping is validated later