Duravit Bathroom Planner

Design your own dream bathroom

Planning templates
Quickly and easily adapt professional, preplanned bathrooms to suit your individual ideas.
Series selection
Do you already have a specific series in mind that you want to use to plan your bathroom?
My Plans
Would you like to continue working on a plan you've already created?

4 Easy steps to your dream bathroom

Combine, arrange and organise your bathroom to your heart's content. Discover a wide range of possibilities for designing your bathroom and visually immerse yourself in your dream bathroom. You can save your own individual bathroom plans, share them with others or directly print them out and use them, in conjunction with your chosen plumbing specialist, to turn your dreams into reality.

 
 
 
 
 
 
 
 
 
 
 
 

TML Warnings

16 warning(s) detected
LayoutLine Nr.Tag TypeTag IDDBContextMessage
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
premium/content-modules:bp-modules:sample-category:sample:render (html)1Script(none)premium8a8a818d540b42bc015437b5b2cb60cc.se-sv.3Exception executing tmlscript: de.innovationgate.webgate.api.WGClosedSessionException - Message:This operation needs an open WGDatabase session.
At line 0, column 0
Expression:

var bpCon = WGA.createObject("bathplanner:planning-controller"),
seriesIdList = WGA.deleteDoublets(WGA.createList( (CMM.setting("seriesIds") || "").split(/,\s*/) )),
sampleExtId = CMM.setting("sampleExtId"),
bpUserOfPlanning;

this.roomSize = CMM.setting("size");
this.seriesNameList = ProductX.getNames(seriesIdList);
this.coverImgUrl = CMM.setting('cover');
this.sample = bpCon.getPlanningByExternalId(sampleExtId);

// Check if sample-planning and bp-user-record of owner still exists in db, otherwise sample must not be displayed!
bpUserOfPlanning = bpCon.getBPUserById(sample.fk_bathplanner_user_guid);
this.isValidSample = sample && sample.external_id && bpUserOfPlanning && bpUserOfPlanning.id;

if (!coverImgUrl) {
if (sample && Object.keys(sample).length) {
this.coverImgUrl = sample.image_url;
}
}
if (isValidSample) {
counter++;
}
Render time page: 851 ms - bathplanner :: 8a8a818d540b42bc015437b5b2cb60cc

Node: duravit-live1-wga202.dmz.duravit.de / DM: false / PDB: 2018-07-06-0249