A system for customizing the functionality of a software application in real-time, comprising: a server , configured to allow a user to use a software application at the server, and to create a current session with the software application; means adapted to provide a rule set including a plurality of rules, wherein each rule defines actions to be taken by the software application in response to a particular event occurring within the current session, and wherein the rules are written in a portable schema format, wherein the schemas are parseable in real-time to permit real-time modification of the rules without system down-time, means adapted to provide a scenario service for using the plurality of rules to determine the rules in effect for a particular scenario, wherein the particular scenario is a chain of rules and corresponding actions defining a flow of interactions between the user and the software application and includes metadata; means adapted to provide an events service for receiving notification of events from the software application when a user causes an event to occur in the current session, wherein the events describe the use by the user of the software application during the current session; and means adapted to provide a rules engine and configured to use the rules in the rule set and events received by the rules engine, when a user causes the events to occur in the current session, to select a scenario based on the received events, to determine actions to be taken by the software application, and to personalise in real-time the behaviour of the software application at the server for the user in the current session. a server , configured to allow a user to use a software application at the server, and to create a current session with the software application; means adapted to provide a rule set including a plurality of rules, wherein each rule defines actions to be taken by the software application in response to a particular event occurring within the current session, and wherein the rules are written in a portable schema format, wherein the schemas are parseable in real-time to permit real-time modification of the rules without system down-time, means adapted to provide a scenario service for using the plurality of rules to determine the rules in effect for a particular scenario, wherein the particular scenario is a chain of rules and corresponding actions defining a flow of interactions between the user and the software application and includes metadata; means adapted to provide an events service for receiving notification of events from the software application when a user causes an event to occur in the current session, wherein the events describe the use by the user of the software application during the current session; and means adapted to provide a rules engine and configured to use the rules in the rule set and events received by the rules engine, when a user causes the events to occur in the current session, to select a scenario based on the received events, to determine actions to be taken by the software application, and to personalise in real-time the behaviour of the software application at the server for the user in the current session. <EOS>