diff --git a/example-service/.classpath b/example-service/.classpath
index f020f15d0..453de6873 100644
--- a/example-service/.classpath
+++ b/example-service/.classpath
@@ -1,50 +1,51 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/j2ep-unittests/.classpath b/j2ep-unittests/.classpath
index b7f86e1a3..8ce818cac 100644
--- a/j2ep-unittests/.classpath
+++ b/j2ep-unittests/.classpath
@@ -1,13 +1,14 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mock-psp-service/.classpath b/mock-psp-service/.classpath
index 569a34dec..15d99d242 100644
--- a/mock-psp-service/.classpath
+++ b/mock-psp-service/.classpath
@@ -1,12 +1,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/oscm-build/cruisecontrol.xml b/oscm-build/cruisecontrol.xml
index 29f9f871a..3b8e73591 100644
--- a/oscm-build/cruisecontrol.xml
+++ b/oscm-build/cruisecontrol.xml
@@ -42,6 +42,8 @@
+
+
@@ -57,14 +59,6 @@
-
-
-
-
-
-
-
-
diff --git a/oscm-common/.classpath b/oscm-common/.classpath
index 67b16790e..157d09289 100644
--- a/oscm-common/.classpath
+++ b/oscm-common/.classpath
@@ -1,14 +1,25 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/oscm-common/javasrc/org/oscm/logging/Log4jLogger.java b/oscm-common/javasrc/org/oscm/logging/Log4jLogger.java
index 0f0a408c4..3d659bc22 100644
--- a/oscm-common/javasrc/org/oscm/logging/Log4jLogger.java
+++ b/oscm-common/javasrc/org/oscm/logging/Log4jLogger.java
@@ -76,17 +76,17 @@ public class Log4jLogger {
*/
Log4jLogger(Class> category, Locale locale) {
this.locale = locale;
- systemLogger = Logger.getLogger(SYSTEM_LOG_CATEGORY_SUFFIX + "."
- + category.getName());
+ systemLogger = Logger.getLogger(
+ SYSTEM_LOG_CATEGORY_SUFFIX + "." + category.getName());
systemLogger.setAdditivity(false);
- accessLogger = Logger.getLogger(ACCESS_LOG_CATEGORY_SUFFIX + "."
- + category.getName());
+ accessLogger = Logger.getLogger(
+ ACCESS_LOG_CATEGORY_SUFFIX + "." + category.getName());
accessLogger.setAdditivity(false);
- auditLogger = Logger.getLogger(AUDIT_LOG_CATEGORY_SUFFIX + "."
- + category.getName());
+ auditLogger = Logger.getLogger(
+ AUDIT_LOG_CATEGORY_SUFFIX + "." + category.getName());
auditLogger.setAdditivity(false);
- proxyLogger = Logger.getLogger(REVERSEPROXY_LOG_CATEGORY_SUFFIX + "."
- + category.getName());
+ proxyLogger = Logger.getLogger(
+ REVERSEPROXY_LOG_CATEGORY_SUFFIX + "." + category.getName());
proxyLogger.setAdditivity(false);
}
@@ -118,6 +118,18 @@ public void logInfo(int logTargets, LogMessageIdentifier identifier,
}
}
+ /**
+ * Logs information with log type {@link Level#INFO}. The information is
+ * written to the system.log file.
+ *
+ * @param message
+ * The message to be logged.
+ */
+ public void logInfoDebug(String message) {
+ String msgWithId = addMsgIdToMsg(LogMessageIdentifier.DEBUG, message);
+ systemLogger.info(msgWithId);
+ }
+
/**
* Logs an information with log type {@link Level#DEBUG}.
*
@@ -316,8 +328,8 @@ private String[] escapeParams(String... params) {
private ResourceBundle getResourceBundle() {
ResourceBundle bundleForLog;
try {
- bundleForLog = ResourceBundle.getBundle(
- LOG_MESSAGE_RESOURCE_BASENAME, locale);
+ bundleForLog = ResourceBundle
+ .getBundle(LOG_MESSAGE_RESOURCE_BASENAME, locale);
} catch (MissingResourceException e) {
bundleForLog = ResourceBundle
.getBundle(LOG_MESSAGE_RESOURCE_BASENAME);
diff --git a/oscm-devruntime/javares/devscripts/build-dev-Database.xml b/oscm-devruntime/javares/devscripts/build-dev-Database.xml
index d68b696ac..9d3fa728b 100644
--- a/oscm-devruntime/javares/devscripts/build-dev-Database.xml
+++ b/oscm-devruntime/javares/devscripts/build-dev-Database.xml
@@ -9,6 +9,7 @@
+
@@ -62,6 +63,8 @@
+
+
diff --git a/oscm-devruntime/javares/local/estgoebel1/SP_metadata.xml b/oscm-devruntime/javares/local/estgoebel1/SP_metadata.xml
new file mode 100644
index 000000000..da0177cb7
--- /dev/null
+++ b/oscm-devruntime/javares/local/estgoebel1/SP_metadata.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/oscm-devruntime/javares/local/estgoebel1/configsettings.properties b/oscm-devruntime/javares/local/estgoebel1/configsettings.properties
new file mode 100644
index 000000000..c6a19c08f
--- /dev/null
+++ b/oscm-devruntime/javares/local/estgoebel1/configsettings.properties
@@ -0,0 +1,53 @@
+# Copyright FUJITSU LIMITED 2017
+MAIL_SERVER=estdevmail1
+MAIL_PORT=25
+MAIL_RESPONSE_ADDRESS=saas@est.fujitsu.com
+BASE_URL=http://estgoebel1:8580/oscm-portal
+BASE_URL_HTTPS=https://estgoebel1:8581/oscm-portal
+LOG_FILE_PATH=../logs
+LOG_LEVEL=INFO
+LOG_CONFIG_FILE=./log4j.properties
+PERMITTED_PERIOD_UNCONFIRMED_ORGANIZATIONS=604800000
+TIMER_INTERVAL_ORGANIZATION=86400000
+TIMER_INTERVAL_ORGANIZATION_OFFSET=0
+TIMER_INTERVAL_SUBSCRIPTION_EXPIRATION=21600000
+TIMER_INTERVAL_SUBSCRIPTION_EXPIRATION_OFFSET=0
+TIMER_INTERVAL_BILLING_OFFSET=345600000
+#HTTP_PROXY=proxy.intern.est.fujitsu.com
+#HTTP_PROXY_PORT=8080
+
+
+USER_PASSWORD=secret
+
+REPORT_ENGINEURL=http://estgoebel1:8580/birt/frameset?__report=${reportname}.rptdesign&SessionId=${sessionid}&__locale=${locale}&WSDLURL=${wsdlurl}&SOAPEndPoint=${soapendpoint}
+REPORT_WSDLURL=http://estgoebel1:8581/Report/ReportingServiceBean?wsdl
+REPORT_SOAP_ENDPOINT=http://estgoebel1:8581/Report/ReportingServiceBean
+
+#PSP_POST_URL=https://test.ctpe.net/frontend/payment.prc
+PSP_POST_URL=http://estgoebel1:8280/mock-psp-service/PSPMockRegistrationEntry
+PSP_XML_URL=https://test.ctpe.net/payment/ctpe
+PSP_SECURITY_SENDER=8a90818a2511ebad01252599c6e803d2
+PSP_TRANSACTION_CHANNEL=8a90818a2511ebad012525a19f8703ec
+PSP_USER_LOGIN=8a90818a2511ebad01252599c6ea03d6
+PSP_USER_PWD=GefjxT8r
+PSP_USAGE_ENABLED=false
+PSP_TRUSTSTORE_FILE_PATH=C:/jdk1.7.0_45/jre/lib/security/cacerts
+PSP_TRUSTSTORE_PWD=changeit
+PSP_RESPONSE_SERVLET_URL=https://estgoebel1:8581/oscm-pspresponse
+
+HIDDEN_UI_ELEMENTS=
+
+TAGGING_MAX_TAGS=20
+TAGGING_MIN_SCORE=1
+
+#Timeout for outgoing Webservice calls
+WS_TIMEOUT=30000
+
+#Search entries
+SEARCH_INDEX_MASTER_HOST=estgoebel1
+SEARCH_INDEX_MASTER_PORT=8437
+SEARCH_INDEX_MASTER_FACTORY_NAME=jms/bss/masterIndexerQueueFactory
+SEARCH_INDEX_MASTER_QUEUE_NAME=jms/bss/masterIndexerQueue
+
+#Specifies whether payment information is required for subscribing services for all customers
+# HIDE_PAYMENT_INFORMATION=false
diff --git a/oscm-devruntime/javares/local/estgoebel1/configsettings_app.properties b/oscm-devruntime/javares/local/estgoebel1/configsettings_app.properties
new file mode 100644
index 000000000..f883bd382
--- /dev/null
+++ b/oscm-devruntime/javares/local/estgoebel1/configsettings_app.properties
@@ -0,0 +1,18 @@
+# Copyright FUJITSU LIMITED 2017
+APP_ADMIN_MAIL_ADDRESS=bes.estessbesci5@dev.est.fujitsu.com
+APP_BASE_URL=http://estessbesci5:8880/oscm-app
+APP_KEYSTORE_PASSWORD=changeit
+APP_MAIL_RESOURCE=mail/APPMail
+APP_TIMER_INTERVAL=15000
+APP_TIMER_REFRESH_SUBSCRIPTIONS=86400000
+APP_TRUSTSTORE_PASSWORD=changeit
+APP_TRUSTSTORE_BSS_ALIAS=bes-s1as
+APP_TRUSTSTORE=./cacerts.jks
+APP_KEY_PATH=./key
+BSS_AUTH_MODE=INTERNAL
+BSS_USER_KEY=1000
+BSS_USER_PWD=_crypt:admin123
+BSS_WEBSERVICE_URL=https://estessbesci5:8181/{SERVICE}/BASIC?wsdl
+BSS_STS_WEBSERVICE_URL=https://estessbesci5:8181/{SERVICE}/STS?wsdl
+BSS_WEBSERVICE_WSDL_URL=https://estessbesci5:8181/oscm/v1.9/{SERVICE}/BASIC?wsdl
+BSS_STS_WEBSERVICE_WSDL_URL=https://estessbesci5:8181/oscm/v1.9/{SERVICE}/STS?wsdl
diff --git a/oscm-devruntime/javares/local/estgoebel1/configsettings_app_goebel1.properties b/oscm-devruntime/javares/local/estgoebel1/configsettings_app_goebel1.properties
new file mode 100644
index 000000000..310a7cb6c
--- /dev/null
+++ b/oscm-devruntime/javares/local/estgoebel1/configsettings_app_goebel1.properties
@@ -0,0 +1,19 @@
+# Copyright FUJITSU LIMITED 2017
+APP_ADMIN_MAIL_ADDRESS=lorenz.goebel@est.fujitsu.com
+APP_BASE_URL=http://estgoebel1.intern.est.fujitsu.com:8880/oscm-app
+APP_KEYSTORE_PASSWORD=changeit
+APP_MAIL_RESOURCE=mail/APPMail
+APP_TIMER_INTERVAL=15000
+APP_TIMER_REFRESH_SUBSCRIPTIONS=86400000
+APP_TRUSTSTORE_PASSWORD=changeit
+APP_TRUSTSTORE_BSS_ALIAS=bes-s1as
+APP_TRUSTSTORE=./cacerts.jks
+APP_KEY_PATH=./key
+BSS_AUTH_MODE=INTERNAL
+BSS_USER_KEY=1000
+BSS_USER_PWD=_crypt:admin123
+
+BSS_WEBSERVICE_URL=https://estgoebel1.intern.est.fujitsu.com:8181/{SERVICE}/BASIC?wsdl
+BSS_STS_WEBSERVICE_URL=https://estgoebel1.intern.est.fujitsu.com:8181/{SERVICE}/STS?wsdl
+BSS_WEBSERVICE_WSDL_URL=https://estgoebel1.intern.est.fujitsu.com:8181/oscm/v1.9/{SERVICE}/BASIC?wsdl
+BSS_STS_WEBSERVICE_WSDL_URL=https://estgoebel1.intern.est.fujitsu.com:8181/oscm/v1.9/{SERVICE}/STS?wsdl
diff --git a/oscm-devruntime/javares/local/estgoebel1/configsettings_standalone.properties b/oscm-devruntime/javares/local/estgoebel1/configsettings_standalone.properties
new file mode 100644
index 000000000..370faab29
--- /dev/null
+++ b/oscm-devruntime/javares/local/estgoebel1/configsettings_standalone.properties
@@ -0,0 +1,74 @@
+# Copyright FUJITSU LIMITED 2017
+SSO_IDP_URL=http://estgoebel1.intern.est.fujitsu.com:9080/openam/SSORedirect/metaAlias/idp
+AUTH_MODE=INTERNAL
+#AUTH_MODE=SAML_SP
+BASE_URL=http://estgoebel1:8180/oscm-portal
+BASE_URL_HTTPS=https://estgoebel1.intern.est.fujitsu.com:8181/oscm-portal
+LOG_FILE_PATH=../logs
+LOG_LEVEL=INFO
+LOG_CONFIG_FILE=./log4j.properties
+PERMITTED_PERIOD_UNCONFIRMED_ORGANIZATIONS=604800000
+TIMER_INTERVAL_ORGANIZATION=86400000
+TIMER_INTERVAL_ORGANIZATION_OFFSET=0
+TIMER_INTERVAL_SUBSCRIPTION_EXPIRATION=21600000
+TIMER_INTERVAL_SUBSCRIPTION_EXPIRATION_OFFSET=0
+TIMER_INTERVAL_BILLING_OFFSET=345600000
+
+USER_PASSWORD=secret
+
+
+REPORT_ENGINEURL=http://estgoebel1:8180/birt/frameset?__report=${reportname}.rptdesign&SessionId=${sessionid}&__locale=${locale}&WSDLURL=${wsdlurl}&SOAPEndPoint=${soapendpoint}&wsname=Report&wsport=ReportPort
+REPORT_WSDLURL=http://estgoebel1.intern.est.fujitsu.com:8181/Report/ReportingServiceBean?wsdl
+REPORT_SOAP_ENDPOINT=http://estgoebel1:8181/Report/ReportingServiceBean
+
+
+#PSP_POST_URL=https://test.ctpe.net/frontend/payment.prc
+PSP_POST_URL=http://estgoebel1:8680/mock-psp-service/PSPMockRegistrationEntry
+PSP_XML_URL=https://test.ctpe.net/payment/ctpe
+PSP_SECURITY_SENDER=8a90818a2511ebad01252599c6e803d2
+PSP_TRANSACTION_CHANNEL=8a90818a2511ebad012525a19f8703ec
+PSP_USER_LOGIN=8a90818a2511ebad01252599c6ea03d6
+PSP_USER_PWD=GefjxT8r
+PSP_USAGE_ENABLED=false
+PSP_TRUSTSTORE_FILE_PATH=C:/jdk1.7.0_45/jre/lib/security/cacerts
+PSP_TRUSTSTORE_PWD=changeit
+PSP_RESPONSE_SERVLET_URL=https://estgoebel1.intern.est.fujitsu.com:8181/oscm-pspresponse
+
+HIDDEN_UI_ELEMENTS=operator.manageBillingAdapters,techService.viewBillingAdapters
+
+SSO_ISSUER_ID=estgoebel1
+SSO_IDP_TRUSTSTORE=C:/glassfish4_web/glassfish/domains/domain1/config/keystore.jks
+SSO_IDP_TRUSTSTORE_PASSWORD=changeit
+AUTH_MODE=INTERNAL
+
+SSO_STS_ENCKEY_LEN=128
+SSO_STS_URL=http://estgoebel1:8680/oscm-integrationtests-saml2-sts/MockSTSService
+SSO_STS_METADATA_URL=http://estgoebel1:8680/oscm-integrationtests-saml2-sts/MockSTSService/mex
+
+TAGGING_MAX_TAGS=20
+TAGGING_MIN_SCORE=1
+
+#Timeout for outgoing Webservice calls
+WS_TIMEOUT=30000
+
+#Search entries
+SEARCH_INDEX_MASTER_FACTORY_NAME=jms/bss/masterIndexerQueueFactory
+SEARCH_INDEX_MASTER_QUEUE_NAME=jms/bss/masterIndexerQueue
+
+#Audit logging
+AUDIT_LOG_ENABLED=false
+AUDIT_LOG_MAX_ENTRIES_RETRIEVED=100
+
+#User count license
+MAX_NUMBER_ALLOWED_USERS=10
+TIMER_INTERVAL_USER_COUNT=43200000
+SSO_DEFAULT_TENANT_ID=8f96dede
+SSO_IDP_SAML_ASSERTION_ISSUER_ID=default
+
+#Specifies whether payment information is required for subscribing services for all customers
+# HIDE_PAYMENT_INFORMATION=false
+
+#Keystore
+SSO_SIGNING_KEYSTORE=./keystore.jks
+SSO_SIGNING_KEYSTORE_PASS=changeit
+SSO_SIGNING_KEY_ALIAS=s1as
\ No newline at end of file
diff --git a/oscm-devruntime/javares/local/estgoebel1/db-app.properties b/oscm-devruntime/javares/local/estgoebel1/db-app.properties
new file mode 100644
index 000000000..0c137dad1
--- /dev/null
+++ b/oscm-devruntime/javares/local/estgoebel1/db-app.properties
@@ -0,0 +1,21 @@
+# Copyright FUJITSU LIMITED 2017
+#Created by JInto - www.guh-software.de
+#Wed May 09 11:38:23 CEST 2012
+db.driver.class=org.postgresql.Driver
+
+#db.host=estgoebel1
+db.host=estessbesci5
+
+# database port
+db.port=5432
+
+# Name of the database
+db.name=bssapp
+
+# Name of the user to connect to the database
+db.user=bssappuser
+
+# Password of the user to connect to the database
+db.pwd=bssappuser
+db.type=postgresql
+
diff --git a/oscm-devruntime/javares/local/estgoebel1/db-appunit.properties b/oscm-devruntime/javares/local/estgoebel1/db-appunit.properties
new file mode 100644
index 000000000..15f90e5cc
--- /dev/null
+++ b/oscm-devruntime/javares/local/estgoebel1/db-appunit.properties
@@ -0,0 +1,25 @@
+# Copyright FUJITSU LIMITED 2017
+# Configuration of Database Access.
+# This configuration is used for the initial setup and
+# schema updates.
+
+# Java class of the JDBC driver
+db.driver.class=org.postgresql.Driver
+
+# database host
+db.host=estgoebel1
+
+# database port
+db.port=5432
+
+# Name of the database
+db.name=bssappunit
+
+# Name of the user to connect to the database
+db.user=bssappunituser
+
+# Password of the user to connect to the database
+db.pwd=bssappunituser
+
+# Database type
+db.type=postgresql
\ No newline at end of file
diff --git a/oscm-devruntime/javares/local/estgoebel1/db.properties b/oscm-devruntime/javares/local/estgoebel1/db.properties
new file mode 100644
index 000000000..a47c537cc
--- /dev/null
+++ b/oscm-devruntime/javares/local/estgoebel1/db.properties
@@ -0,0 +1,30 @@
+# Copyright FUJITSU LIMITED 2017
+# Configuration of Database Access.
+# This configuration is used for the initial setup and
+# schema updates.
+
+# Java class of the JDBC driver
+db.driver.class=org.postgresql.Driver
+
+# database host
+# In cluster environment localhost must not be used!
+#db.host=estgoebel1
+db.host=estessbesci5
+
+# database port
+db.port=5432
+
+# Name of the database
+db.name=bss
+
+# Name of the database
+db.timer.name=bsstimer
+
+# Name of the user to connect to the database
+db.user=bssuser
+
+# Password of the user to connect to the database
+db.pwd=bssuser
+
+# Database type
+db.type=postgresql
\ No newline at end of file
diff --git a/oscm-devruntime/javares/local/estgoebel1/integration.properties b/oscm-devruntime/javares/local/estgoebel1/integration.properties
new file mode 100644
index 000000000..dcee744bb
--- /dev/null
+++ b/oscm-devruntime/javares/local/estgoebel1/integration.properties
@@ -0,0 +1,79 @@
+# Copyright FUJITSU LIMITED 2017
+dbinterpreter=C:/PostgreSQL/9.6/bin/psql
+glassfish.home=C:/glassfish4
+keytool=C:/jdk1.8.0_131/jre/bin/keytool.exe
+bss.java.home=C:/jdk1.8.0_131
+apache.present=false
+
+#BES domain
+glassfish.bes.domain.name=integration-bes
+glassfish.bes.domain.portbase=8100
+glassfish.bes.domain.admin.port=8148
+glassfish.bes.domain.http.port=8180
+glassfish.bes.domain.https.port=8181
+glassfish.bes.domain.debug.port=8109
+glassfish.bes.domain.jacoco.port=8163
+glassfish.bes.domain.admin.user=admin
+glassfish.bes.domain.admin.pwd=adminadmin
+glassfish.bes.domain.master.pwd=changeit
+glassfish.bes.domain.host=estgoebel1
+glassfish.bes.domain.jms.port=8176
+glassfish.bes.DEBUG_PORT=8109
+glassfish.bes.WS_PORT=8081
+glassfish.bes.HIBERNATE_SLAVE_REFRESH_SEC=5
+
+imq.persist.jdbc.postgresql.opendburl=jdbc:postgresql://estgoebel1:5432/bssjms
+
+#Hibernate search master index domain
+glassfish.master.domain.name=integration-master-index
+glassfish.master.domain.portbase=8400
+glassfish.master.domain.admin.port=8448
+glassfish.master.domain.host=estgoebel1
+glassfish.master.domain.jms.port=8476
+
+#Hibernate search master properties
+master.slave.shared.hibernate.search.sourceBase=C\\:/glassfish4/masterSourceBase
+master.hibernate.search.default.refresh=60
+
+#Example domain
+glassfish.example.domain.name=integration-example
+glassfish.example.domain.portbase=8600
+glassfish.example.domain.admin.port=8648
+glassfish.example.domain.http.port=8680
+glassfish.example.domain.debug.port=8609
+
+#wait times for start/stop domains
+glassfish.domain.stop.waitSeconds=30
+glassfish.domain.start.maxWaitSeconds=600
+
+#only for cluster setup
+glassfish.cluster.name=bescluster
+glassfish.node.agent.name=na1
+glassfish.node.instance.name=gf1
+glassfish.cluster.JMS_PROVIDER_PORT=8576
+glassfish.cluster.JMX_SYSTEM_CONNECTOR_PORT=8586
+glassfish.cluster.IIOP_LISTENER_PORT=8537
+glassfish.cluster.IIOP_SSL_LISTENER_PORT=8538
+glassfish.cluster.IIOP_SSL_MUTUALAUTH_PORT=8539
+glassfish.cluster.HTTP_LISTENER_PORT=8580
+glassfish.cluster.HTTP_SSL_LISTENER_PORT=8581
+glassfish.cluster.WS_PORT=8582
+glassfish.cluster.DEBUG_PORT=8509
+glassfish.cluster.HIBERNATE_SLAVE_REFRESH_SEC=5
+
+#mail
+mail.host=estdevmail1
+mail.response.address=saas@est.fujitsu.com
+mail.port=25
+mail.use.authentication=false
+mail.user=saas
+mail.password=password
+mail.timeout=30000
+mail.connectiontimeout=30000
+
+apache.root.dir=/srv/www/htdocs
+
+glassfish.app.domain.admin.port=8848
+glassfish.app.domain.name=app-domain
+glassfish.app.domain.portbase=8800
+glassfish.app.DEBUG_PORT=8809
\ No newline at end of file
diff --git a/oscm-devruntime/javares/local/estgoebel1/postgresql.conf b/oscm-devruntime/javares/local/estgoebel1/postgresql.conf
new file mode 100644
index 000000000..918a2e271
--- /dev/null
+++ b/oscm-devruntime/javares/local/estgoebel1/postgresql.conf
@@ -0,0 +1,597 @@
+# -----------------------------
+# PostgreSQL configuration file
+# -----------------------------
+#
+# This file consists of lines of the form:
+#
+# name = value
+#
+# (The "=" is optional.) Whitespace may be used. Comments are introduced with
+# "#" anywhere on a line. The complete list of parameter names and allowed
+# values can be found in the PostgreSQL documentation.
+#
+# The commented-out settings shown in this file represent the default values.
+# Re-commenting a setting is NOT sufficient to revert it to the default value;
+# you need to reload the server.
+#
+# This file is read on server startup and when the server receives a SIGHUP
+# signal. If you edit the file on a running system, you have to SIGHUP the
+# server for the changes to take effect, or use "pg_ctl reload". Some
+# parameters, which are marked below, require a server shutdown and restart to
+# take effect.
+#
+# Any parameter can also be given as a command-line option to the server, e.g.,
+# "postgres -c log_connections=on". Some parameters can be changed at run time
+# with the "SET" SQL command.
+#
+# Memory units: kB = kilobytes Time units: ms = milliseconds
+# MB = megabytes s = seconds
+# GB = gigabytes min = minutes
+# h = hours
+# d = days
+
+
+#------------------------------------------------------------------------------
+# FILE LOCATIONS
+#------------------------------------------------------------------------------
+
+# The default values of these variables are driven from the -D command-line
+# option or PGDATA environment variable, represented here as ConfigDir.
+
+#data_directory = 'ConfigDir' # use data in another directory
+ # (change requires restart)
+#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file
+ # (change requires restart)
+#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file
+ # (change requires restart)
+
+# If external_pid_file is not explicitly set, no extra PID file is written.
+#external_pid_file = '' # write an extra PID file
+ # (change requires restart)
+
+
+#------------------------------------------------------------------------------
+# CONNECTIONS AND AUTHENTICATION
+#------------------------------------------------------------------------------
+
+# - Connection Settings -
+
+listen_addresses = '*' # what IP address(es) to listen on;
+ # comma-separated list of addresses;
+ # defaults to 'localhost'; use '*' for all
+ # (change requires restart)
+port = 5432 # (change requires restart)
+max_connections = 210 # (change requires restart)
+# Note: Increasing max_connections costs ~400 bytes of shared memory per
+# connection slot, plus lock space (see max_locks_per_transaction).
+#superuser_reserved_connections = 3 # (change requires restart)
+#unix_socket_directories = '' # comma-separated list of directories
+ # (change requires restart)
+#unix_socket_group = '' # (change requires restart)
+#unix_socket_permissions = 0777 # begin with 0 to use octal notation
+ # (change requires restart)
+#bonjour = off # advertise server via Bonjour
+ # (change requires restart)
+#bonjour_name = '' # defaults to the computer name
+ # (change requires restart)
+
+# - Security and Authentication -
+
+#authentication_timeout = 1min # 1s-600s
+#ssl = off # (change requires restart)
+#ssl_ciphers = 'DEFAULT:!LOW:!EXP:!MD5:@STRENGTH' # allowed SSL ciphers
+ # (change requires restart)
+#ssl_renegotiation_limit = 512MB # amount of data between renegotiations
+#ssl_cert_file = 'server.crt' # (change requires restart)
+#ssl_key_file = 'server.key' # (change requires restart)
+#ssl_ca_file = '' # (change requires restart)
+#ssl_crl_file = '' # (change requires restart)
+#password_encryption = on
+#db_user_namespace = off
+
+# Kerberos and GSSAPI
+#krb_server_keyfile = ''
+#krb_srvname = 'postgres' # (Kerberos only)
+#krb_caseins_users = off
+
+# - TCP Keepalives -
+# see "man 7 tcp" for details
+
+#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds;
+ # 0 selects the system default
+#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds;
+ # 0 selects the system default
+#tcp_keepalives_count = 0 # TCP_KEEPCNT;
+ # 0 selects the system default
+
+
+#------------------------------------------------------------------------------
+# RESOURCE USAGE (except WAL)
+#------------------------------------------------------------------------------
+
+# - Memory -
+
+shared_buffers = 128MB # min 128kB
+ # (change requires restart)
+#temp_buffers = 8MB # min 800kB
+max_prepared_transactions = 50 # zero disables the feature
+ # (change requires restart)
+# Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory
+# per transaction slot, plus lock space (see max_locks_per_transaction).
+# It is not advisable to set max_prepared_transactions nonzero unless you
+# actively intend to use prepared transactions.
+#work_mem = 1MB # min 64kB
+#maintenance_work_mem = 16MB # min 1MB
+#max_stack_depth = 2MB # min 100kB
+
+# - Disk -
+
+#temp_file_limit = -1 # limits per-session temp file space
+ # in kB, or -1 for no limit
+
+# - Kernel Resource Usage -
+
+#max_files_per_process = 1000 # min 25
+ # (change requires restart)
+#shared_preload_libraries = '' # (change requires restart)
+
+# - Cost-Based Vacuum Delay -
+
+#vacuum_cost_delay = 0 # 0-100 milliseconds
+#vacuum_cost_page_hit = 1 # 0-10000 credits
+#vacuum_cost_page_miss = 10 # 0-10000 credits
+#vacuum_cost_page_dirty = 20 # 0-10000 credits
+#vacuum_cost_limit = 200 # 1-10000 credits
+
+# - Background Writer -
+
+#bgwriter_delay = 200ms # 10-10000ms between rounds
+#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round
+#bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round
+
+# - Asynchronous Behavior -
+
+#effective_io_concurrency = 1 # 1-1000; 0 disables prefetching
+
+
+#------------------------------------------------------------------------------
+# WRITE AHEAD LOG
+#------------------------------------------------------------------------------
+
+# - Settings -
+
+#wal_level = minimal # minimal, archive, or hot_standby
+ # (change requires restart)
+#fsync = on # turns forced synchronization on or off
+#synchronous_commit = on # synchronization level;
+ # off, local, remote_write, or on
+#wal_sync_method = fsync # the default is the first option
+ # supported by the operating system:
+ # open_datasync
+ # fdatasync (default on Linux)
+ # fsync
+ # fsync_writethrough
+ # open_sync
+#full_page_writes = on # recover from partial page writes
+#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
+ # (change requires restart)
+#wal_writer_delay = 200ms # 1-10000 milliseconds
+
+#commit_delay = 0 # range 0-100000, in microseconds
+#commit_siblings = 5 # range 1-1000
+
+# - Checkpoints -
+
+#checkpoint_segments = 3 # in logfile segments, min 1, 16MB each
+#checkpoint_timeout = 5min # range 30s-1h
+#checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0
+#checkpoint_warning = 30s # 0 disables
+
+# - Archiving -
+
+#archive_mode = off # allows archiving to be done
+ # (change requires restart)
+#archive_command = '' # command to use to archive a logfile segment
+ # placeholders: %p = path of file to archive
+ # %f = file name only
+ # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
+#archive_timeout = 0 # force a logfile segment switch after this
+ # number of seconds; 0 disables
+
+
+#------------------------------------------------------------------------------
+# REPLICATION
+#------------------------------------------------------------------------------
+
+# - Sending Server(s) -
+
+# Set these on the master and on any standby that will send replication data.
+
+#max_wal_senders = 0 # max number of walsender processes
+ # (change requires restart)
+#wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables
+#wal_sender_timeout = 60s # in milliseconds; 0 disables
+
+# - Master Server -
+
+# These settings are ignored on a standby server.
+
+#synchronous_standby_names = '' # standby servers that provide sync rep
+ # comma-separated list of application_name
+ # from standby(s); '*' = all
+#vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed
+
+# - Standby Servers -
+
+# These settings are ignored on a master server.
+
+#hot_standby = off # "on" allows queries during recovery
+ # (change requires restart)
+#max_standby_archive_delay = 30s # max delay before canceling queries
+ # when reading WAL from archive;
+ # -1 allows indefinite delay
+#max_standby_streaming_delay = 30s # max delay before canceling queries
+ # when reading streaming WAL;
+ # -1 allows indefinite delay
+#wal_receiver_status_interval = 10s # send replies at least this often
+ # 0 disables
+#hot_standby_feedback = off # send info from standby to prevent
+ # query conflicts
+#wal_receiver_timeout = 60s # time that receiver waits for
+ # communication from master
+ # in milliseconds; 0 disables
+
+
+#------------------------------------------------------------------------------
+# QUERY TUNING
+#------------------------------------------------------------------------------
+
+# - Planner Method Configuration -
+
+#enable_bitmapscan = on
+#enable_hashagg = on
+#enable_hashjoin = on
+#enable_indexscan = on
+#enable_indexonlyscan = on
+#enable_material = on
+#enable_mergejoin = on
+#enable_nestloop = on
+#enable_seqscan = on
+#enable_sort = on
+#enable_tidscan = on
+
+# - Planner Cost Constants -
+
+#seq_page_cost = 1.0 # measured on an arbitrary scale
+#random_page_cost = 4.0 # same scale as above
+#cpu_tuple_cost = 0.01 # same scale as above
+#cpu_index_tuple_cost = 0.005 # same scale as above
+#cpu_operator_cost = 0.0025 # same scale as above
+#effective_cache_size = 128MB
+
+# - Genetic Query Optimizer -
+
+#geqo = on
+#geqo_threshold = 12
+#geqo_effort = 5 # range 1-10
+#geqo_pool_size = 0 # selects default based on effort
+#geqo_generations = 0 # selects default based on effort
+#geqo_selection_bias = 2.0 # range 1.5-2.0
+#geqo_seed = 0.0 # range 0.0-1.0
+
+# - Other Planner Options -
+
+#default_statistics_target = 100 # range 1-10000
+#constraint_exclusion = partition # on, off, or partition
+#cursor_tuple_fraction = 0.1 # range 0.0-1.0
+#from_collapse_limit = 8
+#join_collapse_limit = 8 # 1 disables collapsing of explicit
+ # JOIN clauses
+
+
+#------------------------------------------------------------------------------
+# ERROR REPORTING AND LOGGING
+#------------------------------------------------------------------------------
+
+# - Where to Log -
+
+log_destination = 'stderr' # Valid values are combinations of
+ # stderr, csvlog, syslog, and eventlog,
+ # depending on platform. csvlog
+ # requires logging_collector to be on.
+
+# This is used when logging to stderr:
+logging_collector = on # Enable capturing of stderr and csvlog
+ # into log files. Required to be on for
+ # csvlogs.
+ # (change requires restart)
+
+# These are only used if logging_collector is on:
+#log_directory = 'pg_log' # directory where log files are written,
+ # can be absolute or relative to PGDATA
+#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
+ # can include strftime() escapes
+#log_file_mode = 0600 # creation mode for log files,
+ # begin with 0 to use octal notation
+#log_truncate_on_rotation = off # If on, an existing log file with the
+ # same name as the new log file will be
+ # truncated rather than appended to.
+ # But such truncation only occurs on
+ # time-driven rotation, not on restarts
+ # or size-driven rotation. Default is
+ # off, meaning append to existing files
+ # in all cases.
+#log_rotation_age = 1d # Automatic rotation of logfiles will
+ # happen after that time. 0 disables.
+#log_rotation_size = 10MB # Automatic rotation of logfiles will
+ # happen after that much log output.
+ # 0 disables.
+
+# These are relevant when logging to syslog:
+#syslog_facility = 'LOCAL0'
+#syslog_ident = 'postgres'
+
+# This is only relevant when logging to eventlog (win32):
+#event_source = 'PostgreSQL'
+
+# - When to Log -
+
+#client_min_messages = notice # values in order of decreasing detail:
+ # debug5
+ # debug4
+ # debug3
+ # debug2
+ # debug1
+ # log
+ # notice
+ # warning
+ # error
+
+#log_min_messages = warning # values in order of decreasing detail:
+ # debug5
+ # debug4
+ # debug3
+ # debug2
+ # debug1
+ # info
+ # notice
+ # warning
+ # error
+ # log
+ # fatal
+ # panic
+
+#log_min_error_statement = error # values in order of decreasing detail:
+ # debug5
+ # debug4
+ # debug3
+ # debug2
+ # debug1
+ # info
+ # notice
+ # warning
+ # error
+ # log
+ # fatal
+ # panic (effectively off)
+
+#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements
+ # and their durations, > 0 logs only
+ # statements running at least this number
+ # of milliseconds
+
+
+# - What to Log -
+
+#debug_print_parse = off
+#debug_print_rewritten = off
+#debug_print_plan = off
+#debug_pretty_print = on
+#log_checkpoints = off
+#log_connections = off
+#log_disconnections = off
+#log_duration = off
+#log_error_verbosity = default # terse, default, or verbose messages
+#log_hostname = off
+log_line_prefix = '%t ' # special values:
+ # %a = application name
+ # %u = user name
+ # %d = database name
+ # %r = remote host and port
+ # %h = remote host
+ # %p = process ID
+ # %t = timestamp without milliseconds
+ # %m = timestamp with milliseconds
+ # %i = command tag
+ # %e = SQL state
+ # %c = session ID
+ # %l = session line number
+ # %s = session start timestamp
+ # %v = virtual transaction ID
+ # %x = transaction ID (0 if none)
+ # %q = stop here in non-session
+ # processes
+ # %% = '%'
+ # e.g. '<%u%%%d> '
+#log_lock_waits = off # log lock waits >= deadlock_timeout
+#log_statement = 'none' # none, ddl, mod, all
+#log_temp_files = -1 # log temporary files equal or larger
+ # than the specified size in kilobytes;
+ # -1 disables, 0 logs all temp files
+log_timezone = 'CET'
+
+
+#------------------------------------------------------------------------------
+# RUNTIME STATISTICS
+#------------------------------------------------------------------------------
+
+# - Query/Index Statistics Collector -
+
+#track_activities = on
+#track_counts = on
+#track_io_timing = off
+#track_functions = none # none, pl, all
+#track_activity_query_size = 1024 # (change requires restart)
+#update_process_title = on
+#stats_temp_directory = 'pg_stat_tmp'
+
+
+# - Statistics Monitoring -
+
+#log_parser_stats = off
+#log_planner_stats = off
+#log_executor_stats = off
+#log_statement_stats = off
+
+
+#------------------------------------------------------------------------------
+# AUTOVACUUM PARAMETERS
+#------------------------------------------------------------------------------
+
+#autovacuum = on # Enable autovacuum subprocess? 'on'
+ # requires track_counts to also be on.
+#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and
+ # their durations, > 0 logs only
+ # actions running at least this number
+ # of milliseconds.
+#autovacuum_max_workers = 3 # max number of autovacuum subprocesses
+ # (change requires restart)
+#autovacuum_naptime = 1min # time between autovacuum runs
+#autovacuum_vacuum_threshold = 50 # min number of row updates before
+ # vacuum
+#autovacuum_analyze_threshold = 50 # min number of row updates before
+ # analyze
+#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum
+#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze
+#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum
+ # (change requires restart)
+#autovacuum_multixact_freeze_max_age = 400000000 # maximum Multixact age
+ # before forced vacuum
+ # (change requires restart)
+#autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for
+ # autovacuum, in milliseconds;
+ # -1 means use vacuum_cost_delay
+#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for
+ # autovacuum, -1 means use
+ # vacuum_cost_limit
+
+
+#------------------------------------------------------------------------------
+# CLIENT CONNECTION DEFAULTS
+#------------------------------------------------------------------------------
+
+# - Statement Behavior -
+
+#search_path = '"$user",public' # schema names
+#default_tablespace = '' # a tablespace name, '' uses the default
+#temp_tablespaces = '' # a list of tablespace names, '' uses
+ # only default tablespace
+#check_function_bodies = on
+#default_transaction_isolation = 'read committed'
+#default_transaction_read_only = off
+#default_transaction_deferrable = off
+#session_replication_role = 'origin'
+#statement_timeout = 0 # in milliseconds, 0 is disabled
+#lock_timeout = 0 # in milliseconds, 0 is disabled
+#vacuum_freeze_min_age = 50000000
+#vacuum_freeze_table_age = 150000000
+#vacuum_multixact_freeze_min_age = 5000000
+#vacuum_multixact_freeze_table_age = 150000000
+#bytea_output = 'hex' # hex, escape
+#xmlbinary = 'base64'
+#xmloption = 'content'
+
+# - Locale and Formatting -
+
+datestyle = 'iso, dmy'
+#intervalstyle = 'postgres'
+timezone = 'CET'
+#timezone_abbreviations = 'Default' # Select the set of available time zone
+ # abbreviations. Currently, there are
+ # Default
+ # Australia
+ # India
+ # You can create your own file in
+ # share/timezonesets/.
+#extra_float_digits = 0 # min -15, max 3
+#client_encoding = sql_ascii # actually, defaults to database
+ # encoding
+
+# These settings are initialized by initdb, but they can be changed.
+lc_messages = 'German_Germany.1252' # locale for system error message
+ # strings
+lc_monetary = 'German_Germany.1252' # locale for monetary formatting
+lc_numeric = 'German_Germany.1252' # locale for number formatting
+lc_time = 'German_Germany.1252' # locale for time formatting
+
+# default configuration for text search
+default_text_search_config = 'pg_catalog.german'
+
+# - Other Defaults -
+
+#dynamic_library_path = '$libdir'
+#local_preload_libraries = ''
+
+
+#------------------------------------------------------------------------------
+# LOCK MANAGEMENT
+#------------------------------------------------------------------------------
+
+#deadlock_timeout = 1s
+#max_locks_per_transaction = 64 # min 10
+ # (change requires restart)
+# Note: Each lock table slot uses ~270 bytes of shared memory, and there are
+# max_locks_per_transaction * (max_connections + max_prepared_transactions)
+# lock table slots.
+#max_pred_locks_per_transaction = 64 # min 10
+ # (change requires restart)
+
+
+#------------------------------------------------------------------------------
+# VERSION/PLATFORM COMPATIBILITY
+#------------------------------------------------------------------------------
+
+# - Previous PostgreSQL Versions -
+
+#array_nulls = on
+#backslash_quote = safe_encoding # on, off, or safe_encoding
+#default_with_oids = off
+#escape_string_warning = on
+#lo_compat_privileges = off
+#quote_all_identifiers = off
+#sql_inheritance = on
+#standard_conforming_strings = on
+#synchronize_seqscans = on
+
+# - Other Platforms and Clients -
+
+#transform_null_equals = off
+
+
+#------------------------------------------------------------------------------
+# ERROR HANDLING
+#------------------------------------------------------------------------------
+
+#exit_on_error = off # terminate session on any error?
+#restart_after_crash = on # reinitialize after backend crash?
+
+
+#------------------------------------------------------------------------------
+# CONFIG FILE INCLUDES
+#------------------------------------------------------------------------------
+
+# These options allow settings to be loaded from files other than the
+# default postgresql.conf.
+
+#include_dir = 'conf.d' # include files ending in '.conf' from
+ # directory 'conf.d'
+#include_if_exists = 'exists.conf' # include file only if it exists
+#include = 'special.conf' # include file
+
+
+#------------------------------------------------------------------------------
+# CUSTOMIZED OPTIONS
+#------------------------------------------------------------------------------
+
+# Add settings for extensions here
+
diff --git a/oscm-devruntime/javares/local/estgoebel1/test.properties b/oscm-devruntime/javares/local/estgoebel1/test.properties
new file mode 100644
index 000000000..4eb57cc37
--- /dev/null
+++ b/oscm-devruntime/javares/local/estgoebel1/test.properties
@@ -0,0 +1,52 @@
+# Copyright FUJITSU LIMITED 2017
+#glassfish
+iaas.api.uri=http://localhost:8680/fujitsu-ror-stub/cfmgapi/endpoint
+glassfish.home=C:/glassfish4
+glassfish.bes.domain=C:/glassfish4/glassfish/domains/integration-bes
+glassfish.example.domain=C:/glassfish4/glassfish/domains/integration-example
+#bes host and ports
+APP_BASE_URL=http://localhost:8880/ProvisioningService/AsynchronousProvisioningProxy?wsdl
+bes.http.url=http://estgoebel1:8180
+bes.https.url=https://estgoebel1.intern.est.fujitsu.com:8181
+
+#example host and ports
+example.fullhostname=estgoebel1.intern.est.fujitsu.com
+example.http.port=8680
+example.http.url=http://estgoebel1:8680
+example.https.url=https://estgoebel1.intern.est.fujitsu.com:8681
+
+#ORB
+java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory
+java.naming.provider.url=http://estgoebel1:8180
+org.omg.CORBA.ORBInitialHost=estgoebel1
+org.omg.CORBA.ORBInitialPort=8137
+
+#default user for webservices
+DEFAULT_USER=1000
+DEFAULT_PASSWORD=admin123
+
+#mail
+mail.anyurl=http://estgoebel1:8180/oscm-portal
+mail.username=bes.estgoebel1@dev.est.fujitsu.com
+mail.password=secret
+mail.server=estdevmail1
+mail.servertype=imap
+mail.delay=0
+
+#certificates
+
+rootca.keystore=C:/bes/git/Development/oscm-integrationtests-setup/resources/config/rootca.jks
+rootca.keystore.password=changeit
+rootca.alias=rootca
+certificates.path=C:/tmp
+
+#examples and mocks
+mock.url=http://estgoebel1:8680/oscm-integrationtests-mockproduct
+
+#canoo webtest dir
+webtest.home=C:/Canoo
+
+#user for SSO test
+sso.user.id=administrator
+sso.user.password=admin123
+
diff --git a/oscm-subscriptionmgmt/javasrc/org/oscm/subscriptionservice/bean/SubscriptionServiceBean.java b/oscm-subscriptionmgmt/javasrc/org/oscm/subscriptionservice/bean/SubscriptionServiceBean.java
index 0a8e1d88e..c12e3ae64 100644
--- a/oscm-subscriptionmgmt/javasrc/org/oscm/subscriptionservice/bean/SubscriptionServiceBean.java
+++ b/oscm-subscriptionmgmt/javasrc/org/oscm/subscriptionservice/bean/SubscriptionServiceBean.java
@@ -306,8 +306,8 @@ public VOSubscription subscribeToService(VOSubscription subscription,
Subscription sub;
PlatformUser currentUser = dataManager.getCurrentUser();
- Product prod = dataManager
- .getReference(Product.class, service.getKey());
+ Product prod = dataManager.getReference(Product.class,
+ service.getKey());
checkIfServiceAvailable(service.getKey(), service.getServiceId(),
currentUser);
checkIfSubscriptionAlreadyExists(prod);
@@ -396,7 +396,8 @@ private VOBillingContact createBillingContactForOrganization(
orgBillingContact.setOrgAddressUsed(true);
orgBillingContact.setEmail(email);
String organizationId = organization.getName() == null
- ? user.getUserId() : organization.getName();
+ ? user.getUserId()
+ : organization.getName();
orgBillingContact.setBillingContactId(organizationId
+ DateFactory.getInstance().getTransactionTime());
orgBillingContact.setOrganization(organization);
@@ -473,8 +474,9 @@ void assignUsersForSubscription(String subscriptionId, VOService service,
List usersToBeAdded = new ArrayList<>();
VOUsageLicense lic = new VOUsageLicense();
lic.setUser(UserDataAssembler.toVOUserDetails(userToAssign));
- lic.setRoleDefinition((serviceRoles == null || serviceRoles.isEmpty())
- ? null : serviceRoles.get(0));
+ lic.setRoleDefinition(
+ (serviceRoles == null || serviceRoles.isEmpty()) ? null
+ : serviceRoles.get(0));
usersToBeAdded.add(lic);
TriggerProcess proc = new TriggerProcess();
@@ -658,7 +660,8 @@ public Subscription subscribeToServiceInt(TriggerProcess tp)
Marketplace mp = null;
Product publishedService = productTemplate
.getType() == ServiceType.CUSTOMER_TEMPLATE
- ? productTemplate.getTemplate() : productTemplate;
+ ? productTemplate.getTemplate()
+ : productTemplate;
List mps = getMarketplaceDao()
.getMarketplaceByService(publishedService);
for (Marketplace m : mps) {
@@ -770,8 +773,8 @@ public Subscription subscribeToServiceInt(TriggerProcess tp)
triggerQS.sendAllNonSuspendingMessages(
TriggerMessage.create(TriggerType.SUBSCRIBE_TO_SERVICE,
- tp.getTriggerProcessParameters(), dataManager
- .getCurrentUser().getOrganization()));
+ tp.getTriggerProcessParameters(),
+ dataManager.getCurrentUser().getOrganization()));
sendSubscriptionCreatedMailToAdministrators(newSub, newSub.getProduct()
.getTechnicalProduct().isAllowingOnBehalfActing());
@@ -824,8 +827,8 @@ private void autoAssignUserForTriggerProcess(TriggerProcess tp,
if (ProvisioningType.SYNCHRONOUS.equals(techProd.getProvisioningType())
&& tp.getTriggerDefinition() != null
- && (prod.isAutoAssignUserEnabled() != null && prod
- .isAutoAssignUserEnabled().booleanValue())
+ && (prod.isAutoAssignUserEnabled() != null
+ && prod.isAutoAssignUserEnabled().booleanValue())
&& newSub.getUsageLicenseForUser(owner) == null) {
// TODO 1. assign users only for SYNCHRONOUS case.
// 2. extract code to another method (more readability).
@@ -1957,8 +1960,8 @@ public void modifyUserRole(Subscription subscription, PlatformUser usr,
String accessInfo = targetLicense == null ? ""
: getAccessInfo(subscription, targetLicense.getUser());
- commService.sendMail(usr,
- EmailType.SUBSCRIPTION_ACCESS_GRANTED, new Object[] {
+ commService.sendMail(
+ usr, EmailType.SUBSCRIPTION_ACCESS_GRANTED, new Object[] {
subscription.getSubscriptionId(), accessInfo },
subscription.getMarketplace());
@@ -2360,8 +2363,8 @@ public void unsubscribeFromServiceInt(TriggerProcess tp)
triggerQS.sendAllNonSuspendingMessages(
TriggerMessage.create(TriggerType.UNSUBSCRIBE_FROM_SERVICE,
- tp.getTriggerProcessParameters(), dataManager
- .getCurrentUser().getOrganization()));
+ tp.getTriggerProcessParameters(),
+ dataManager.getCurrentUser().getOrganization()));
tp.addTriggerProcessParameter(TriggerProcessParameterName.SUBSCRIPTION,
buildNotification(oldSubscriptionId));
@@ -2957,8 +2960,8 @@ public Subscription upgradeSubscriptionInt(TriggerProcess tp)
triggerQS.sendAllNonSuspendingMessages(
TriggerMessage.create(TriggerType.UPGRADE_SUBSCRIPTION,
- tp.getTriggerProcessParameters(), dataManager
- .getCurrentUser().getOrganization()));
+ tp.getTriggerProcessParameters(),
+ dataManager.getCurrentUser().getOrganization()));
// log upDowngrade subscription
audit.upDowngradeSubscription(dataManager, subscription, initialProduct,
@@ -3277,7 +3280,13 @@ void handleAsyncUpdateSubscription(Subscription subscription,
SubscriptionStatus.SUSPENDED);
SubscriptionStatus status = subscription.getStatus();
if (set.contains(status)) {
+ LOG.logInfoDebug(String.format(
+ "[Subscription ID=%s] sending asyncModifySubscription",
+ subscription.getSubscriptionId()));
appManager.asyncModifySubscription(subscription, targetProduct);
+ LOG.logInfoDebug(String.format(
+ "[Subscription ID=%s] change status from [%s] to next.",
+ subscription.getSubscriptionId(), status));
switch (status) {
case ACTIVE:
subscription.setStatus(SubscriptionStatus.PENDING_UPD);
@@ -3467,6 +3476,9 @@ private VOSubscriptionDetails processTriggerProcessForSubscriptionModification(
| MandatoryUdaMissingException | SubscriptionStateException
| MandatoryCustomerUdaMissingException e) {
sessionCtx.setRollbackOnly();
+ LOG.logInfoDebug(String.format(
+ "[Subscription ID=%s] error: %s",
+ subscription.getSubscriptionId(), e.getMessage()));
throw e;
}
} else if (triggerDefinition.isSuspendProcess()) {
@@ -3570,6 +3582,10 @@ public VOSubscriptionDetails modifySubscriptionInt(TriggerProcess tp)
UserGroup unit = getUnit(subscription.getUnitKey(),
subscription.getUnitName(), organization.getKey());
+ LOG.logInfoDebug(String.format(
+ "[Subscription ID=%s] checkModifyAllowedForUpdating ",
+ dbSubscription.getSubscriptionId()));
+
stateValidator.checkModifyAllowedForUpdating(dbSubscription);
// get initial values of subscription
@@ -3659,10 +3675,14 @@ public VOSubscriptionDetails modifySubscriptionInt(TriggerProcess tp)
}
if (changedValues && asynch) {
+ LOG.logInfoDebug(String.format(
+ "[Subscription ID=%s] changedValues.",
+ dbSubscriptionId));
// set initial values again
dbSubscription.setSubscriptionId(dbSubscriptionId);
dbSubscription.setPurchaseOrderNumber(dbPurchaseNumber);
String dbOwnerId = dbOwner == null ? null : dbOwner.getUserId();
+
manageBean.setSubscriptionOwner(dbSubscription, dbOwnerId, true);
dbSubscription.setUserGroup(dbUnit);
}
@@ -3674,8 +3694,8 @@ public VOSubscriptionDetails modifySubscriptionInt(TriggerProcess tp)
triggerQS.sendAllNonSuspendingMessages(
TriggerMessage.create(TriggerType.MODIFY_SUBSCRIPTION,
- tp.getTriggerProcessParameters(), dataManager
- .getCurrentUser().getOrganization()));
+ tp.getTriggerProcessParameters(),
+ dataManager.getCurrentUser().getOrganization()));
triggerQS.sendAllNonSuspendingMessages(
TriggerMessage.create(TriggerType.SUBSCRIPTION_MODIFICATION,
@@ -3735,11 +3755,13 @@ private Subscription validateSubscriptionSettings(
dataManager.validateBusinessKeyUniqueness(sub);
List triggers = triggerService
- .getAllActionsForOrganizationRelatedSubscription();
+ .getAllActionsForOrganizationRelatedSubscription();
for (VOTriggerProcess voTriggerProcess : triggers) {
- if (voTriggerProcess.getSubscription().getSubscriptionId().equals(subscriptionId)) {
+ if (voTriggerProcess.getSubscription().getSubscriptionId()
+ .equals(subscriptionId)) {
NonUniqueBusinessKeyException e = new NonUniqueBusinessKeyException(
- DomainObjectException.ClassEnum.SUBSCRIPTION, subscriptionId);
+ DomainObjectException.ClassEnum.SUBSCRIPTION,
+ subscriptionId);
throw e;
}
}
@@ -4280,7 +4302,7 @@ public void abortAsyncSubscription(String subscriptionId,
}
removeLocalizedResources(reason, subscription);
- storeSubscriptionAbortionReason(reason, subscription);
+ storeSubscriptionAbortionReason(reason, subscription);
List receivers = loadReceiversForAbortAsyncSubscription(
subscription);
@@ -4295,23 +4317,22 @@ void removeLocalizedResources(List reason,
LocalizedObjectTypes.SUBSCRIPTION_PROVISIONING_PROGRESS);
localizer.storeLocalizedResources(key,
LocalizedObjectTypes.SUBSCRIPTION_PROVISIONING_PROGRESS,
- reason);
+ reason);
}
-
+
void storeSubscriptionAbortionReason(List reason,
Subscription subscription) {
long key = subscription.getKey();
localizer.removeLocalizedValues(key,
LocalizedObjectTypes.SUBSCRIPTION_PROVISIONING_ERROR);
localizer.storeLocalizedResources(key,
- LocalizedObjectTypes.SUBSCRIPTION_PROVISIONING_ERROR,
- reason);
+ LocalizedObjectTypes.SUBSCRIPTION_PROVISIONING_ERROR, reason);
}
-
+
void removeSubscriptionAbortionReason(Subscription subscription) {
long key = subscription.getKey();
localizer.removeLocalizedValues(key,
- LocalizedObjectTypes.SUBSCRIPTION_PROVISIONING_ERROR);
+ LocalizedObjectTypes.SUBSCRIPTION_PROVISIONING_ERROR);
}
void sendSubscriptionAbortEmail(String subscriptionId,
@@ -4997,13 +5018,15 @@ public void completeAsyncModifySubscription(String subscriptionId,
Subscription subscription = modUpgBean.findSubscriptionForAsyncCallBack(
subscriptionId, organizationId);
-
+ LOG.logInfoDebug(String.format(
+ "[Subscription ID=%s] complete received. ",
+ subscriptionId));
stateValidator.checkCompleteModifyAllowed(subscription);
updateInstanceInfoForCompletion(subscription, instance);
manageBean.validateTechnoloyProvider(subscription);
-
+
removeSubscriptionAbortionReason(subscription);
modUpgBean.setStatusForModifyComplete(subscription);
@@ -5061,11 +5084,14 @@ public void abortAsyncModifySubscription(String subscriptionId,
ArgumentValidator.notNull("subscriptionId", subscriptionId);
ArgumentValidator.notNull("organizationId", organizationId);
+ LOG.logInfoDebug(String.format(
+ "[Subscription ID=%s] abort received. ",
+ subscriptionId));
Subscription subscription = modUpgBean.findSubscriptionForAsyncCallBack(
subscriptionId, organizationId);
stateValidator.checkAbortAllowedForModifying(subscription);
-
+
storeSubscriptionAbortionReason(reason, subscription);
abortAsyncUpgradeOrModifySubscription(subscription, organizationId,
reason);
@@ -5568,16 +5594,17 @@ public boolean unsubscribeFromService(Long key)
SubscriptionStateException, TechnicalServiceNotAliveException,
TechnicalServiceOperationException, OperationPendingException,
OperationNotPermittedException {
- Subscription mySubscriptionDetails = getMySubscriptionDetails(key
- .longValue());
- return unsubscribeFromService(mySubscriptionDetails.getSubscriptionId());
+ Subscription mySubscriptionDetails = getMySubscriptionDetails(
+ key.longValue());
+ return unsubscribeFromService(
+ mySubscriptionDetails.getSubscriptionId());
}
@Override
@RolesAllowed({ "TECHNOLOGY_MANAGER" })
public void notifySubscriptionAboutVmsNumber(String subscriptionId,
- String organizationId, VOInstanceInfo instanceInfo)
- throws ObjectNotFoundException, OperationNotPermittedException {
+ String organizationId, VOInstanceInfo instanceInfo)
+ throws ObjectNotFoundException, OperationNotPermittedException {
ArgumentValidator.notNull("subscriptionId", subscriptionId);
ArgumentValidator.notNull("organizationId", organizationId);
ArgumentValidator.notNull("instance", instanceInfo);
@@ -5585,18 +5612,21 @@ public void notifySubscriptionAboutVmsNumber(String subscriptionId,
PlatformUser user = dataManager.getCurrentUser();
Subscription subscription = manageBean.findSubscription(subscriptionId,
- organizationId);
- PermissionCheck.owns(subscription.getProduct().getTechnicalProduct(), user.getOrganization(), LOG, null);
+ organizationId);
+ PermissionCheck.owns(subscription.getProduct().getTechnicalProduct(),
+ user.getOrganization(), LOG, null);
- List parameterDefinitions = subscription.getProduct().getTechnicalProduct()
- .getParameterDefinitions();
+ List parameterDefinitions = subscription
+ .getProduct().getTechnicalProduct().getParameterDefinitions();
for (ParameterDefinition parameterDefinition : parameterDefinitions) {
- if (!parameterDefinition.getParameterId().equals(VMS_NUMBER_PARAM)) {
+ if (!parameterDefinition.getParameterId()
+ .equals(VMS_NUMBER_PARAM)) {
continue;
}
- Parameter parameter = getSubscriptionDao().getParameterForSubscription(parameterDefinition, subscription
- .getParameterSet());
+ Parameter parameter = getSubscriptionDao()
+ .getParameterForSubscription(parameterDefinition,
+ subscription.getParameterSet());
if (parameter == null) {
parameter = new Parameter();
parameter.setParameterDefinition(parameterDefinition);
diff --git a/oscm-subscriptionmgmt/javasrc/org/oscm/subscriptionservice/bean/SubscriptionUtilBean.java b/oscm-subscriptionmgmt/javasrc/org/oscm/subscriptionservice/bean/SubscriptionUtilBean.java
index 00a3980c7..541a65c81 100644
--- a/oscm-subscriptionmgmt/javasrc/org/oscm/subscriptionservice/bean/SubscriptionUtilBean.java
+++ b/oscm-subscriptionmgmt/javasrc/org/oscm/subscriptionservice/bean/SubscriptionUtilBean.java
@@ -140,6 +140,11 @@ void setSubscriptionOwner(Subscription subscriptionToModify, String ownerId,
if (tenant != null) {
tenantId = tenant.getTenantId();
}
+ LOG.logInfoDebug(String.format(
+ "[Subscription ID=%s] set owner (owner %s, tenantId %s, validate %s)",
+ subscriptionToModify.getSubscriptionId(), ownerId, tenantId,
+ String.valueOf(validateOrganization)));
+
PlatformUser owner = idManager.getPlatformUser(ownerId, tenantId,
validateOrganization);
subscriptionToModify.setOwner(owner);