{"id":12761,"date":"2025-03-17T05:35:27","date_gmt":"2025-03-17T12:35:27","guid":{"rendered":"https:\/\/www.coretechnologies.com\/blog\/?p=12761"},"modified":"2025-03-17T05:38:36","modified_gmt":"2025-03-17T12:38:36","slug":"group-applications","status":"publish","type":"post","link":"https:\/\/www.coretechnologies.com\/blog\/alwaysup\/group-applications\/","title":{"rendered":"Q&#038;A: Can I Group My Applications in AlwaysUp?"},"content":{"rendered":"<div align=\"center\"><img loading=\"lazy\" decoding=\"async\" class=\"no-lazy-load\" src=\"\/blog\/images\/alwaysup-group-applications.webp\" style=\"margin-bottom:20px;\" title=\"Can I Group My Applications in AlwaysUp?\" alt=\"Can I Group My Applications in AlwaysUp?\" border=\"0\" width=\"380\" height=\"160\" \/><\/div>\n<div class=\"blog-qa-question-box\">\n<img loading=\"lazy\" decoding=\"async\" class=\"no-lazy-load\" src=\"https:\/\/cdn.coretechnologies.com\/images\/quotes-transparent-21x21.webp\" width=\"21\" height=\"21\" \/>&nbsp;&nbsp;We are a licensed customer of <a href=\"\/products\/AlwaysUp\/\">AlwaysUp<\/a> and its a great help to our services.<\/p>\n<p>However one of the things I want to be able to do is &#8220;group&#8221; services into a logical set. That way you can see which services belong together visually in AlwaysUp, and more importantly you can start or stop all services in a group either through user interaction or through the <a href=\"\/products\/AlwaysUp\/AlwaysUpCLT\/\">AlwaysUp CLT<\/a>. Also, when defining services through the CLT or XML, we&#8217;d like to set the group to fit into.<\/p>\n<p>Do you think this is something that can be accommodated in a future release or something that may be even there right now and I can use? It will be useful for our product because it has a number of different services that need to start up together and shutdown together seamlessly.<\/p>\n<p>Let me know. Thanks.<\/p>\n<p align=\"right\">&mdash; Mac B<\/p>\n<\/div>\n<p>Hi Mac. Great question! It&#8217;s easy to see how being able to group your applications and operate on them as a unit is a very powerful capability.<\/p>\n<p>The good news is that AlwaysUp already supports application grouping. It&#8217;s implemented through the use of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tag_(metadata)\" target=\"_blank\">tags<\/a>, which work in the user interface and behind the scenes in the APIs as well.<\/p>\n<hr class=\"blog-section\">\n<h2 class=\"blog-caption\">What&#8217;s a tag in AlwaysUp?<\/h2>\n<p>A tag is simply a word or phrase that you assign to an AlwaysUp application. It can be anything you like. The only restriction is that spaces and semi-colons are not allowed.<\/p>\n<p>For instance:<\/p>\n<ul style=\"margin-bottom:24px\">\n<li>\n<p><b>group1<\/b> is OK<\/p>\n<\/li>\n<li>\n<p><b>group-1<\/b> is OK (dashes are recommended for readability)<\/p>\n<\/li>\n<li>\n<p><b>group_1<\/b> is OK (underscores work great too)<\/p>\n<\/li>\n<li>\n<p><b>group 1<\/b> is NOT OK (spaces aren&#8217;t allowed)<\/p>\n<\/li>\n<li>\n<p><b>Group1<\/b> is OK (same as group1 because case is ignored)<\/p>\n<\/li>\n<li>\n<p><b>onelongnamethatsnotveryreadable<\/b> is OK (but long names are discouraged because they&#8217;re difficult to work with visually)<\/p>\n<\/li>\n<li>\n<p><b>trading-apps<\/b> is OK<\/p>\n<\/li>\n<li>\n<p><b>trading;apps<\/b><\/b> is NOT OK (semi-colons aren&#8217;t allowed because they&#8217;re used to separate multiple tags)<\/p>\n<\/li>\n<\/ul>\n<p>Hopefully you get the idea!<\/p>\n<h2 class=\"blog-caption\">How do I use tags to create groups?<\/h2>\n<p>You create groups of applications by assigning tags.<\/p>\n<p>For example, let&#8217;s say you&#8217;re running four <a href=\"\/products\/AlwaysUp\/Apps\/RunJavaApplicationAsAService.html\">Java applications as Windows Services with AlwaysUp<\/a> &mdash; two for production and two pre-release versions for testing. In that case, tagging the production applications with &#8220;production&#8221; and the others with &#8220;testing&#8221; creates two groups, where:<\/p>\n<ul style=\"margin-bottom:24px\">\n<li>\n<p>The first group contains the two application tagged &#8220;production&#8221;<\/p>\n<\/li>\n<li>\n<p>The second group holds the two applications tagged &#8220;testing&#8221;<\/p>\n<\/li>\n<\/ul>\n<p>Here&#8217;s what that arrangement looks like in AlwaysUp. Notice the <b>Tags<\/b> column, which shows the values associated with each application:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/alwaysup-java-applications-tagged.png\" class=\"zoomPopup\" title=\"Java applications tagged in AlwaysUp\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/alwaysup-java-applications-tagged.png\" title=\"Java applications tagged in AlwaysUp (click to enlarge)\" alt=\"Java applications tagged in AlwaysUp\" border=\"0\" width=\"520\" \/><\/a><\/div>\n<p>To show only the production applications, you would:<\/p>\n<ol style=\"margin-bottom:24px\">\n<li>\n<p>Choose <b>View &gt; Filter Pane<\/b> to show the filter controls<\/p>\n<\/li>\n<li>\n<p>In the <b>Show only applications with tag<\/b> dropdown, choose <b>production<\/b>.<\/p>\n<\/li>\n<\/ol>\n<p>The testing applications will fall away to leave the two production entries by themselves:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/alwaysup-production-tag.png\" class=\"zoomPopup\" title=\"Applications tagged with production\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/alwaysup-production-tag.png\" title=\"Applications tagged with production (click to enlarge)\" alt=\"Applications tagged with production\" border=\"0\" width=\"520\" \/><\/a><\/div>\n<p>From there, it&#8217;s easy to work with the production applications as a set. For example, you can select them all and restart them together.<\/p>\n<p>Similarly, you can select the <b>testing<\/b> tag to show only the beta applications:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/alwaysup-testing-tag.png\" class=\"zoomPopup\" title=\"Applications tagged with testing\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/alwaysup-testing-tag.png\" title=\"Applications tagged with testing (click to enlarge)\" alt=\"Applications tagged with testing\" border=\"0\" width=\"520\" \/><\/a><\/div>\n<p>This way, it&#8217;s easy to handle them as a group &mdash; instead of dealing with them mixed in with the production applications.<\/p>\n<hr class=\"blog-section\">\n<h2 class=\"blog-caption\">How to tag an application in AlwaysUp<\/h2>\n<p>There are a couple of ways to tag an application in AlwaysUp.<\/p>\n<h3>Method #1: Add tags from the Application menu entry<\/h3>\n<p>After selecting the services you want to update, choose <b>Application &gt; Tags &gt; Add<\/b> from the menu:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/alwaysup-add-tags.png\" class=\"zoomPopup\" title=\"Add tags to your AlwaysUp applications\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/alwaysup-add-tags.png\" title=\"Add tags to your AlwaysUp applications (click to enlarge)\" alt=\"Add tags to your AlwaysUp applications\" border=\"0\" width=\"520\" \/><\/a><\/div>\n<p>In the <b>Add Tags<\/b> window, type in the tags you want to add. For example, we&#8217;re adding the &#8220;v2&#8221; tag to our production instances here:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/alwaysup-add-tag-enter-names.png\" class=\"zoomPopup\" title=\"Enter the new tags\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/alwaysup-add-tag-enter-names.png\" title=\"Enter the new tags (click to enlarge)\" alt=\"Enter the new tags\" border=\"0\" \/><\/a><\/div>\n<p>You can add as many tags as you like there.<\/p>\n<p>Click <b>Next<\/b> and complete the process. Afterwards, the new tags will show up on your applications, as they did for us:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/alwaysup-new-tags-added.png\" class=\"zoomPopup\" title=\"New tags added\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/alwaysup-new-tags-added.png\" title=\"New tags added (click to enlarge)\" alt=\"New tags added\" border=\"0\" width=\"520\" \/><\/a><\/div>\n<p>That&#8217;s the best way to update multiple applications at once.<\/p>\n<h3>Method #2: Add tags by editing your application<\/h3>\n<p>If you prefer to update each application individually, you can do so by editing the application. You&#8217;ll find the <b>Tags<\/b> field at the bottom of the <b>General<\/b> tab, where you can add whatever tags you like:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/alwaysup-edit-tags-field.png\" class=\"zoomPopup\" title=\"Edit your application's tags in AlwaysUp\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/alwaysup-edit-tags-field.png\" title=\"Edit your application's tags in AlwaysUp (click to enlarge)\" alt=\"Edit your application's tags in AlwaysUp\" border=\"0\" \/><\/a><\/div>\n<p>You can edit the field to remove tags there as well.<\/p>\n<hr class=\"blog-section\">\n<h2 class=\"blog-caption\">Tags create groups in AlwaysUp Web Service and AlwaysUp CLT too<\/h2>\n<p>Indeed, tags and groups show up throughout the AlwaysUp family of products.<\/p>\n<p>For example, <a href=\"\/products\/AlwaysUp\/AlwaysUpWebService\/\">AlwaysUp Web Service<\/a> prominently displays the tags associated with your applications:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/alwaysup-web-service-tags.png\" class=\"zoomPopup\" title=\"AlwaysUp Web Service shows your tags\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/alwaysup-web-service-tags.png\" title=\"AlwaysUp Web Service shows your tags (click to enlarge)\" alt=\"AlwaysUp Web Service shows your tags\" border=\"0\" width=\"520\" \/><\/a><\/div>\n<p>(A future version will enable filtering by one or more values.)<\/p>\n<p>Furthermore, to manipulate groups of AlwaysUp applications from third-party applications, developers can employ the <a href=\"\/products\/AlwaysUp\/AlwaysUpWebService\/AlwaysUpWebServiceAPI.pdf\">AlwaysUp Web Service API<\/a>. Several of the API methods &mdash; including the popular &#8220;Get Application Status&#8221; function &mdash; accept one or more tags as input, as described in the documentation:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/alwaysup-web-service-api-accepts-tags.png\" class=\"zoomPopup\" title=\"The Get Application Status function accepts tags\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/alwaysup-web-service-api-accepts-tags.png\" title=\"The Get Application Status function accepts tags (click to enlarge)\" alt=\"The Get Application Status function accepts tags\" border=\"0\" width=\"520\" \/><\/a><\/div>\n<p>Since you&#8217;re working from the command line with <a href=\"\/products\/AlwaysUp\/AlwaysUpCLT\/\">AlwaysUp CLT<\/a>, you can add tags to your applications using the <b>-tg<\/b> parameter. That capability is described on page 9 of the <a href=\"\/products\/AlwaysUp\/AlwaysUpCLT\/AlwaysUpCLTManual.pdf\">user manual<\/a>.<\/p>\n<p>But if you prefer to work with XML, you can specify tags when installing your applications that way instead:<\/p>\n<div align=\"center\"><a href=\"\/blog\/images\/alwaysup-xml-tags-node.png\" class=\"zoomPopup\" title=\"AlwaysUp XML: The tags node\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"image-padding\" src=\"\/blog\/images\/alwaysup-xml-tags-node.png\" title=\"AlwaysUp XML: The tags node (click to enlarge)\" alt=\"AlwaysUp XML: The tags node\" border=\"1\" width=\"520\" \/><\/a><\/div>\n<p>Whatever works best for you!<\/p>\n<div style=\"margin-top:30px\" align=\"center\">\n<div class=\"cta-button-1\">\n<table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" align=\"left\">\n<tbody>\n<tr>\n<td align=\"center\"><a href=\"\/blog\/tag\/alwaysup-tag\/\" title=\"More articles about AlwaysUp\"><span><nobr>More articles about AlwaysUp&#8230;<\/nobr><\/span><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<!-- relpost-thumb-wrapper --><div class=\"relpost-thumb-wrapper\"><!-- filter-class --><div class=\"relpost-thumb-container\"><style>.relpost-block-single-image, .relpost-post-image { margin-bottom: 10px; }<\/style><h3>You may also like...<\/h3><div style=\"clear: both\"><\/div><div style=\"clear: both\"><\/div><!-- relpost-block-container --><div class=\"relpost-block-container relpost-block-column-layout\" style=\"--relposth-columns: 3;--relposth-columns_t: 2; --relposth-columns_m: 2\"><a href=\"https:\/\/www.coretechnologies.com\/blog\/windows-services\/why-stop-button-disabled\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><img decoding=\"async\" loading=\"lazy\" class=\"relpost-block-single-image\" alt=\"Q&amp;A: Why is the Stop Button Disabled for my Windows Service?\"  src=\"https:\/\/www.coretechnologies.com\/blog\/wp-content\/uploads\/stop-button-disabled-150x150-1.png\" style=\"aspect-ratio:1\/1\" style=\"aspect-ratio:1\/1\"><\/img><div class=\"relpost-block-single-text\"  style=\"height: 75px;font-family: Arial;  font-size: 12px;  color: #333333;\"><h2 class=\"relpost_card_title\">Q&amp;A: Why is the Stop Button Disabled for my Windows Service?<\/h2><\/div><\/div><\/a><a href=\"https:\/\/www.coretechnologies.com\/blog\/alwaysup\/top-5-reasons-to-run-your-application-as-a-windows-service\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><img decoding=\"async\" loading=\"lazy\" class=\"relpost-block-single-image\" alt=\"The Top 5 Reasons to Run Your Application as a Windows Service\"  src=\"https:\/\/www.coretechnologies.com\/blog\/wp-content\/uploads\/top-5-150x150.png\" style=\"aspect-ratio:1\/1\" style=\"aspect-ratio:1\/1\"><\/img><div class=\"relpost-block-single-text\"  style=\"height: 75px;font-family: Arial;  font-size: 12px;  color: #333333;\"><h2 class=\"relpost_card_title\">The Top 5 Reasons to Run Your Application as a Windows Service with AlwaysUp<\/h2><\/div><\/div><\/a><a href=\"https:\/\/www.coretechnologies.com\/blog\/alwaysup\/start-app-at-boot\/\"class=\"relpost-block-single\" ><div class=\"relpost-custom-block-single\"><img decoding=\"async\" loading=\"lazy\" class=\"relpost-block-single-image\" alt=\"Q &amp; A: What Setting will Help AlwaysUp Start my App at Boot?\"  src=\"https:\/\/www.coretechnologies.com\/blog\/wp-content\/uploads\/qa-150x150.png\" style=\"aspect-ratio:1\/1\" style=\"aspect-ratio:1\/1\"><\/img><div class=\"relpost-block-single-text\"  style=\"height: 75px;font-family: Arial;  font-size: 12px;  color: #333333;\"><h2 class=\"relpost_card_title\">Q &amp; A: What Setting will Help AlwaysUp Start my App at Boot?<\/h2><\/div><\/div><\/a><\/div><!-- close relpost-block-container --><div style=\"clear: both\"><\/div><\/div><!-- close filter class --><\/div><!-- close relpost-thumb-wrapper -->","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp;We are a licensed customer of AlwaysUp and its a great help to our services. However one of the things I want to be able to do is &#8220;group&#8221; services into a logical set. That way you can see which &hellip; <a href=\"https:\/\/www.coretechnologies.com\/blog\/alwaysup\/group-applications\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":12763,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[26,207,30,201,356,127],"class_list":["post-12761","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-alwaysup","tag-alwaysup-tag","tag-alwaysup-clt","tag-alwaysup-tags","tag-alwaysup-web-service","tag-alwaysup-web-service-api","tag-qa"],"_links":{"self":[{"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/12761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/comments?post=12761"}],"version-history":[{"count":15,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/12761\/revisions"}],"predecessor-version":[{"id":12914,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/posts\/12761\/revisions\/12914"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/media\/12763"}],"wp:attachment":[{"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/media?parent=12761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/categories?post=12761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.coretechnologies.com\/blog\/wp-json\/wp\/v2\/tags?post=12761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}