Using Content Types as Statuses

Today I’m going to show an interesting way that you can use SharePoint content types.  First, I’ll show you what the end result looks like, which will help explain the concept of using content types as statuses.

This solution was originally created for SharePoint 2007, but can also be used the same way in SharePoint 2010 and SharePoint Online with Office 365.

Statuses?  I’m referring to a field in any kind of list, that is used to indicate the status level of a list item, such as a Task list.  There is a built in field in a task list that contains a field called status, with levels like In Progress, Completed, etc.  In this example, we have a patient admissions system as a SharePoint list.  There are three different stages that a patient goes through in this list.  They’re admitted, then they’re considered a current patient, and then they’re discharged from the hospital.

A requirement of this example patient list, is that for each “status level”, there are different fields that need to be filled out in the form.  This is where content types can be quite useful.  Here are screenshots of the end result of this example.  Notice the “Content Type” drop-down box on each one, and the fields in each form… they’re different.

43-image_82e93ce8c884429f82dc1063b8441d90_0094DF57.png

 

43-image_c60b649576254eae9cc3ccc1e4416332_0094DF57.png

43-image_281dd3d1c1ca4938b60ca03801416e9d_0094DF57.png

Notice that not only are the displayed fields different, but the required fields are also different at every step.  This is all done using out of the box functionality in WSS or MOSS, and here’s how:

First, in planning, put together a spreadsheet that defines the list of all the fields (columns) that will exist in the SharePoint list, so that it can be determined which field needs to be in each status as “Optional”, “Required” or “Hidden”.  It will look something like this (for time’s sake, I’m only entering four fields):

FIELD

Admission

Current Patient

Discharge

Admit Date

Required

Optional

Hidden

Case Manager

Optional

Optional

Optional

Discharge Date

Hidden

Optional

Required

Discharge To

Hidden

Hidden

Required

In the chart above, you can see that depending on what’s going on with the patient, certain fields are required or hidden.  Here’s how to go about setting this type of list up on your site once the planning has been done.  As I go through these steps, I’d like to point out that I’ve been through and messed up this process many many many times, and some of these steps need to be done in a certain order, or it can just end up getting hosed up and can be extremely time consuming.

Note that these next steps where we create the site columns and content types can be done in different order.  Create all the site columns first or the content types first.  I’m just choosing to create the content types first here.

  1. A “master” content type is created first.  In Site Settings and go to Site Content types.  Click the <Create> button.  Name it something appropriate.  In this case I called it “Case Mgmt All”.
  2. Since ultimately the type of list I’ll be using for this will just be a custom list, I’m going to pick “List Content Types” and Item as the parent for this first one, and I’m choosing to create a new group, which is just how it’s listed on the page with all the other content types:
    43-image_e1f06791fb3d452cb702de549f05408a_0094DF57.png
  3. Next, create each of the other status levels as content types.  I chose to put numbers (1-3) in front of the names of each of mine, just so they’d be displayed in that order.  Click the create button for the next one.  Pick the parent type that was just created, as the parent, and for the group, choose the existing group (that was entered as a new group in step 2):
    43-image_999d257749d04253a5bdd016b9ca659a_0094DF57.png
  4. Repeat step 3 for each of the other status level content types, with the only difference being their names and descriptions.  They should all use that first content type as the parent.
  5. The next step is to create a bunch of site columns to associate with the new content types.  On the Site Settings page, click Site Columns.  Click Create.  This is all pretty standard.  For the first one, choose to create a new group called Case Mgmt.  (we created the group in the content type gallery, and now we’re creating on in the site columns gallery.)  Fields that will end up being set as required in all content types can be set as required on this screen also.
    43-image_dd72d68a4b994616a54f0ea5ff576f13_0094DF57.png
  6. Just create all the rest of the columns, just as you would normally, just try and remember to pick your new grouping for each one.
  7. Next is the fun (and sometimes tedious) part, where the site columns are put into content types.  Go back to Site Settings and Site Content Types.  Click on the name of the parent content type first.  In this one, I called it Case Mgmt All.
  8. Click “Add from existing site columns”
  9. From the drop-down box, select the name of the column grouping that was created in step five, which will filter the list by only the pertinent columns.  If you missed one or two, and forgot to place them in the new grouping when they were created, they won’t show here (I’ve done this many times)  😉
    Select all of the column names on the left, and click to ADD them to the right and click OK.
    43-image_c6a41b9ce23b48e5b6d172acd3452165_0094DF57.png
  10. Now, notice that when back in the site gallery, as you look through each of your different status content types, they will each contain ALL of the fields that were just added to the parent!
    <golf clap>
    The next step is to go through each of the fields in each of the child content types, and change the ones that have to be required or hidden.  I don’t recommend messing with the Title field at all here, or even changing the name of it.  Not worth the hassle, we’ll do that later, but just keep in mind what it should be called.  In this case, it’s “Patient Name”.
  11. If the columns need to be re-ordered, I recommend doing it at the parent content type level first, and the children will inherit that order.  After that, the children can still be re-ordered individually.
  12. Just to clarify… Click on the first child content type, in this case it’s “Admissions”.  Click on a field that should be set as required, and change it to Required, as so.  Do this throughout all content types, for the required fields:
    Note that fields can be set as required in the parent content type also, which will force that field to be required in all of the children.
    43-image_42f1b587ca5b4e9c8707f37b4f7ed804_0094DF57.png
  13. For the fields that can be hidden from each content type, they can be Removed from those children.  Do NOT remove any fields from the parent, as it will then be removed from all the children, and do not set any of the parent’s columns to hidden, either. So, look back at that original table you created, and for each of the ones that can be hidden in each content type, you can click the Remove button.  I’ll show you a benefit of that compared to simply changing them to “Hidden”… in a minute.
  14. In the Content type gallery, now when I click on my first content type called “1 Admissions”, this is what the screen looks like.  Notice that a couple of the columns are required, and several have been removed.
    43-image_22287e49673e4f6388e1c462b7bb597a_0094DF57.png
  15. Now it is time to create a new SharePoint list to put these content types in.  For mine, I create a new custom list on the site, called “Patient List”.
  16. In the list’s settings, go to Advanced Settings, and under “Allow management of Content Types”, change it to Yes.
  17. In the Content Types section on the List Settings page, click “Add from existing site content types”.  In the drop-down, pick that custom content type grouping you created in step 2, to filter the list.  Select ONLY the one parent content type and click Add and click OK.
  18. Since this is a custom list I’m using, the default content type that was already in my list, is called “Item”.  Click the name of the item content type, and click “Delete this content type”.
  19. Now the other, child content types can be added to the list.  Click “Add from existing site content types”, choose your custom group in the drop-down, and then select all the rest of the content types and add them. Click OK.
  20. Go ahead and rename the Title field to something else if need be, here at the list settings level.  Optional.
  21. Notice something cool in the list settings now.  Next to each column name is a list of all of the content types that it exists in!  In step 13 when I mentioned that removing the columns was better than hiding them, this is why.  When they’re only set to hidden, then every content type shows up next to every field in this screen, and there isn’t a quick way to be able to see what lives where.
    43-image_0b8b9a7307de41faaaa79099be654fc4_0094DF57.png
  22. Next, it’s time to just make sure that the different status levels show in the desired order in the form.  Still on the list settings screen, click “Change new button order and default content type”.  Order the “statuses” as desired.  If you uncheck any of them here, they will not only be hidden from the New drop-down button but also from within the edit form of any item.
    43-image_905948e2004e43f0a69700a366f41a0d_0094DF57.png

All done.  Now when you create new items in the list, only the fields in the first content type will be available to fill out.  Then, you can edit an item and change the content type, to dynamically see the fields in the form change.  This solution isn’t going to be for everyone.  For example, you may not want the users to be able to switch between content types like that.  One thing I’ve done for that kind of situation, is to uncheck all but the first content type (in that last screenshot).  The, the content types are only changed via a workflow.  For example, once a certain check box is checked or field is filled out, then the content type is changed by the workflow.  then, the next time the users open the item, it will show the fields from that other content type.  Not sure how well I explained that last part… maybe I’ll have to write a whole other blog post for that.

Here’s an 8 minute video of this whole process:

91 comments

  • james_soulsby@hotmail.com

    Wow! Fantastic and very simple.

  • ffamiliari@yahoo.com

    Thanks Laura, Interesting concept. This is the first good reason I’ve seen for SP automatically sticking that content type field at the top of the form, (wanted or not) Looking forward to the next post about workflows, as I’ve had no luck with content types and SP Designer workflows. Cheers! F²

  • mark.miller@endusersharepoint.com

    Laura – Very nice use of content types to drive the display/form fields. You and I have talked about this in the past, but it’s good to see a walk-through. Really nice. Mark, EUSP

  • This is such a brilliant idea! Thanks WonderLaura.

  • Brilliant – just the inspiration I needed for my solution

  • howardj@ausrad.com

    Excellent, Laura! Thanks for the simply-stated proof of concept! Blessings, Jim Bob Howard

  • it would be even greater if you could switch between the content types and fill out the respective fields for each content type in the forms without having to click OK and and go into edit mode for the next one again. To have it all in one flow but that can’t be done I guess? I am kind of a novice in regards to content types?

  • brian.bedard@gmail.com

    Dear slw@post.dk: You can’t do that and here’s why. The list item supports a field called ContentTypeId. This is the field that supports the Content Type selector demonstrated in this post. The list item can only support one content type reference at a time. What you are suggesting could be done but not in this way. You could substitute the content type selector for your own drop down and using some javascript magic, just hide/unhide the fields you need for that status. But it’s important to realize you won’t be switching Content Types. You would always use the parent Content Type that has all the fields present.

    • Hello! GREAT tool! I was wondering how you import this into InfoPath? And create a form to choose your drop downs?

    • There isn’t really a way to use this in InfoPath. This is really for people who don’t have the flexibility of InfoPath. In InfoPath, even without using content types, you can just use a formatting rule to hide and show things under certain conditions, like whether the value of a drop-down box is a certain thing.

  • Hi Brian Thx for the info on that one – greatly appreciated 🙂

  • Bob.George@hud.gov

    Thanks Laura, very nice and well detailed. No questions which is usual for me. Congrats!

  • shalin_i_parmar@hotmail.com

    Brilliant article with excellent simplicity……

  • jarret.franklin@gmail.com

    What is also nice is that you can use javascript (or jQuery as I prefer) to either hide the content type drop down or even hide specific types as needed. To use this example, you can have it so that if type [1] is current, the user can only select types [1] or [2]. If the type is [2], then the user can only select types [3], [4], or [5], and so on… You can highly customize it to your business process.

  • Christophe@PathToSharePoint.com

    Laura, This is a smart use of content types to support processes. I just have a doubt about step 13 – removing a field instead of just hiding it for a specific status. Don’t you lose the field content in this case? And if not, is this supported by Microsoft, or should it be considered a hack (similar to the “Me” trick)? As for the edit form, have you considered using a Data Form Web Part instead of the editform.aspx page? Having a two step update for each status is a little bothersome (and would be better through a workflow, as you state). Christophe

  • GeorgeWNYC@aol.com

    Fantastic! A beautiful presentation!

  • vijay_ramisetti@yahoo.com

    Excellent Article!!! Very nicely presented. As always Laura Rocks!!!!

  • howardj@ausrad.com

    Dear Laura, Next step… I want to limit content types based on permissions. IOW… 1. Employee can create CT#1; 2. Manager creates CT#2, only if CT#1 already exists; 3. Medic creates CT#3, only if CT#1 exists and optional Medic field filled in; 4. HR can see everything and add comments via CT#4, but no one else can view that content type. I know we’re moving beyond “no code” for those options, but that’s a requirement I have. 🙂 Thoughts? Blessings, Jim Bob

  • dfwilcox@micron.com

    Laura, I keep coming back to this article as an excellent example of how and why to use content types and site columns. It’s really opened my eyes to more possibilities! I like that entering information can be role based, and each role can fill in only the fields that apply to them. I found that it’s quite easy to deploy a workflow on your example which changes the content type when certain fields in the previous content type are filled in. Thanks for taking the time to describe and demonstrate this solution!

  • perezco@hotmail.com

    Hi Laura, how do you proceed to move the site that you spend time by using content type to a different location…. b/c when I tried to move it .. yes I have the multi form but if I go to “Site Content Type Gallery” I am not be able to see any of “New Site Content Type” that I create in the other location previously..

  • Perezco, That functionality doesn’t exist out of box. You’d have to manually create the content types and site columns and start from scratch on the other site collection. 3rd party tools could probabaly accomplish this, such as AvePoint.

  • nahdarp@gmail.com

    Very interesting article. Noticed that the content type drop-down is available on the Edit Form only. Can this be made available on the New Form as well?

  • Nahdarp, The drop-down box has the choices, it’s just not on the newform itself.

  • ivan.vrkljan@indiko.hr

    Nice work Laura, Us usuall I can learn a lot from your articals. THX

  • plathrop@segalco.com

    Thanks for sharing the link to this article on the fly during SharePoint Summit 2010. Cheers, twitter.com/plathrop

  • Thanks so much for posting this. I have ran a complete test site with your instructions and hope to implement this on an existing site.

  • This looks like the solution I need and will comment back when it’s been tested. What I especially like is that it requires no coding. THX!

  • This is a great solution, but one problem we have is that you can’t sort or group a list by content type in the browser – you have to edit the query directly in Designer. Of course, this means any regular users of this solution can’t create views which sort or group on the “status” field, which is probably the MOST important field to be able to sort/group by. Anyone else run into this? Any workaround?

  • Laura, thanks for the post – I have had occasion to use this solution a number of times since first coming across your excellent example. Kim, try using a calculated column with the formula =[Content Type], and name it according to your preference (Current Status, Project Phase, etc.). The calculated column can then be added to views as a sortable/filterable column and can also be used for grouping.

  • Does anyone know how to create parent-child drop down lists? I cannot find any good example. Thank you

  • Michael, Here’s a way to do it in InfoPath, my screencast: http://www.endusersharepoint.com/2009/12/31/infopath-cascading-drop-down-screencast/ Also, read all the comments on that post, to see different ways that people do it.

  • youngyingyang@hotmail.com

    Does anyone know how to FORCE users to pick a content type and disable the ability to quickly click on the “new button”??? It’s imperative for the user to pick the correct content type in my processes… I searched every active sharepoint users site, no luck…. 🙁 Why allowing to edit the content type and NOT allow the option to force the user to do it right from the beginning…

  • I have gone thru this twice and created two different lists. I think this is a really good way of creating this type of list, but in both trials that I created, I did not find a way to display the Content Type as a drop down on the forms. Can you please explain how that part works? Thanks,

  • Great idea and awesome post! Naturally, the next thing I attempted to do was create a view and “group by” content type. Oh no… product team didn’t include that in the UI (for whatever reason). Found this link helpful: http://www.sharepointanalysthq.com/2010/06/how-to-group-by-content-type-in-sharepoint-2010/ Thanks! @jjclore

  • youngying…, No, I don’t know of a way to do that, but it makes total sense. Unfortunately it would probably entail custom code. 🙁 Carole, Once your library has more than one CT, and there is a checkbox next to each one to display in the new drop-down, then you’ll automatically get that drop-down on the edit form to change the CT. Jeremy, Just use the new “Metadata navigation settings” in the list or library, and you can group by content type that way.

  • Laura, Thanks for this article! Is there a way to add the “Content Type” field as a drop down to a new list item? I am trying to use that field to determine my other fields that are displayed or not displayed.

  • Marcus, Nope, that would be nice, but there’s no way to do that. You’d have to do something funky like set the content type via a workflow that runs when a new item is created, and make it change the content type according to some condition like the value in one of your fields.

  • Hi! I read your post and I have try to implement it on my workflow. But i come up against serious prublem. In the first iteration every thing work correctly. In the second iteration, when i try to start the same workflow on the same item in the second time, I do not have the “worklfows” option in my item menu. I gess that this is connected to the item permission. P.S. when i operate the same workflow without using content type as status I do not have this problem.

  • Iiron, If your workflow is already “in progress”, you won’t be able to manually start it again. You have to wait for it to finish before you can start it again, or go in and terminate the currently running one.

  • Hi Laura – LOVED your post … Filled exactly what I needed to do to have custom fields per selected choice on my forms… Follow on question please… The owners of the Content Type driven list would like the users to select a link from a list on the home page and have each link invoke the correct Newform of the [Content Type] selected… Ex./ This is some text describing choices of virtual servers you can request from the bullet list below … each line will take you to a customer input form whereby you can detail your request: * Request an Application VM …. [Content Type AppVM] * Requewst a Database VM …. [Content Type DBVM] * Request a Virtual Desktop VM … [Content Type VdiVM] Each of the three bullets above would have an associate link to the Newform for custom Content Type.. Thoughts on how I can wrapper each bullet item list in its own URL to call the correct Content Form? Thanx again for your posting!! Jeff

  • Jeff, I’m not sure, I’ve never tried it. It looks like there’s a ContentTypeId parameter in the URL though. So, you’d have to figure out what each content type’s ID is, something like: &ContentTypeId=0x010400EB9999D3D5635947B0E11FAFC59ADA79 I found this by clicking on the “new” button for a couple of different content types. The default content type form didn’t have this parameter, but the others did.

  • Hi Laura – Thank you for the reply… I used the “Poor-Man’s” method (copy-paste-modify) to select the New Form associated with each ContentType List Type… Once selecting the list name from the left-hand navigation menu, and then clicking on List Tools – Items, the “New Item” button in the upper left-hand corner has the drop down displaying a selection for each of the [New Form] for each Content Type. Right-clicking and Viewing Source of the page, I then search the Source for the ContentType Name I assigned in your procedure …. The search will bring the text down to the section where the ribbon is defined… The key string to find is the “ClickScript” associated with each ContentType Name: “‘ClickScript’:’javascript:NewItem2\\u0028event, \\u0027\\\\u002fsites\\\\u002fOperations\\\\u002fITLabSupportServices\\\\u002f_layouts\\\\u002flistform.aspx?ListId=\\\\u00257B36244D16\\\\u00252D1BBF\\\\u00252D43E0\\\\u00252DA2EC\\\\u00252D1ED590EFE491\\\\u00257D\\\\u0026PageType=8\\\\u0026RootFolder=\\\\u00252Fsites\\\\u00252FOnStarOps\\\\u00252FITLabSupportServices\\\\u00252FLists\\\\u00252FVM \\\\u002520Request\\\\u0026ContentTypeId=0x01002C507021AB699044BB22BDBF3F9BADCB01004C4219010B6250448557887BCA68E236\\u0027\\u0029” Being mostly Greek to this Sharepoint Novice, I looked up the codes associated to “\u0027” and such and did the following replacements (which I’m not sure if I had to do these replacements but did so anyway for my own understanding …. Replacements were done in MS Word) \u002f = / \u0029 = ) \u0027 = ‘ \u0028 = ( \u0025 = % \u0026 = & \\\ replace with ‘nothing’ The resultant after the MS Word “Replace All” and inserting the full path (https:// looks like this (more readable for me): https:///sites/Operations/ITLabSupportServices/_layouts/listform.aspx?ListId=%7B36244D16%2D1BBF%2D43E0%2DA2EC%2D1ED590EFE491%7D&PageType=8&RootFolder=%2Fsites%2FOnStarOps%2FITLabSupportServices%2FLists%2FVM%20Request&ContentTypeId=0x01002C507021AB699044BB22BDBF3F9BADCB01004C4219010B6250448557887BCA68E236 I repeated this for the other 3 ContentTypes I had defined, used Sharepoint’s online page editor, and Inserted a Link copying/pasting the URL I had converted… Thanks to you Laura for the ContentType List procedure for custom forms… It filled the need!! Now all I need to do is figure out how to use a Lookup Field in the ContentType List forms as it appears to work a bit differently than if the list(s) is just a regular list in a site / subsite vs. made up of Site ContentTypes and Site columns … Jeff

  • Laura/Jeff, can you be a bit more specific and detailed on how did you manage to get the Content Type to be shown as a choice column to pick your options and get the desired columns sets. I am really stuck at this level and need your help.

  • Abhishek, As soon as you add multiple content types in your list, they are automatically shown in a new drop-down box on the editform of your list. I didn’t do anything special to get those to show. Look at the image at step 22, and make sure that you have check boxes next to all yours. If there are no check boxes, then the drop-down box on the editform will be missing.

  • Great job Laura (as usual). I’ve followed your instructions and everything is working well except… When I create a new Edit form in Designer 2010, none of the fields appear in the form. This occurs no matter which Content Type I choose. Any advice would be GREATLY appreciated!

  • Paul, Are you using the “new form” button in SharePoint Designer 2010? I’ve never seen it create a form with no fields. In SPD, click Lists and Libraries, click the name of the list, and then click “new form” on the right. If you’re doing that, all the fields should automatically be on the form.

  • Hi Laura, Great article!!! I want solution for one more problem. I want to make some fields read only as we progress through content types. And also when user created item for one content type I want approval to go in other status/content type. How will I achieve that? Thanks in advance.

  • Sneha, Do you have the enterprise version of 2010? If so, you can just customize the form with InfoPath, and simply click on any field to make it read only. Go to your library’s settings, and click “Form settings”, then it lets you pick which content type’s form you’d like to configure, and you can configure each of the content type forms separately. Or if you don’t have sp2010 enterprise, there’s this: http://wonderlaura.com/2010/1/29/using-content-types-as-statuses

  • Works like a charm in Office 365 too! Thanks for the info!

  • Hi Laura
    Great post, does this work in Sharepoint 2010 also?
    I have tried it in Sharepoint 2010, and almost everything works 🙂 The only thing that I am missing is the content type field at the top of the new form. Do you know if it is possible, or have any idea of what I might have done wrong?
    /Thanks

  • Helle,
    Yes. In 2010, the “new” drop-down is on the Items tab in the ribbon.

  • Thanks, Laura – I’ve been scouring your posts, videos, etc. to learn as much as I can about this solution as it’ll work (I think/hope) for a smaller (10 subsites with up to 20 custom fields per subsite per column) but similar solution I’m working on and need to implement in pilot mode very quickly due to an unreasonable but important internal client! I’ve got 3 of the books you’ve contributed to – is this solution (or components of it) discussed in any of them? I’m pulling together all the tips and info needed to create this (already have my parent site and subsites; site columns) and just want to have everything to hand that I’ll need once creating the content types and custom forms in InfoPath. If I weren’t under such time constraints, I wouldn’t by lazy and ask – but sometimes asking the expert to point you in the right direction is the best way!

    I love your site and all of the fantastic sharing – really exciting stuff!

    Thanks for paving the way!

  • Karenda,
    Hi, no I haven’t written this solution in any books. This and the video are all I’ve done. Thanks for the compliments, though!

  • I’m very new to SharePoint and this solution worked nearly perfectly for me.
    I have a question about the Form View.
    When you click on the “Title/Name” link to view the default form pop-up it only displays the Content Type 1 fields.
    Is there any way to have the form show any other content types (or all of them)?

    Thank you for the great tutorials!

  • *Smacks Forehead* I’ve just answered my own question…I should have gone through the whole process by entering a new item! It’ll show which ever field it’s saved as.

    Thanks again!

  • Hi Laura,

    first thank you for all your posts. When I’m searching for some SP-related solutions and see your article among the answers I know for sure that this will be what I need and in details.

    A short question on this post: do we need master CT and site columns only for automation and managing child content types? I’m creating currently solution with a few CTs and CT change through workflow. Thus I’m in doubt if it’ll be ok to simply create list columns and assign them to different CTs? Will I miss any info if I change CT to the one without some columns included into previous CT?

    Thank you in advance for any recommendations.

  • Denis,
    I think you may be okay creating them as list columns and adding them to the CT within the list. I can’t think of reason off the top of my head not to do that.

  • Great article and easy to follow! Thanks for posting!

  • Tristan Danic

    Thank you very much Laura,

    It is absolutely brilliant and very easy to follow !! Very helpfull.

  • Hi Laura,

    This was very helpful.

    I created 3 content types in my SP2010 list and edited the default content type form with rules set to disable certain fields depending on a WFStatus column I defined in the list.

    Is there an easy way to copy the rules over to the various Content Type forms? I tried exporting the form and then copy/pasting it into the second content type form but the field associations don’t copy over and neither do the rules.

    I would also like to reference the content type forms in a SPDesigner 2010 workflow that walks through all the phases of the workflow (mainly: Request, Approval, and Purchasing) sending emails to the various groups involved for each phase. I also need to figure out how to reference the content type form in SPD. I was told there was a metadata column I can use for content types.

    Any help you can provide is so appreciated!

    Nadia

  • Laura, I’ve been following your work since SP24 and this post on using Content types for status has been helpful to me. Thank you!

    My List Name: Software Request
    3 Content Types created with similar columns using the method mentioned in this article as well as your InfoPath video:https://www.youtube.com/watch?v=A78eLXRSh7g&feature=youtube_gdata_player/.

    Required fields vary per content type:
    1. Request
    2. Approval
    3. Purchasing

    I set the first content type as the default form on the list and edited it in Infopath setting Rules on each field with the conditions depending on the WFStatus entry.

    I would like to copy the form and associated rules since they can apply to all content type forms.

    There are 7 stages of the WFStatus column defined in the list: Start, WApproval, Approved, Denied, WPurchasing, Purchased, Delivered, Purchasing

    I want to load this same form into the other 2 content types (Approval and Purchasing). Can this be done?
    I was able to edit the other CT forms from the List by List settings > Form Settings > select content type to Edit.
    I pasted the form in but cannot bring in the rules and field associations.

    ***Each content type has a New, edit & view Form as well so this is starting to get confusing.
    But this should work with the following plan:

    Step 1. End users would submit a new request using a link referenced in a page. (Instead of using the lists page, which will be hidden). I will need to direct users to another page after submitting an item. I think there is a way to do this in Infopath.

    Step 2. Approvers will then get an email with a link to the NEW form associated to the Approval Content Type form.

    Step 3. Once approved, purchasing will get an email with a link to the NEW form associated to the Purchasing Content type form.

    Any feedback you can provide on this would be helpful!

  • Jona (@jltitus)

    Laura,
    Thanks for such great directions.. just one question. It’s not clear to me how you get the content types to be a drop-down list. I followed step 22 and have both my content types set as visible.. but I don’t see them as a drop-down on my form.

  • Laura,

    I really enjoyed this article, it has me really close delivering on a critical project.

    My objective is to create an eight step workflow where entering data into a given field moves the item to the next content type (rinse and repeat x7) all the way through completion. I followed all your steps and have a “working” list set up.

    There is one problem when I open the edit form at the second step it gives me the following error…

    “Your changes conflict with those made concurrently by another user. If you want your changes to be applied, click Back in your Web browser, refresh the page, and resubmit your changes.”

    There are no other users…I’m pretty sure it has to do with the workflow I created to update the content type through the process. Is there a tutorial or article that covers creating workflows that update content type? I’ve watched all the workflow videos that you have linked to on your site and searched for other resources.

    Any help would be greatly appreciated!

    Thank You!

  • Charles, have you tried putting a pause in your workflow? It sounds like a timing issue.

  • Hi Nadia,
    No, there isn’t an easy way to copy rules from form to form with InfoPath. Also, with a workflow there is a “Content type ID” field that you can use. It sounds like you’re using InfoPath, so you really don’t need to do a bunch of content types for that. You can just create a status field and use logic in InfoPath to hide and show different approval sections and depending on the status. You can also use the username() function in InfoPath to show certain data or views according to the logged in user. Chapter 11 in my InfoPath book shows the step by step on how to create a form with multiple approval levels or steps like it sounds like you’re trying to do. This content type method is mainly used when InfoPath isn’t an option.

  • I was able to get it to work.

    At first I was trying to create one workflow to move the item through all the steps. Once I broke the workflow down into individual workflows for each step it fixed the issue. Rookie mistake I guess. Your article went a long way to point me in the right direction.

    Thanks again!

  • Hi Laura. Thanks for the tutorial. I have a question about the last note, which is not being able to limit access to certain individuals. Do know where I can get information on how to limit content types to certain permission groups?

    Thanks~

  • Excellent, Laura: thank you SO much! It worked first-time (after the hiccup of not realising that the Content Type doesn’t appear in the default new form!).

    I’m using it to manage initiatives through a staged funnel (multiple areas, problems and solution ideas feeding into a single, multi-stage funnel)

    I have everything working as required, but am unable to get the multiple values Lookups (for selecting the areas, problems and solution ideas ) working.

    I’m sure that there’s some part of the concept that I’m not getting!

    I know how to get ordinary list Lookups to work, of course – but I need them to be Required|Optional|Invisible on the relevant Content Types (Initiative Stages).

    Is this doable either directly or via SharePoint Designer?

    Thanks very much!

    Gary

  • Oh dear: forgot to mention (I think?) that I’m trying to do Lookups on Site Columns or lists based on Site Columns.

  • Hi Laura,

    Nice post.
    I found this website while I’m looking for solution about multiple edit form based on item status.
    I see that it almost same like your example.
    But the problem is I’m using BCS (external list).

    How can I create multiple edit form if I’m using external list (BCS) ?

  • i was looking for exactly what u said about. i am testing it, thanks for your post.
    is this can be used to be an alternative to time out error for forms,as because the form is having many calculated coloumns?

  • Outstanding article! My organization is phasing out InfoPath and I was in panic mode looking for a way to replicate a multi-view InfoPath form OOB and your solution seems like it’s going to save my bacon.

    I have a quick question, which perhaps becomes evident once I build it out. If I go the workflow route to keep users from switching content types themselves is there a way for an ‘administrator’ to be able to go in and work on the master content type at any stage in the process? (My guess is that the datasheet view is one answer.)

  • Great post but one question. How do I get the content types field to display if I’m using custom forms? It seems that if I customize the form at all in InfoPath the content types filed is no longer displayed. Is there a work around on this?

  • Thanks for the great post! I’ve learnt a lot from this! Keep it up!

  • It’s great article.. I have one doubt here. How those content types will be switched to next content type automatically when you are done with the Administration form.

  • Hello Laura,
    Have you made a tutorial about the workflow you mention at the end? This is a great tool and has helped but wanted to put this into an already existing workflow I’ve created in SPD. This is for a onboard, offboard, and employee change process (those three being the child types). Would it be to make a master form and based on this, if they select one of the children, it directs them then to that form?

    Thanks for all of your help,

    Stanley

  • Love your article! One question: no17 you added the parent CT and removed Item. No19 you add the children CT. Do you then set the Parent CT to hidden so it doesn’t appear in dropdown list?

  • thanks for the wonderful post. I was looking for similar solution but I wanted users to use four different content type forms linked to four different pages updating same list at same time..
    is there a work around?

  • This was great. Thank you so much for posting this.

  • I have created a list with seven content types. All is seemingly work well then notice have new unforeseen field atop my list when in Edit mode. The field is titled Content Type and the pull down shows all seven content types.

    I want to hide that field for do not want allow user to change the content type. So far cannot find solution so would appreciate any help. Am no SP wizard but will to dabble my way to a solution.

    Thanks–

    • Hi Carl, you can go into the list settings and click “change new button order and default content type” and choose to hide some content types if you’d like.

    • Thank you for the response. However, having done as you suggest it renders my list unusable for I need all the New Item menu so show all selections for in any given instance all equally likely to be chosen. It would be most helpful to hide or freeze the content type drop-down or allow viewing the list but disallowing selecting a content type. I would appreciate any solution to obtain such a outcome. Thanks again.

  • That’s the only out of box option, unfortunately. Anything else would be having to figure out something fairly complex and duct-taped.

  • Hi Laura. I’ve created my content types. How do I now get different CTs to show depending on the user? For instance if a Finance manager logs into the system, I want them only to complete their part, systems, etc. Then I would like all the parts to go into the parent list… Is this possible?

    Thanks
    Kim

  • Just wanted to thank you for putting this together. I had to create service ticket type system and this blog post was the most helpful thing ever!

  • Excellent blog post. Very well organized and easy to follow! One question, in SharePoint OnLine, does a customized form created by PowerApps respect all the stuff you presented in this blog related to Content Types?

    • I saw that you have a blog post and video about using tabbed PowerApps customized SharePoint forms the modern answer to list content types?

    • Not really apples to apples, but sure, you could accomplish that with tabs, or any other logic based on the value of something. The only reason I was using the content types as statuses at the time, was because of a lack of any other method, form product or 3rd party product to achieve it.

  • Great guide! We use InfoPath to customise our forms. But the content type column is not available in InfoPath. Do you know if it’s possible to make the column available in InfoPath?

    Best regards
    Morten

Leave a Reply