Friday, September 21, 2012

Configuring MS RoboCopy to schedule ongoing synchronization of files between servers

Robocopy is a utility to copy directories from one server to another.  Commands to use the tool are fairly straightforward and can be added to a batch file to run based on a schedule.

We recently encountered a situation where we needed to sync various files from one server to another on an on-going basis.  To do that we create a folder on the root of our origination server and called it Robocopy.
Within that folder we created a copy.bat file with a very simple argument following the command structure of:
robocopy <Source> <Destination>

Our command specifically says: 
robocopy c:\myFolder \\extranet\c$\myFolder /MIR /LOG+:robo.log
This essentially is saying take everything from the C:\myFolder folder and copy it to the \\extranet server's C:\myFolderfolder.

The /MIR command mirrors a directory tree and the /LOG command tells it to writes the status output to the log file (appends the output to the existing log file).

Schedule the File to Run

In Windows Server 2008 the process of scheduling a batch or job to run is extremely simple.  Just open your Task Scheduler and create a task.  The action in this case is to start a program and then point the path to the .bat file that was created.  That is it!

Thursday, September 20, 2012

Interact Intranet: Expanding your content - literally

Content pages in Interact Intranet are made up of 3 zones.
  1. Side navigation
  2. Content
  3. Options (Author, rating, etc.)
The 3rd zone occupies valuable real estate and displays regardless of whether any Options are enabled.
Occasionally you may find yourself not wanting to use any options and wishing you could extend your content into zone 3.  Luckily that is possible and is extremely easy to do on a content by content basis.
The width of the 2nd zone is fixed using the CSS width property of .DocumentContentsHTML.
Within your web page document you can add some inline CSS styling to override this property and move from a 3 zone layout to a 2 zone layout as shown in the pictures below.

The code to override this element would look like this:
<STYLE type=text/css>
    .DocumentContentsHTML{width:750px;}
</STYLE>


 


Caveat: This was done in 5.1.4 and it is possible that future upgrades might overwrite a modification like this.

Tuesday, September 18, 2012

Interact Intranet: Modifying web page templates

When you create a document in Interact Intranet you have the option of building your own web page.  If you choose to build your own web page you are presented with a series of templates, formatted HTML, to make your content more attractive.

The default template displays a large image on the left side of the page.  There is a blank template (no formatting) however a user would need to select it from the dropdown.  As we are undergoing a content migration of thousands of documents we are encouraging our users to transfer content from files to web content.  Despite training we are finding that many of our content managers are neglecting to change the template and are confused by the default templates appearance.

To rectify this problem I look into the Interact database to see how it is handling templates.  Sure enough, there is a CONTENT_TEMPLATE table which includes everything you would need to modify your templates (title, summary, source code, affiliated css file, grouping, active and the ability to modify the order).

Since my goal is to simply adjust the default template and order of the other templates there are only a few fields that concern me:



Within the template dropdown above you can see the impact of the TemplateGroup field where some fall into Standard and other into Smart.  By changing a few 1's to 2's in that field, and modifying the OrderBy field I've been able to modify the Template dropdown to have a new default and appear like this:



The Active field is boolean and my testing showed that setting templates to False (0) hides templates as you'd expect.  I didn't bother attempting to change the source code of the templates which is stored in the source field although it looks straightforward.



Caveat: This was done in 5.1.4 and it is possible that future upgrades might overwrite a modification like this.

Monday, September 17, 2012

Interact Intranet: Document Types and Content Queries

We are going through a migration effort from our old intranet (Plumtree) to Interact Intranet.  In doing so we'd like to track a few things that aren't available from the out of the box statistics tool.  Fortunately the database shows that quite a lot of data is being tracked so in this post I'll write about the queries that I run to help us track our content.


Document Types

There are 7 documents types in the system:
  • 10 - web based document
  • 20 - document: link to something?
  • 30 - document: link to something?
  • 40 - document: upload a document (file)
  • 50 - document: link to something on the network
  • 100 - discussion forum threads, and for each document that has a comment section it also gets an entry in this table
  • 110 - this is the catch all document type which makes it awkward to identify specific content types.  Type 110 includes: discussion forums posts, document comments, and activity wall posts (among others I'm sure!)

Important Queries (for me to remember)

who has submitted the most content

    • in the system
      SELECT COUNT(CONTENT.AddedBy) as Count, PERSON.Firstname, PERSON.Surname
        FROM CONTENT
        INNER JOIN PERSON
        ON CONTENT.AddedBy=PERSON.PersonID
        WHERE CONTENT.TYPEID in ('40','10')
        GROUP BY CONTENT.AddedBy, PERSON.Surname, PERSON.Firstname
        ORDER BY COUNT(CONTENT.AddedBy) DESC


    • in each area
      SELECT SECTION.Title as Area, COUNT(CONTENT.AddedBy) as Count, PERSON.Firstname, PERSON.Surname
        FROM CONTENT
        INNER JOIN PERSON
        ON CONTENT.AddedBy=PERSON.PersonID
         INNER JOIN SECTION
        ON SECTION.SectionID=CONTENT.SectionID
        WHERE CONTENT.TYPEID in ('40','10')
        GROUP BY CONTENT.AddedBy, PERSON.Surname, PERSON.Firstname, SECTION.title, CONTENT.SectionID
        ORDER BY COUNT(CONTENT.AddedBy) DESC


how many documents are file based and how many are web pages

    • in the system
      SELECT CONTENT.TYPEID, COUNT(*) as Count
        FROM CONTENT
        Where CONTENT.TypeID in ('40', '10')
        Group BY CONTENT.TypeID


      If you are curious about the other types of documents you could run a query like this to see the count for each different type:
        SELECT TYPEID, COUNT(*) as Count
            FROM CONTENT
            GROUP BY TypeID

      NOTE: If you look at Interact Site Statistics "Size of Intranet" that seems to reflect the majority of what is shown here.  I have a 10 item discrepancy between the sum at this point, so perhaps 110, 50 and 30 aren't included in that number.

how many documents have been added

    • to the system
      SELECT COUNT(*) as Count
        FROM CONTENT
        Where CONTENT.TypeID in ('40', '10')
    • to each area/section
      SELECT SECTION.Title, COUNT(*)
        FROM CONTENT
        INNER JOIN SECTION
        ON SECTION.SectionID=CONTENT.SectionID
        WHERE CONTENT.TypeID in ('40','10')
        GROUP BY SECTION.Title
        ORDER BY SECTION.Title


Thursday, September 13, 2012

Interact Intranet: Mapping Active Directory fields

Every Interact customer that uses an Active Directory repository will at one time or another need to create and map fields.  The process can be tricky, so the purpose of this blog is to provide instructions on how to accomplish this task and some tips to help along the way. (note: this is done on 5.1.3 and the process might be different on other versions)

This diagram illustrates the relationship between the mapping steps detailed further below.

Fields

Three different fields need to be created for this process.
  1. Profile field
    These fields are tied to user profiles, although you have the option on whether or not to display the data.
  2. Active directory field
    This is behind the scenes field that users will never see.  Title it in a manner that will be intuitive to your Administrators.
  3. Mapping field
    This is behind the scenes field that users will never see.  Title it in a manner that will be intuitive to your Administrators.  Not only does the name of this field appear as the mapping field, but also within the mapping table (in the step Mapping Your Fields Together below)

Naming Conventions 

I would recommend developing a naming convention to prevent confusion between these fields. Because they organize alphabetically a prefix would help keep fields of the same type together.
  1. Profile field:
    Employee Type
  2. AD field:
    AD Employee Type
  3. Mapping field:
    Map Employee Type

Creating Fields

Profile field

    1. Navigate to: Site Admin-> Manage People-> Manage Additional Fields
    2. Click the New Field button and fill in the following information:
      • Title
      • Additional Field Type
        • Once created this field is no longer editable
      • Number of Rows
        • Sets the size of the text-box field
      • Icon
      • Apply To (Staff/Contacts)
      • Display on Profile
      • Allow User Edit
        • Regardless of how you set this, an admin can always override this field, even if it is mapped against AD, however each time AD syncs your changes will be overwritten
      • Available To
        • Restrict who can see the information (All, User, Manager, User & Manager)
    3. Once created the new field will appear in the Additional Fields section of the edit profile area
    4. Fields will not appear on a public profile unless they contain data

    Mapping field

    WARNING
    Be extremely careful with these fields. Once created they cannot be edited nor deleted.

      1. Navigate to: Site Admin-> Manage People-> Active Directory Sync
      2. Select your domain
      3. From the Options dropdown select Manage Field Mappings
      4. From the Options dropdown select Manage Fields
      5. Click the Add Field button and fill in the following information:
        • Field Type: Additional Field
        • Title
        • Additional Field
          • This maps against the Profile field
        • Description
      6. Click the Save button

    Active Directory field

    WARNING
    Be extremely careful with these fields. Once created they cannot be edited nor deleted.

      1. Navigate to: Site Admin-> Manage People-> Active Directory Sync
      2. Select your domain
      3. From the Options dropdown select Manage Field Mappings
      4. From the Options dropdown select Manage Fields
      5. Click the Add Field button and fill in the following information:
        • Field Type: ACTIVE DIRECTORY
        • Title
        • Field
        • Description
        • Field Size
      6. Click the Save button

    Mapping Your Fields Together

    The 4th and final step in this process is linking your Mapping field to your AD field.  To do this:
    1. Navigate to: Site Admin-> Manage People-> Active Directory Sync
    2. Select your domain
    3. From the Options dropdown select Manage Field Mappings
    4. Click the Add Mapping button and fill in the following information:
      • Interact Field
        • this ties to the Mapping field above
      • Active Directory Field
        • this ties to the Active Directory field
    5. Click the Save button
    Now you can sit back and wait for your Interact instance to synchronize with your Active Directory repository!

    Test

    Now that you've mapped all of these fields you probably don't want to wait for them to sync with AD at 1am or whenever your sync has been scheduled.  You can force your AD sync job to run by going to your front end server, opening the scheduled tasks utility and running it once manually.

     Further Reading (login required)

    Interact covers these steps in: How to Create and Map a New Active Directory Field to a New Interact Field

    Friday, September 7, 2012

    Interact Intranet: Announcements using Keywords


    Interact Intranet provides several options for displaying news/announcements within your site. Below are two that we are considering:

    Document List

    A Document List widget allows you to select content from specific content areas with a lot of flexibility.  As an admin you can select whether or not to display a thumbnail, the number of items to show, how to order them (alpha, or chrono), whether to display the date, summary, etc.  To utilize this type of widget you'd need to set aside a category (content area) specifically for your news items and point the widget there.  Each time someone in your organization needs to post an announcement they would create the item in that folder and it would automatically display.

    Keywords

    Another option for displaying announcements is to use the Keyword Search widget.  This widget is different from the Document List above in that rather than looking at a particular category in your system it instead looks at every document in your system and displays only those that match your keyword criteria.  If someone in your organization needs to post an announcement they can post it wherever the content fits into the taxonomy, and simply by adding a keyword such as home_announcement it will display within this widget.  To take this a step further, you could have multiple Keyword Search widgets on homepages of different areas of your site, for example on the Human Resources home page and make the same announcement appear simultaneously in both by using a second keyword such as HR_announcement.

    Differences

    • Archives
      • All announcements created using the Document List are stored in a particular category, therefore it simplifies showing a full index of items - just link to the category.  For a Keyword Search you could create a link that points to the particular keyword and view the contents as search results.
    • Breadcrumb & Side Navigation
      • The side navigation and breadcrumb of an announcement remain consistent if all documents live in the same category and use the Document List.  When using the Keyword Search each announcement would take you to the corresponding area where the document lives.  To get back to the main announcements they'd need to click on the Home tab again (or the back button) where the Document List option would show a more intuitive Announcement category in the side navigation.  Both approaches require a single click to get back to the list of announcements.
    • Duplication of content
      • Documents can live within multiple categories, however they can only live within a single area.  Therefore if you have an important announcement that relates to content in a particular area of your site you'd need to create it there and additionally create it in your designated announcement category if using the Document List approach.  This is a moot issue when using the Keyword Search because it can pull content from any category so the content would only need to exist once.
    Features Document List widget Keyword Search widget
    Show thumbnail Yes Yes
    Show mini-thumbnail Yes No
    Show author No Yes
    Show date Yes Yes
    Show summary Yes Yes
    Show in 2 columns No Yes
    Control # to display Yes Yes

    Tuesday, September 4, 2012

    Interact Intranet: System Emails

    When undergoing the process of migrating your intranet to a new environment one of the key things you don't want to do is confuse your audience with system generated emails prior to your launch and when you are preparing to launch you need to be able to train your users appropriately and tailor system messages.  To that end, the purpose of this post is to inform folks of what the system generated emails are, how to disable them, and how to modify them.

    List of system generated emails


    Unfortunately an official list of all system generated emails doesn't exist so I've compiled this list based upon random activity I've done on our installation so far.  I'm sure I've missed a few so forgive me if this isn't complete.  Please comment or email me if I need to adjust this list!
    • Documents
      • Document Review Reminder
        • Triggered by: When a document has reached the review date
        • Sent to: Author/Owner of Document
      • Keyword Suggestion
        • Triggered by: a user suggestion a keyword to a document
        • Sent to: the Author/Owner of the document
      • Intranet Document <title>
        • Triggered by: selecting the "Email this Document" link from the Options drop-down within a document
        • Sent to: whoever the user selects as the recipient
      • You have been tagged
        • Triggered by: creating a comment and using the @ tag to identify a particular person
        • Sent to:  Person that was tagged 
        • Note: As of 5.1.3, this feature has a bug in that the link to the corresponding document is relative where it should be absolute.
      • Document Comment Received
        • Triggered by: User leaving a comment on a document
        • Sent to: Document author
      • Document Watch
        • Triggered by: edit of a file
        • Sent to: User that set a watch on a document
      • Comment Reported
        • Triggered by: User reporting a comment on a document
        • Sent to: Document author
      • Is This Up To Date?
        • Triggered by: User completing the "Is this up to date?" option on a document
        • Sent to: Author/Owner of document
    • Teams
      • <user name> has requested that the following team be created:
        • Triggered by: User requesting a team which has been designated as needing approval
        • Sent to: Power Users
      • Your request to create a new team has been rejected by <power user name>
        • Triggered by: Administrator rejection of a requested team
        • Sent to: Requestor
      • {TEAMNAME} Notification.
        • Triggered by: enabling "announcements" in the team activity feed and posting an activity of type "broadcast"
        • Sent to: all team members except the author
      • <team name> Membership
        • Triggered by: 
          • being granted membership
          • having membership revoked
        • Sent to: member who is granted or revoked access
      • <user> has invited you to join <team name>
        • Triggered by: a user inviting you to join a team
        • Sent to: invitee
      • Team Creation
        • Triggered by: the creation of a new team
        • Sent to: the person that created it
    • Profile
      • New Blog Post
        • Triggered by: The creation of a new blog post
        • Sent to: The person subscribed
      • You have received a comment on one of your blog postings
        • Triggered by:  someone adding a comment to a blog post of yours
        • Sent to: blog owner
      • Share Notification
        • Triggered by: someone sharing a document with you
        • Sent to: the person selected in the "share with" area
      • You have been tagged
        • Triggered by: being tagged in someone's news feed
        • Sent to: the person tagged
      • Interact Answers
        • Triggered by: Answers question matching an individual's expertise
        • Sent to: user with matching expertise
      • Feed Notification 
        • Triggered by: 
          • Response to a comment left on another person's news feed
          • Response to an answer left in the QA module
          • Someone posting on your wall
        • Sent to: The person that posts the initial comment
    • Administration
      • Interest Suggestion
        • Triggered by: User suggesting a new interest in the profile area
        • Sent to: System administrators
      • Rejected Interest Suggestion
        • Triggered by: Admin rejecting an Interest Suggestion
        • Sent to: User that made the suggestion
      • ?System Upgrade? (THIS IS AN ALERT ONLY AFAIK)
        • Triggered by: Admin performing a scheduled upgrade and checking the box to notify all users of the downtime.
        • Sent to: Everyone that is logged in at the time?
    • Discussion Forums
      • Thread Notification
        • Triggered by: The creation of a thread
        • Sent to: Subscribed moderators of the discussion forum
      • Post Notification
        • Triggered by: The creation of a post to an existing thread
        • Sent to: Subscribed moderators of the discussion forum
    • Workflow & Forms
      • Intranet Alert
        • Triggered by: Your form being approved
          Sent to: The person who submitted the form in the first place
    • Advanced Document Management Module
      • Document Version Approval Request
        • Triggered by: Version Controlled document pending approval (required Advanced Document Management add-on)
        • Sent to: Designated approver
      • Document Comment Received
        • Triggered by: Version Controlled document receiving a comment (required Advanced Document Management add-on)
        • Sent to: Author/Owner that has requested comments

    Modifying a system generated email's format

    I'm still working on how to change the actual format of the email including things like the subject.  But in the meantime here are some instructions I've received (these are based on our 5.1.3 environment so apologies if the paths aren't the same as what you have).  The areas, in the image below, highlighted in yellow are editable:


     

     Salutation & Sign-off

    Here are the steps to change these fields:
    1. Navigate on your frontend Interact server to Interact\WEB\Customer\App_Data
    2. There you will find customer specific EN_SystemText.xml which is where the Site Admin GUI interface stores system text
    3. You can amend the generic email message in the following nodes
      • SYSTEXT/INTERACT/PAGES/ALERTS/EXTRAS/EMAIL/SALUTATION
      • SYSTEXT/INTERACT/PAGES/ALERTS/EXTRAS/EMAIL/SIGNOFF
    4. Save the files, go to the Site Admin GUI and select the ‘Re-Sync’ button to clear the cache
    Within the EN_SystemText.xml file this is what the area you'll need to edit looks like:
              <EMAIL>
                <SALUTATION Title="Dear">
                  <HELP Help="" />
                </SALUTATION>
                <SIGNOFF Title="Regards,&lt;br /&gt;&lt;br /&gt;The Intranet Team&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style='font-size:.8em;'&gt;This alert may have already been acted on by someone else. If so then please ignore this. This email is for information only, as such please do not reply.&lt;span&gt;">
                  <HELP Help="" />
                </SIGNOFF>
              </EMAIL>
    You can even enter HTML code into these fields, so if you would like a link to your intranet to always appear in the footer simply add the relevant HTML anchor tag into your footer text.

    Header Image

    In summary:
    1. Navigate to: Site Admin: Control Panel: Manage Application Variables: Global
    2. Change the setting for: Email header image address
      1. Default is: interact/styles/default/core/header.jpg
    If you do not want any banner image at all in the email, simply leave this application variable blank.

    Disabling a system generated email

    I've been told that it isn't possible to block a particular type of system email.

    For more information (Interact extranet login required):

    1. Customizing email alerts
    2. Customize the banner image on email alerts