User groups

Depending on your type of solution, you will have different kinds of users associated with your Dynamicweb system.

For instance, you could have:

  • Backend marketing personnel, who use the Dynamicweb Marketing tools to create and execute campaigns
  • Backend administrators and editors
  • Frontend private and business customers
  • Frontend editors
  • Etc.

All of these will be organized in user groups.

And with user groups, administration and maintenance of all your different kinds of users can be done in an easy and speedy manner, by administrators – or even by the users themselves – including the ability to assign or remove permissions to certain content or apps.

To create a user group:

  • Click Users on your main menu
  • Open a context menu and click New group (Figure 2.1)
Figure 2.1 Click new group to create a new user group

This opens the basic group settings (Figure 2.2).

Figure 2.2 The basic user group settings

You must:

  • Name the group
  • Select users for the group by adding them individually – or by selecting a smart search in the dropdown.
  • Click Save or Save and close the user group to create it

Under the Information and GeoLocation settings areas, you can provide group-specific information, but this is optional, and may or may not be useful for your groups.

To edit, delete or move a user group:

  • Right-click the group in the user tree (Figure 3.1).
  • Click Edit, move or delete group
Figure 3.1 Right-click a user group to e.g. edit, delete or move it

From the right-click menu, you can also sort users in a user group, import and export users, and create new users and subgroups.

When creating or editing a user group, you have access to a number of tools from the user group ribbon (Figure 4.1).

Figure 4.1 The user group ribbon

From the user group ribbon, you can:

  • Select a custom editor configuration for the user group
  • Allow (or disallow) backend login for users groups, who should have access to (parts of) the administration.
  • Select a custom start page for the user group
  • Set or remove email permissions for the entire group (be careful with this, in most countries it is illegal to send emails to people who have not given their explicit consent).
  • Click Validate to check the format of all email addresses for users within the group. A window with incorrectly formatted emails will pop up, and allow you to correct or delete the addresses. The validation runs as follows:
    • Is the email format valid?
    • Does the domain exist?
    • Does the domain have an MX (mail server) record?
  • Select a number of group admins – users who can edit or add users in the user group. Group admins will have access to user management when logged into the backend, but will only be able to edit and add users to the group they are admin of, and will never be able to edit an administrator account.
  • Select an item type to extend user group properties or user properties with.
  • Customize impersonation settings for the user group.  (You need to save the group, before you can configure the impersonation settings.) Read about impersonation below.

If you have many users, it may be useful to search for individual users or users who share certain properties.

For that purpose, you have access to the user search field and filters (Figure 5.1) in all product groups.

Figure 5.1 You can search and filter users within a group

The search fields apply the current group context - you can use the Search node to search through all users on the solution.

Use the text field for search terms and the dropdown menus to filter your user. You can filter on:

  • Active and inactive users
  • User with and without backend login

Searching users searches all fields on the users except custom fields (which cannot be searched) - you can use operators to search specific fields:

Less than

Greater than

=

Equal

!=

Not equal

+

And

-

And not

Use double quotes to search for values containing spaces.

Note that the “=” operator does not work as a ‘contains’ operator, but as an equal-operator. This means, that if you search for e.g. Department=Marketing, you will only find users who have the value ‘Marketing’ in the department field, and not users who have e.g. the value ‘Sales & Marketing’ in the department field.

 

Here are a few examples of seach parameters and results:

Search field entry

Search result

Username = Kristian

All users with the username “Kristian”

Name = "Kristian Hansen"

All users with the name “Kristian Hansen”

ID > 100

All users with an ID number greater than 100

Zip = 8000

All users with 8000 as Zip code

Address = "Solbakken 45"

All users with the address “Solbakken 45”

Department = “Marketing Department”

All users from the specific department named “Marketing Department”

Type = Default + ValidTo = "01/01/2011 00:00"

All users of the type Default whose validity period ends on 1st of January 2011, 12:00 AM

Type = Default - Zip = 690912 + City = Vladivostok

All users of the type Default from Vladivostok whose zip-code is not 690912

ValidTo > "01/01/2013 00:00"  

All users whose validity period ends after on 1st of January 2013, 12:00 AM

Active = False

All inactive users

AllowBackend = True

All users allowed to login to backend

ValidTo = "12/31/2999 23:55"

All users with unlimited validation period (if the Valid to is set to:  Dec 31 Never 23:55 in Options for the user)

ValidTo > "01/01/2013 00:00" + ValidTo != "12/31/2999 23:59"

All users whose validity period ends after on 1st of January 2013, 12:00 AM – but without the users with unlimited validation period.

 

For a full list of fields you can search, see the Database section of this documentation.

New users are created at the top of the user list.

You can sort your users temporarily by clicking arrows on column headers, but if you want a specific sorting on a permanent basis, you can click sort users in the user group context menu - and open the sort users view (Figure 7.1).

Figure 7.1 The sort users view allows you to permanently change the sorting of users in a user group

From here, simply drag and drop users to suit your needs and click save.

With impersonation, you can allow users or user groups to act on behalf of other users or user groups.

They can then log in to frontend with their regular extranet login, and select a user to impersonate (Figure 8.1).

Figure 8.1 The user who impersonates someone will be able to select who to impersonate when logging in

Orders they create are then placed on behalf of the impersonated user.

Permissions and impersonation

When impersonating a user, all user permissions will be set as usual for the impersonator – e.g. for pages, apps, etc.

For instance, if Martin logs in and impersonates Sanne:

  • Pages that are blocked for Martin are not visible, even if they would be for Sanne.
  • Ecommerce orders will appear on order lists for both Martin and Sanne – but will be marked as on behalf of, if that column has been added to the customer center order list template. The orders will be created with Thomas’ discounts, not the discounts applying to Sanne.
  • Forum posts, frontend editing, and the like will list Martin as the editor, not Sanne.

In that sense, impersonation does not present a personal liability risk for the users impersonated.

Impersonation settings can be set on both individual users and at a group level, by clicking the Impersonation button in the user or user group ribbon.

This will launch a window (Figure 9.1) where you can select users and user groups to impersonate, and users and user groups who can impersonate this user or user group.

Figure 9.1 Selecting who can impersonate who is done from the impersonation window

If you cannot find the Impersonation button, try saving the user first.

Remember to change your templates in order to support impersonation.

For instance, you can add an impersonation profile selector using the LoopStart(DWExtranetSecondaryUsers) loop, as in the following example:

<!--@LoopStart(DWExtranetSecondaryUsers)--> <!--@HeaderStart--> <select id="DWExtranetSecondaryUserSelector" name="DWExtranetSecondaryUserSelector"> <!--@HeaderEnd--> <option value="<!--@UserID-->"><!--@UserName--></option> <!--@FooterStart--></select><!--@FooterEnd--> <!--@LoopEnd(DWExtranetSecondaryUsers)-->

And in the order list template, use the Ecom:Order.Customer.SecondaryUserName tag to create an “On-behalf of”-column showing which orders haven been added on behalf of which users, and the Ecom:Order.Customer.AccessUserUserName to create a “Order created by” column.

Corresponding sorting tags are also available.

Column headers:

<td nowrap>Created by <!--@Ecom:CustomerCenter.SortByCustomerAccessUserUserName.Desc--> <!--@Ecom:CustomerCenter.SortByCustomerAccessUserUserName.Asc--> </td> <td nowrap>On behalf of <!--@Ecom:CustomerCenter.SortBySecondaryUserName.Asc--> <!--@Ecom:CustomerCenter.SortByShippingMethodDescription.Desc--> </td>

Columns:

<td nowrap><!--@Ecom:Order.Customer.AccessUserUserName--> </td> <td nowrap><!--@Ecom:Order.Customer.SecondaryUserName--> </td>

You can import users to any one of your user groups by simply right clicking the group and selecting import users (Figure 12.1).

Figure 12.1 Right-click on a user group or smart search to be able to import and export users

This takes you to the import users screen (Figure 12.2).

Figure 12.2 When importing users, you can controll the process with these settings

From here, you must:

  • Select the import user activity you want to use – use ImportUsers to import users using the CSV provider, and ImportUsersFromExcel to import users using the Excel provider. The excel provider has these limitations:
    • Worksheets must not contain whitespace
    • Do not use merged cells – they will be converted as null or an empty string.
    • First row must contain headers
    • The worksheet you are importing must have the title “AccessUser”
  • Select a user input file to import users from. The csv source file requires column names matching the database. See AccessUser.csv for an example.
  • Decide if you want to remove missing users or not, meaning that users who are not in the import file will be removed from the database
  • If you know for a fact that all users in your import file have consented to receive emails from you, check the allow email communication checkbox. This will override whatever value is set in the import file.
  • Select the user key field from the dropdown.

To start importing users, simply click Import users in the top left corner of the window.

You can also export users from any one of your user groups and smart searches by simply right clicking the group or smart search and selecting export users (Figure 13.1).

Figure 13.1 Click Export users in the right-click menu to export users

This will take you to the export users view, where you can:

  • Select the ExportUsers activity to export all user data
  • Select the ExportUsersToExcel to export users using the Excel provider
  • Select the ExportUsersWithSelectedColumns activity to customize which user data to export.

To export your data, simply click Export users in the top left corner of the window. This will create a CSV file with your users.

Database

These are the tables relevant for Users and User groups in the Dynamicweb database:

AccessUser

Contains all the users and groups in Dynamicweb

Field name Data type Length
AccessUserId int 4
AccessUserParentId int 4
AccessUserUserName nvarchar 255
AccessUserPassword nvarchar 255
AccessUserName nvarchar 255
AccessUserDepartment nvarchar 255
AccessUserEmail nvarchar 255
AccessUserPhone nvarchar 255
AccessUserFax nvarchar 255
AccessUserGroups nvarchar 255
AccessUserType int 4
AccessUserValidFrom datetime 8
AccessUserValidTo datetime 8
AccessUserPages nvarchar 255
AccessUserAreas nvarchar 255
AccessUserSettings nvarchar Max
AccessUserModules nvarchar Max
AccessUserInformation nvarchar Max
AccessUserMyFolder nvarchar 255
AccessUserAddress nvarchar 255
AccessUserAddress2 nvarchar 255
AccessUserZip nvarchar 255
AccessUserCity nvarchar 255
AccessUserCountry nvarchar 255
AccessUserJobTitle nvarchar 255
AccessUserCompany nvarchar 255
AccessUserPhonePriv nvarchar 255
AccessUserMobile nvarchar 255
AccessUserCustomerNumber nvarchar 255
AccessUserRedirectOnLogin nvarchar 255
AccessUserCurrencyCharacter nvarchar 3
AccessUserRead bit 1
AccessUserAdsiMap nvarchar 255
AccessUserPasswordDate datetime 8
AccessUserLastName nvarchar 255
AccessUserMiddleName nvarchar 255
AccessUserActive bit 1
AccessUserImage nvarchar 255
AccessUserBusiness nvarchar 255
AccessUserInitials nvarchar 255
AccessUserComment nvarchar Max
AccessUserLevel int 4
AccessUserInheritAddress bit 1
AccessUserWeb nvarchar 255
AccessUserSort int 4
AccessUserStatus int 4
AccessUserStatusBegin datetime 8
AccessUserStatusEnd datetime 8
AccessUserStatusComment nvarchar 255
AccessUserEditorConfigurationId int 4
AccessUserHideStat bit 1
AccessUserCartId nvarchar 50
AccessUserAllowBackend bit 1
AccessUserApprovalKey nvarchar 50
AccessUserShopId nvarchar 50
AccessUserExternalId nvarchar 250
AccessUserSortXML nvarchar Max
AccessUserGeoLocationLat float 8
AccessUserGeoLocationLng float 8
AccessUserGeoLocationIsCustom bit 1
AccessUserGeoLocationImage nvarchar 255
AccessUserGeoLocationHash nvarchar 32
AccessUserNewsletterAllowed bit 1
AccessUserCreatedOn datetime 8
AccessUserUpdatedOn datetime 8
AccessUserCreatedBy int 4
AccessUserUpdatedBy int 4
AccessUserEmailPermissionGivenOn datetime 8
AccessUserEmailPermissionUpdatedOn datetime 8
AccessUserState nvarchar 255
AccessUserVatRegNumber nvarchar 20
AccessUserDisableLivePrices bit 1
AccessUserLastLoginOn datetime 8
AccessUserPointBalance float 8
AccessUserAdministratorInGroups nvarchar Max
AccessUserTitle nvarchar 255
AccessUserFirstName nvarchar 255
AccessUserHouseNumber nvarchar 255
AccessUserLastOrderDate datetime 8
AccessUserPasswordRecoveryToken nvarchar 128
AccessUserPasswordRecoveryTokenExpirationTime datetime 8
AccessUserGroupSmartSearch nvarchar 50
AccessUserGroupSmartSearchLastCalculatedTime datetime 8
AccessUserExported datetime 8
AccessUserItemType nvarchar 255
AccessUserItemId nvarchar 255
AccessUserDefaultUserItemType nvarchar 255
AccessUserStockLocationID bigint 8
AccessUserCountryCode nvarchar 2
AccessUserAddressTitle nvarchar 255
AccessUser_VIPContactMail bit 1
AccessUser_ContentMarketingAndEcommerceDeveloperExpire datetime 8
AccessUser_C0Certified bit 1
AccessUser_C0CertifiedExpire datetime 8
AccessUser_C1Certified bit 1
AccessUser_C1CertifiedExpire datetime 8
AccessUser_C3Certified bit 1
AccessUser_C3CertifiedExpire datetime 8
AccessUser_C2Certified bit 1
AccessUser_C2CertifiedExpire datetime 8
AccessUser_C4Certified bit 1
AccessUser_C4CertifiedExpire datetime 8
AccessUser_DWEmployee bit 1
AccessUser_ErpSystem nvarchar Max
AccessUser_EmailAddressValid bit 1
AccessUser_NaceCode nvarchar Max
AccessUser_MVP bit 1
AccessUser_Owner nvarchar Max
AccessUser_ParentCountry nvarchar Max
AccessUser_PamNewsletter bit 1
AccessUser_ParentCategory nvarchar Max
AccessUser_ParentPartnerType nvarchar Max
AccessUser_PrimaryLineOfBusiness nvarchar Max

AccessUserAddress

For users with multiple defined addresses extra addresses are defined here and linked via AccessUserId.

Field name Data type Length
AccessUserAddressId int 4
AccessUserAddressUserId int 4
AccessUserAddressType bit 1
AccessUserAddressCallName nvarchar 255
AccessUserAddressCompany nvarchar 255
AccessUserAddressName nvarchar 255
AccessUserAddressAddress nvarchar 255
AccessUserAddressAddress2 nvarchar 255
AccessUserAddressZip nvarchar 255
AccessUserAddressCity nvarchar 255
AccessUserAddressCountry nvarchar 255
AccessUserAddressPhone nvarchar 255
AccessUserAddressCell nvarchar 20
AccessUserAddressFax nvarchar 255
AccessUserAddressEmail nvarchar 255
AccessUserAddressCustomerNumber nvarchar 255
AccessUserAddressUId nvarchar 25
AccessUserAddressState nvarchar 255
AccessUserAddressIsDefault bit 1
AccessUserAddressExported datetime 8
AccessUserAddressPhoneBusiness nvarchar 255
AccessUserAddressDefaultAddressCustomFields bit 1
AccessUserAddressCountryCode nvarchar 2

AccessUserSecondaryRelation

Contains AccessUserId of users (AccessUserSecondaryRelationUserID) who can log in on behalf of other users (AccessUserSecondaryRelationSecondaryUserId) (i.e. Impersonate them).

Field name Data type Length
AccessUserSecondaryRelationUserId int 4
AccessUserSecondaryRelationSecondaryUserId int 4
AccessUserSecondaryRelationAutoId int 4

CustomField

Contains definitions of custom fields on users

Field name Data type Length
CustomFieldSystemName nvarchar 50
CustomFieldTableName nvarchar 255
CustomFieldType nvarchar 50
CustomFieldName nvarchar 255
CustomFieldOptions nvarchar Max
CustomFieldSort int 4
CustomFieldAutoId int 4