Mindtouch Core – Wiki & Intranet

At my company I’ve been using Mindtouch since it was called Dekiwiki. Its use is primarily as a company intranet, with resources, documentation and a gathering place for certain tools.mindtouchlogo

This post is the first about our implementation, and my intention is to demonstrate what is capable with Mindtouch Core in a practical manner. This type of information is notoriously hard to find from Mindtouch, as they are a company very much set on buzzwords and corporate speak.

 

As a wiki, intranet or document port, I really do recommend Mindtouch. It is incredibly easy to set up, very easy and friendly to use, and has vast potential for customization.

If you want to get started, I’d recommend you download the VMware image from here:

http://www.mindtouch.com/downloads

I believe you will need to register for a license of Core, which is free.

 

So diving in, here is the front page of our wiki (excluding some identifiable information):

Click for full size

This is using a customized version of the Beechbeta skin, with modifications such as:

  • Changed to a dynamic width skin instead of fixed
  • background tiling to match corporate colours
  • Additional links underneath the logo placement (logo hidden in this image, its top left usually)
  • Certain CSS sizing of elements.

We have enabled single sign on, so as long as the user is authenticated with Active Directory, the wiki will use those credentials to sign in.

On our front page, I am using a template to display weather for our regional offices, with a simple table beside that for current news which is updated manually.

The success board is an iframe, which displays a custom gridview from a minor database.

On the left you can see a suggestion box, which is an html form that is linked to php code that automates email submission.

 

Our page structure is shown on the left, where most of the content is specific to a Department, an Office (geographical) or company wide (Resources).

Here are some of the practical uses we’re using Mindtouch Core for:

  • Community forum/discussion area
    Click for full size

     

  • Embedded media
  • Documentation reference
  • FAQ pages and instructions
  • Links page (many staff bookmark this page)
  • Accessibility to various internal tools and sites, such as Vacation Planner, Suggestion Box, etc.
  • Program distribution through files page

 

We are also trying to promote the personalize page feature of Mindtouch. Every user has their own personal page, which can be made into a biography, notes, or photo dump.

Recently Mindtouch has added an “Activity Dashboard” which is useful. I’ve added a slideshow of any photos added to a user’s personal page onto this Dashboard:

As well, we’ve added a tab with Info about the user, pulled from our Active Directory. I would have really liked to get this on the Activity Dashboard tab, but that is beyond my coding skills.

 

So that in a nutshell is how we’re using Mindtouch. In the future I’ll post more on the specific tools we’re using and how they’re created.

If you’d like information on how any of these features or customizations are done, leave me a comment!

 

 

Automated DFSR Backlog email

If you’re using DFSR for branch office replication, chances are you’re concerned about the number of files in the backlog queue. This page details a script I’ve been using to automate sending of emails, using a combination of blat and dfsrdiag.

To begin you’ll need to download Blat.

I suggest placing the Blat files within C:\Windows so that it’s automatically added to the system path; you could just use the full folder path when calling it though.

Here’s an example batch script I’m using for one replication group:

:: BATCH SCRIPT START
@ECHO OFF
dfsrdiag Backlog /receivingmember:hub-server /sendingmember:branch-server /rgname:domain.com\files\departments /rfname:Departments >C:\users\administrator\documents\backdept-from-branch-server.txt
FOR /R "C:\users\administrator\documents\" %%F IN (backdept-from-branch-server.txt) DO (
       IF %%~zF GTR 3000 (blat C:\users\administrator\documents\backdept-from-branch-server.txt -to email@domain.com  -server smtp.domain.com -f dfsbacklog@domain.com -subject "Backlog exists: Departments incoming from Branch-Server"))
EXIT
pause
:: BATCH SCRIPT END

 

Here’s a quick rundown on what this is doing:

dfsrdiag Backlog: this command generates a backlog report for the specified sending and receiving server, for the specified replication group, and outputs it to a text file.

This report looks like this:

Member  Backlog File Count: 1367
Backlog File Names (first 100 files)
     1. File name: DSC03752.JPG
     2. File name: DSC03786.JPG
     3. File name: DSC03794.JPG
     4. File name: DSC03796.JPG
     5. File name: DSC03809.JPG
     6. File name: DSC03810.JPG

 

The next line in the script beginning with “FOR /R”, looks for the text file just generated, and runs logic on it.

IF %%~zF GTR 3000: If the size of the backlog report text file is greater than 3KB, then generate an email to the specified people, with the text file as the message body.

Scheduling the commands

So I’ve got 16 batch files that generate reports; 2 replications groups in two transfer directions to 4 separate locations. To reduce the number of scheduled tasks, and ensure that all 16 backlog reports aren’t run at the same time, I’ve got separate batch files that call 4 at a time, and are scheduled 5 minutes apart.

Ubuntu on Hyper-V issues with Integration Services

I’ve set up a new VM with Ubuntu 10.10 server, running on our Hyper-V 2008 R2 SP1 cluster.

I followed the excellent walkthrough by Ben Armstrong here to make sure I wasn’t missing anything.

However after the install completed, I immediatly I ran into problems. Following the instructions to enable the Integration Services, after a reboot there was still no network connectivity, and I started seeing strange errors during the boot process mentioning Call Trace errors.

As well, the CPU on the VM was running at 100% constantly.

After further reboots, the VM would lock up entirely and become unresponsive.

I restarted the process, but immediately after first login made a snapshot and started looking.

Running the “top” command, I found the process ksoftirqd taking 100% of the CPU. Looking into that brought me to this forum post:

http://ubuntuforums.org/showthread.php?t=1494797

It sounds very similar to my environment, as I’m using Dell R410 with Broadcom NIC’s.
Following those instructions, I was able to disable the integration components and add a legacy network adapter. Now the VM is running just fine.

Of course, I’m going to have to set up NTP now, and accept a bit of lower performance, but in this instance, thats fine.

If I ever do find out the source of this issue, I’ll edit this post.

Find Hyper-V VM GUID

While creating and converting VM’s using SCVMM puts the configuration files and VHD’s in a nicely structured set of folders, if you create a VM through Hyper-V Manager or convert using disk2vhd, the files will be stored based on the GUID for the VM, which isn’t found anywhere in the GUI tools for Hyper-V.
Luckily I came across this blog post to which I owe full credit for the solution:

http://blogs.technet.com/b/m2/archive/2008/07/04/how-to-get-the-bios-guid-from-a-hyper-v-vm.aspx?ppud=4&wa=wsignin1.0#comments

Save the VBS script below as guid.vbs, copy to your Hyper-V host, and use psexec to execute it with this:

psexec \\hyperv cmd.exe

cscript c:\guid.vbs

You are using PSexec right?

Option Explicit
Dim WMIService
Dim KvpComponents
Dim VMList
Dim VMSettingList
Dim VM
Dim item
Dim setting
Dim component
 
'Get instance of 'virtualization' WMI service on the local computer
Set WMIService = GetObject("winmgmts:\\.\root\virtualization")
'Get all the MSVM_ComputerSystem object
Set VMList = WMIService.ExecQuery("SELECT * FROM Msvm_ComputerSystem")   
For Each VM In VMList  
 if VM.Caption = "Virtual Machine" then      
  WScript.Echo "========================================"      
  WScript.Echo "VM Name: " & VM.ElementName      
  WScript.Echo "VM GUID: " & VM.Name     
  WScript.Echo "VM State: " & VM.EnabledState   
 
  ' Now get the BIOS GUID for this VM
  Set VMSettingList = WMIService.ExecQuery("SELECT * FROM Msvm_VirtualSystemSettingData")   
  For Each setting In VMSettingList
   Dim tempVMname
   tempVMName = "Microsoft:"  + VM.Name
   if setting.InstanceID = tempVMName then      
    WScript.Echo "VM BIOS GUID: " & setting.BIOSGUID  
   end if
  Next
 end if
Next