Showing posts with label SharePoint. Show all posts
Showing posts with label SharePoint. Show all posts

Tuesday, June 16, 2015

Group membership in SharePoint Online

Yesterday, one of my customers asked me to provide her a list of groups and its members for her main SharePoint site. An internal technician used to provide her that information every month by manually going to the site and copying/pasting screenshots of each group.
I decided to use PowerShell for that. I have never used PS cmdlets for SharePoint Online before, so this is my first try. I hope it is useful for you.


$cred = Get-Credential
$adminSite = "https://contoso-admin.sharepoint.com/"
$rootSite =  "https://contoso.sharepoint.com/"
Connect-SPOService -Url $adminSite -Credential $cred

$groups = Get-SPOSiteGroup -Site $rootSite


$objectCollection = $groups |

    ForEach-Object {
        $groupName = $_.LoginName
        $_.Users | ForEach-Object {
            $user = Get-SPOUser -Site $rootSite -LoginName $_
            $properties = @{
                GroupName = $groupName;
                UserName = $user.DisplayName;
                LoginName = $_
            }
            New-Object -TypeName PSObject -Property $properties
        }
    }

Disconnect-SPOService


$objectCollection



Let me know in the comments if there is something that can be done to make it run faster (it takes about 80 second to complete for this specific tenant).

Wednesday, January 9, 2013

A Managed Document Center – Part IV

This is the fourth and last of a series of post about creating a Managed Document Center in SharePoint Online. The purpose is to create a document center that it is able to route and rename uploaded documents to their respective folder based on metadata associated with it. To see a full description of the resultant product, click here.

As mentioned on the previous posts, I have divided the job in the following steps:
  1. Create the necessary Term Sets in the Term Store. 
  2. Create a new site using the Document Center template. 
  3. Enable and set up the Content Organizer. 
  4. Create a site Content Type using Document as Parent Content Type. 
  5. Edit the default Documents library with the columns and views needed. 
  6. Create a workflow to rename the documents. 
  7. Save the Documents library as template and create a new document library for each facility. 
  8. Create Content Organizing rules to route the documents to his final location. 
  9. Redirect the default “Upload a Document” button to the Drop Off Library. 
To see step 1 click here. To see steps 2 to 5, click here. To see step 6, click here.

7. Save the Documents library as template and create a new document library for each facility.

Go to the Documents library and click on the Library Settings icon in the ribbon. Then under Permissions and Management click on Save document library as template. Type a name for the file and a template name, in this case I will named it Managed Document Center. A description is optional, but it is a good idea to provide one, so it will show up in the right part when you create a new library. Leave the Include content check box unchecked.

Once you click OK, SharePoint will show you the following screen:
Click OK to continue. Then let’s start creating the document libraries for our different facilities.
On the navigation pane at the left of the screen, click on All Site Content. Then, click on the Create button at the top.

Within the new window, filter by library type in the left side, then choose the newly created template Managed Document Center. Note that the description will be displayed in the right side. Type the name of our first facility and click on Create.

Repeat this last process to create a document library for all the facilities. At this point you can hide the Documents library from the navigation pane, by going to its settings page, clicking in Title, description and navigation and selecting No on the Display this document library at the Quick Launch? question.

8. Create Content Organizing rules to route the documents to his final location.

We have activated the Content Organizer in step 3. Now, we are going to define rules to route documents to their respective libraries based on the entered metadata.

Go to the site settings and under Site Administration, click on Content Organizer Rules. Then, click on Add new item.

In the Content Organizer Rules: New Rule window, type a name for the first rule, in our case, I will use the name of the first facility. Leave the rule status and priority with their default values. Under Content Type Group select Custom Content Types and select Managed Document for the content type.  In the Conditions section, select the property Facility, operator is equal to and choose the name of the first facility for the value. Finally, select the facility’s document library as the Target Location.

Repeat this process to create rules for all the facilities.

You can test the rules by going to the Drop Off Library and uploading a document there. After the document has been uploaded, you’ll be asked to fill out the metadata we configured and the document will be routed based on the facility field:

9. Redirect the default “Upload a Document” button to the Drop Off Library.

When we created the site using the Document Center template, the initial page includes a welcome message with a button to upload a document.

This button saves the document in the Documents library, which is currently hidden in our managed document center.  In this step, we are going to change the target of that button to save the documents in the Drop Off Library, so the rules of the content organizer can be applied.
To do this, click on the Edit Page icon that is in the Page tab in the ribbon.

Note that the button is part of a Content Web Part. Click on it and click on the HTML button in the ribbon and then select Edit HTML Source.

On the HTML Source windows replace the following code:
<div class="ms-uploadbtnlink"><button onclick="javascript:OpenNewFormUrl(&#39;Documents/Forms/upload.aspx&#39;);return false;" type="submit"><nobr><img alt="Upload a Document" src="/_layouts/Images/uploaddoc.png"/>&#160;<span>Upload a Document</span></nobr></button> </div>

With this one:
<div class="ms-uploadbtnlink"><button onclick="javascript:OpenNewFormUrl(&#39;DropOffLibrary/Forms/upload.aspx&#39;);return false;" type="submit"><nobr><img alt="Upload a Document" src="/_layouts/Images/uploaddoc.png"/>&#160;<span>Upload a Document</span></nobr></button> </div>

Note that I just changed the word Documents by DropOffLibrary.
Now, users can upload documents directly from the hope page of our Managed Document Center.

Summarizing

In this series of post we have configured an automated solution that allows users to upload document from a centralized location. The document will be routed and renamed based on the metadata attached to them.
I recommend to use the Metadata navigation settings on the document libraries to have an easy way for users to filter and located the content documents. I didn’t included that feature on the template, because these option are not saved as part of the template.

Hope your enjoyed this series of posts! 

Sunday, December 30, 2012

A Managed Document Center – Part III


This is the third of a series of posts about creating a Managed Document Center in SharePoint Online. The purpose is to create a document center that is able to route and rename uploaded documents to their respective folders based on metadata associated with them. To see a full description of the resultant product, click here.

As mentioned on the previous posts, I have divided the job in the following steps:
  1. Create the necessary Term Sets in the Term Store. 
  2. Create a new site using the Document Center template. 
  3. Enable and set up the Content Organizer. 
  4. Create a site Content Type using Document as Parent Content Type. 
  5. Edit the default Documents library with the columns and views needed. 
  6. Create a workflow to rename the documents. 
  7. Save the Documents library as template and create a new document library for each facility. 
  8. Create Content Organizing rules to route the documents to his final location. 
  9. Redirect the default “Upload a Document” button to the Drop Off Library.
To see step 1 click here. To see steps 2 to 5, click here. In this post I will cover step 6.

5. Create a workflow to rename the documents

The managed metadata columns in SharePoint have some limitation as listed by Michael Pisarek in this post. One of these limitations is that we cannot use them in formulas and they also need to be trimmed in order to get the correct string to be used as the name of the document.

My first initial though was to develop custom code in order to get this operation to work, but custom code is always our “last resource”, because our idea on each solution we provide is to be easily replicable. So I came out with a solution using a workflow.

We are going to need SharePoint Designer to create this workflow. Click on Site Settings > Edit in SharePoint Designer in order to open SharePoint Designer. If you don’t have it already installed, you’ll be prompted to download it and install it.

Once in the SharePoint Designer main page, click on List and Libraries on Site Objects panel the left, and the open Documents on the right panel.

On the Documents page, under the Workflows section, click on New...

Name the workflow as Rename Documents. A new workflow in edit mode will be showed with an empty Step 1. Click on it and click on Action in the ribbon, select Update List Item. Click on this list field and in the Update List Item dialog, leave List as Current Item. Click in the Add button and select the values as the following image:

Click OK twice to close the open dialogs and click the Save button. Next, on the navigation bar at the top of the workflow editor, click on Rename Documents to see the properties of the workflow, then, under Start Options check the options to start automatically the workflow when an item is created and when an item is changed.

 Click on the Save and then the Publish button in the ribbon.

Now, let’s go back to our Documents library in SharePoint and let’s upload a document. If you take a look to the Rename Documents column in the library right after uploading the document, you’ll see that it says that an error has occurred. If you click on the error, you will find that the information provided by SharePoint is not clear. So, as a matter of test, let’s go back to SharePoint Designer and edit the workflow to update the Title instead of the Path and Name to see what the outcome would be. Save and publish the workflow and upload a new document.

The workflow now has completed successfully  but if we check its properties, we will see that the title has the product name, the pipe character and the GUID of the managed metadata tag. The pipe character is not allowed as a file name, that’s why the workflow errors out. We also don’t want to include that GUID as part of the document name.

We need to trim the product and the document type columns, but unfortunately SharePoint Designed doesn't include support for common string functions. We could do it directly in SharePoint using a calculated column, but calculated columns don’t work with managed metadata. The approach we will use is to create a set of temporary columns where to put that data and work around these limitations.

Back in SharePoint, go to the Library Settings of the Documents library. Under Columns, create two single text columns called tempProduct_raw and tempDocumentType_raw with any string as default value. Don’t add them to the content types and or the default view.


These two columns will be used by the workflow to store the raw string composed by the product name or document type plus the pipe character plus the GUID.

Now, create a new calculated column called tempProduct_name with the following text as formula:
=LEFT(tempProduct_raw,FIND("|",tempProduct_raw)-1)
Don’t add it to the content types or default view.

Create another calculated column called tempDocumentType_name similar to the previous one with the following formula:
=LEFT(tempDocumentType_raw,FIND("|",tempDocumentType_raw)-1)

These two new calculated columns will remove the pipe character and the GUID from the product and document type respectively.

Let's go back to SharePoint Designer and edit our workflow. The first step will update the tempProduct_raw and tempDocumentType_raw columns with the values of the product and document type columns respectively. You may need to refresh SharePoint Designer in order to see the recently created columns.

Now, add a new step after Step 1 and select the Pause for Duration action in the ribbon. Edit it to pause for 0.5 minutes. This step is necessary to give SharePoint enough time to calculate the value of the calculated columns.

Next add a third step after Step 2 and select Update List Item from the action in the ribbon. Edit the Path and Name field with the following string:

The final workflow will look similar to this:

Save it and publish it. Back in SharePoint, upload a new document to test it. Right after uploading the document, the Rename Documents column will indicate that the workflow is still in progress, wait a few seconds and refresh the screen to see that the name of the document has actually changed.


I hope you enjoyed this post!

Wednesday, December 19, 2012

A Managed Document Center – Part I


I was challenged last week by a very interesting request. A potential Office 365 user wanted an application where he can upload scanned documents in PDF format to a Web site. The documents will be automatically renamed based on three attributes: Facility, Document Type, and Product. The number of facilities is static, but he needs to be able to add more Document Types and Products. Each facility has one or more users that need read-only access to the documents on their own facility only; and they need to filter documents by document type or product easily. The application needs to be secure and available 99% of the time.

After a brief discussion with my team, we decided that SharePoint in Office 365 was the best an easy solution compared with developing and coding a new application. This is how we would use SharePoint Online to meet the customer requirements:

  • Users need to access the document on their own facility only: A document library with unique permissions for each facility.
  • Upload documents to a central place: A drop-off library with content rules to move the documents to other libraries.
  • Be able to add Document Types and Products: Use managed metadata as document attributes.
  • Rename documents based on their attributes: Workflow rules to rename documents.
  • Be able to filter documents easily: Metadata Navigation Hierarchies.
  • Security and availability: SharePoint Online meets this requirements.

In order to accomplish this mission, I will divide the job in the following steps:

  1. Create the necessary Term Sets in the Term Store.
  2. Create a new site using the Document Center template.
  3. Enable and set up the Content Organizer.
  4. Create a site Content Type using Document as Parent Content Type.
  5. Edit the default Documents library with the columns and views needed.
  6. Create a workflow to rename the documents.
  7. Save the Documents library as template and create a new document library for each facility.
  8. Create Content Organizing rules to route the documents to his final location.
  9. Redirect the default “Upload a Document” button to the Drop Off Library.

In this series of posts, I will go over all those steps, so you can create a totally managed document center from the ground up.

Let’s start with the first step!

Create the necessary Term Sets in the Term Store

As the SharePoint Administration Center mentions, the Term Store “contains a set of related keywords (called managed terms) organized into a hierarchy of information, such as a well-defined product category or materials list, that you can then use to control the entry of list values. A Term Store helps improve the consistency, reliability, and discoverability of information within a site collection.” The reason we are going to use managed metadata instead of site columns is because managed metadata allows user to add more terms in the fly. With site columns, users need to go to the site settings or library settings every time they need to add new items. Also managed metadata allows easy filtering using Navigation Hierarchies.

In order to access the Term Store, you need to login into the Office 365 Portal with admin credentials. Then, in the Admin tab, click on Manage under Microsoft Office 365 > SharePoint; this will open the SharePoint Online Administration Center. Click on Manage Term Store.

In the Term Store, you will see a hierarchy that has the word Taxonomy followed by a series of characters as the root. If this is the first time you use the Term Store, you need to add Term Store Administrators on the right side. Make sure you add the account you are currently using. Then, click on Save. Only the Term Store Administrators can add new groups and new term sets.

Next, right click on the root of the hierarchy (Taxonomy_xxxxxxxxxx) and click on New Group. Name the new group as “Document Center”. Now, right click on the newly created group and click on New Term Set.


Name the new term set as “Document Type”. In the right panel, type a description for your term set. Under the Stakeholders field, add all the accounts that will have permissions to add new items to this term set. Make sure also that Submission Policy is Open.


Save the Term Set and then you can enter some initial terms. To do this, right click on the newly created term set and click on Create Term.

Press enter after creating a new term and a SharePoint will add a blank line, so you can create new terms easily.

Repeat this whole process to create two new term sets called “Facility” and “Product”.
At the end your structure should look similar to this:

 You could also create a hierarchy inside the term sets, as the following example:

This way, you can organize your products and document types by category, or your facilities by region. For the simplicity of this demo, I will use only first level terms in each term set.

In my next posts, I will cover how to use this metadata on content types to achieve the goal of a totally managed document center. Keep posted!





Tuesday, November 13, 2012

A Bilingual Document Library in SharePoint (Part 2)

I showed in my yesterday’s post how to change the interface of SharePoint, so users that speak a language other than English would be able to see in their own language.

Today, I will focus on how to create a bilingual library, so every time a document needs to be created in the library, a set of two documents are actually created. These are the steps we will follow up:
  1. Verify Document Sets is active at the Site Collection level.
  2. Create a Document Type for each version of the document.
  3. Create a template for each version of the documents.
  4. Create the Document Set.
  5. Create the Document Library.

Verify Document Sets is active at the Site Collection level

Let’s start the activating the Document Sets feature as the Site Collection Level. This feature is enabled by default in SharePoint Online, so we just need to verify it in the Site Collection Settings. Under Site Collection Administration, click on Site collection features:

Then verify that Document Sets is marked as Active. Click on Active if not.

Create a Document Type for each version of the document

Go to the Site Collection Settings and under Galleries, click on Site Content types:

Next, Click on Create at the top of the list and create the first Content Type with the following information:
Name: Document (English Version)
Select parent content type from: Document Content Types
Parent Content Type: Document

Leave the new Content Type under the Custom Content Types group or create your own group.

Next, we need to add the column Language to the newly created Content Type. To do this, in the Document (English Version) Content Type Edit page, under Columns, click on Add from existing site columns:


On the Select columns from drop-down-list, select Base Columns; then add the column Language to the Columns to add list. Leave the Update all content types inheriting from this type? As Yes.

Thus, we have defined our first Content Type for the English version of each document. Repeat the same procedures, for the Spanish version, changing only the name of the Content Type. When finishing this step, you should have two Document Types:

Create a template for each version of the documents

For this step, we will use Microsoft Word. I’m using version 2013, but I assume that you are able to do the same in Microsoft Word 2010 or 2007.
Create a template for the each version of the document, use the margins, header, footer and other elements as necessary. Make sure you set up the proofing language of each document to the correct one. In this example, the documents look like this:

Save both documents with a name that mention the version. For this example, I saved them as Document (English Version).docx and Document (Spanish Version).docx. This name will be added to the name of the actual document automatically in SharePoint.
Finally, go to the properties of each document (File / Properties / Advanced Properties in Microsoft Word 2013)

In the document’s properties window, go to the Custom tab and Add the Language property with the word “English” or “Spanish” as Value depending which document are you editing. Save both documents locally in your hard drive.

Create the Document Set

Back in SharePoint, create a new Content Type with the following information:
Name: Bilingual Documents
Select parent content type from: Document Set Content Types
Parent Content Type: Document Set

After creating it, on the Bilingual Docs Content Type edit page, under Settings, click on Document Set settings

On the next screen, remove Document from the Content types allowed in the Document Set list and add the two Content Types you recently created: Document (English Version) and Document (Spanish Version)

Under Default Content, add two content types and select both, one on each row. Then, click on Choose File and select the document templates according with each content type:

Click OK to save the Document Type.

Create and configure the Document Library

The last step is to create the actual document library that will hold the documents in the two languages. o do this go to the site where you want to create the library on and create a new Document Library. Then from with the Library, click on the Library Tab in the ribbon and click on Library Settings to configure it to accept the created content types.
Inside the Document Library Settings, click on Advanced Settings under General Settings:

Then, Under Content Types, in the question Allow management of content types? click Yes and then OK to save.

The Content Types section will appear right before Columns in the Document Library Settings page. Click on Add from existing content types:


Add the Bilingual Docs Content Type and press OK:

Back on the Document Library Settings page, click on Document under Content Types and remove it.

Now, your Document Library is ready for creating new documents. You will see that if you click the New Document in the ribbon, there is a button that says Bilingual Documents.

If you click on it, the New Document Set: Bilingual Docs will show up. After you enter a Name and a Description (optional), you’ll have a couple of documents in the two languages selected created from the templates we uploaded before.


There is much more that can be done with this approach, like creating templates for Web pages or another Microsoft Office documents. I just wanted to show you that it is possible to have Multilingual libraries using out-of-the-box SharePoint features.

I hope you enjoy this post!

















Monday, November 12, 2012

A Bilingual Document Library in SharePoint (Part 1)

There are scenarios of companies that grow up  expanding to other countries where English is not the primary language, or companies here in the US that have a growing number of employees that speak a language other than English. On these scenarios, the ability of creating bilingual documents is a must have.
In this post I am going to show you a way to accomplish this by using a Document Library in SharePoint. I will divide the job in two phases:
  1.  Make the SharePoint interface bilingual using out-of-the-box SharePoint Multilingual User Interface (MUI).
  2. Create two versions of each document using Document Sets and Content Types.
Let’s star then with the Phase 1.

The first thing you need to do is to enable MUI in SharePoint; this will allow users to change their default language of the main SharePoint interface. To do this, just open the Site Settings of the site that you want to provide multilingual support. Click on the Site Actions link at the top right of any page of the site, and click on Site Settings:

On the Site Settings page, under Site Administration, click on Language Settings:

In the Language Settings page, under Alternate Languages, click those languages that you want to incorporate in your site:

Select No on Overwrite Translations and click in OK.
Now, your users can easily change the language of the SharePoint interface clicking in the menu that is next to their names in the top right corner:


 SharePoint will show the ribbon, the settings pages, help, menus, top link bar and other controls in the selected language. The next two images show the ribbon of Shared Documents  in English and Spanish:


In the second part of this post I will show you how to create two version of each document using Documents Sets and Content Types. 

Stay tuned!