Fusion Middleware

Spring Cloud Services CF CLI Plugin

Pas Apicella - Tue, 2018-04-10 06:27
The Spring Cloud Services plugin for the Cloud Foundry Command Line Interface tool (cf CLI) adds commands for interacting with Spring Cloud Services service instances. It provides easy access to functionality relating to the Config Server and Service Registry; for example, it can be used to send values to a Config Server service instance for encryption or to list all applications registered with a Service Registry service instance.

Here is a simple example of how we can view various bound apps for a Service Registry

1. Install the CF CLI Plugin for Spring Cloud Services using the link below

$ cf add-plugin-repo CF-Community https://plugins.cloudfoundry.org

$ cf install-plugin -r CF-Community "Spring Cloud Services"

2. Now in Apps Manager UI we have a Service Registry instance with some bound micro services as shown below



3. Now we can use the SCS CF CLI Plugin to also get this information

pasapicella@pas-macbook:~$ cf service-registry-list eureka-service
Listing service registry eureka-service in org apples-pivotal-org / space scs-demo as papicella@pivotal.io...
OK

Service instance: eureka-service
Server URL: https://eureka-fcf42b1c-6b85-444c-9a43-fee82f2c68c3.cfapps.io/

eureka app name cf app name    cf instance index zone      status
EDGE-SERVICE    edge-service   0                 cfapps.io UP
COFFEE-SERVICE  coffee-service 0                 cfapps.io UP

The full list of plugin commands are as shown in the screen shot below. 

Note: Use "cf plugins" to get this list once installed


More Information

http://docs.pivotal.io/spring-cloud-services/1-5/common/cf-cli-plugin.html

Categories: Fusion Middleware

Collaborate Preview #1: How a Chatbot Army Could Help Your Business

No matter your profession, having an assistant to provide some help would be awesome. Someone to compile data, run reports, enter information into systems, look up key details, and even order your new business cards after your promotion. Unfortunately, most professionals don’t have an actual human assistant to perform tasks like these specifically for them. Most of these tasks we all do ourselves, and while they all may be important and necessary, they take time away from more value-add tasks and those parts of your job you really enjoy.

Sales professionals, for example, all have a multitude of tasks they need to perform that actually gets them to their desired result: making the sale. They need to update their customer relationship management (CRM) system daily with new or edited opportunities, new contacts, notes from customer calls, and what their activities or tasks will be for the day. Not only are these updates important for each and every sales representative, but they are also critical for sales managers who need to review pipeline and forecast information and share it with executive or leadership teams. And while performing these updates or accessing sales data may only take about 15 minutes, if they are performed every business day over 1 year, sales reps stand to lose about 2 selling days. Multiply that number by how many sales reps your company employs, and we’re talking 15, 20 or even 30 selling days lost in a year.

Another example is the questions employees have regarding company policies and procedures, as well as the small issues they might encounter every day. Even the best employee onboarding and training programs are not going to help all employees remember vacation policies, or how to change insurance beneficiaries, or what to do if they need to reset a password. When faced with these unknowns, most employees are going to call the company help desk. They will probably get the answers they need, but it will cost them their time, and it will perpetuate the high costs to staff and maintain the company help desk.

Fishbowl Atlast Intelligent Chatbot So, is it possible within an organization to have an assistant for every employee? With chatbots or virtual assistants, the answer is yes. Purpose-built chatbots can be created for human resources to answer employee FAQs (frequently asked questions), and in sales to help update CRM systems and get sales collateral and data quickly through a conversational user interface. Fishbowl Solutions is leveraging Oracle Mobile Cloud Service, Enterprise, and its intelligent chatbot feature, to create chatbots for these use cases and more. We will be discussing how these chatbots get created, and why chatbots need to be built to satisfy specific use cases at Collaborate 2018 during this session: Rise of the Bot Army with Oracle Mobile Cloud Enterprise, which takes place on Tuesday, April 24th from 1:15 to 2:15 PM. Come hear how chatbots can help sales, marketing, customer service, human resources, and other departments cut costs, automate routine or manual tasks, and provide 24 x 7 customer and/or employee engagement. And yes, if you get that promotion, a chatbot could help you get your new business cards: https://www.youtube.com/watch?v=rOkbMiV-j0s

You can also stop by Fishbowl’s booth #848 to see a demo of Fishbowl’s Atlas intelligent chatbot. For more information on Fishbowl’s activities at Collaborate 2018, please visit this page: https://www.fishbowlsolutions.com/about/news/collaborate/

The post Collaborate Preview #1: How a Chatbot Army Could Help Your Business appeared first on Fishbowl Solutions.

Categories: Fusion Middleware, Other

Deploying my first Pivotal Container Service (PKS) workload to my PKS cluster

Pas Apicella - Wed, 2018-04-04 01:15
If you followed along on the previous blogs you would of installed PKS 1.0 on GCP (Google Cloud Platform) and created your first PKS cluster and wired it into kubectl as well as provided an external load balancer as per the previous two posts.

Previous posts:

Install Pivotal Container Service (PKS) on GCP and getting started
http://theblasfrompas.blogspot.com.au/2018/04/install-pivotal-container-service-pks.html

Wiring kubectl / Setup external LB on GCP into Pivotal Container Service (PKS) clusters to get started
http://theblasfrompas.blogspot.com.au/2018/04/wiring-kubectl-setup-external-lb-on-gcp.html

So lets now create our first workload as shown below

1. Download YML demo from here

https://github.com/cloudfoundry-incubator/kubo-ci/blob/master/specs/nginx-lb.yml

2. Deploy as shown below

pasapicella@pas-macbook:~/pivotal/GCP/install/21/PKS/demo-workload$ kubectl create -f nginx-lb.yml
service "nginx" created
deployment "nginx" created

3. Check current status

pasapicella@pas-macbook:~/pivotal/GCP/install/21/PKS/demo-workload$ kubectl get pods
NAME                     READY     STATUS    RESTARTS   AGE
nginx-679dc9c764-8cwzq   1/1       Running   0          22s
nginx-679dc9c764-p8tf2   1/1       Running   0          22s
nginx-679dc9c764-s79mp   1/1       Running   0          22s

4. Wait for External IP address of the nginx service to be assigned

pasapicella@pas-macbook:~/pivotal/GCP/install/21/PKS/demo-workload$ kubectl get svc
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
kubernetes   ClusterIP      10.100.200.1               443/TCP        17h
nginx        LoadBalancer   10.100.200.143   35.189.23.119   80:30481/TCP   1m

5. In a browser access the K8's workload as follows, using the external IP

http://35.189.23.119



More Info

https://docs.pivotal.io/runtimes/pks/1-0/index.html
Categories: Fusion Middleware

Wiring kubectl / Setup external LB on GCP into Pivotal Container Service (PKS) clusters to get started

Pas Apicella - Tue, 2018-04-03 22:45
Now that I have PCF 2.1 running with PKS 1.0 installed and a cluster up and running how would I get started accessing that cluster? Here are the steps for GCP (Google Cloud Platform) install of PCF 2.1 with PKS 1.0. It goes through the requirements around an External LB for the cluster as well as wiring kubectl into the cluster to get started creating deployments.

Previous blog as follows:

http://theblasfrompas.blogspot.com.au/2018/04/install-pivotal-container-service-pks.html

1. First we will want an external Load Balancer for our K8's clusters which will need to exist and it would be a TCP Load balancer using Port 8443 which is the port the master node would run on. The external IP address is what you will need to use in the next step



2. Create a Firewall Rule for the LB with details as follows.

Note: the LB name is "pks-cluster-api-1". Make sure to include the network tag and select the network you installed PKS on.

  • Network: Make sure to select the right network. Choose the value that matches with the VPC Network name you installed PKS on
  • Ingress - Allow
  • Target: pks-cluster-api-1
  • Source: 0.0.0.0/0
  • Ports: tcp:8443





3. Now you could easily just create a cluster using the external IP address from above or use a DNS entry which is mapped to the external IP address which is what I have done so I have use a FQDN instead

pasapicella@pas-macbook:~$ pks create-cluster my-cluster --external-hostname cluster1.pks.pas-apples.online --plan small

Name:                     my-cluster
Plan Name:                small
UUID:                     64a086ce-c94f-4c51-95f8-5a5edb3d1476
Last Action:              CREATE
Last Action State:        in progress
Last Action Description:  Creating cluster
Kubernetes Master Host:   cluster1.pks.pas-apples.online
Kubernetes Master Port:   8443
Worker Instances:         3
Kubernetes Master IP(s):  In Progress


4. Now just wait a while while it creates a VM's and runs some tests , it's roughly around 10 minutes. Once done you will see the cluster as created as follows

pasapicella@pas-macbook:~/pivotal/GCP/install/21/PKS$ pks list-clusters

Name        Plan Name  UUID                                  Status     Action
my-cluster  small      64a086ce-c94f-4c51-95f8-5a5edb3d1476  succeeded  CREATE

5. Now one of the VM's created would be the master Vm for the cluster , their a few ways to determine the master VM as shown below.

5.1. Use GCP Console VM instances page and filter by "master"



5.2. Run a bosh command to view the VM's of your deployments. We are interested in the VM's for our cluster service. The master instance is named as "master/ID" as shown below.

$ bosh -e gcp vms --column=Instance --column "Process State" --column "VM CID"

Task 187. Done

Deployment 'service-instance_64a086ce-c94f-4c51-95f8-5a5edb3d1476'

Instance                                     Process State  VM CID
master/13b42afb-bd7c-4141-95e4-68e8579b015e  running        vm-4cfe9d2e-b26c-495c-4a62-77753ce792ca
worker/490a184e-575b-43ab-b8d0-169de6d708ad  running        vm-70cd3928-317c-400f-45ab-caf6fa8bd3a4
worker/79a51a29-2cef-47f1-a6e1-25580fcc58e5  running        vm-e3aa47d8-bb64-4feb-4823-067d7a4d4f2c
worker/f1f093e2-88bd-48ae-8ffe-b06944ea0a9b  running        vm-e14dde3f-b6fa-4dca-7f82-561da9c03d33

4 vms

6. Attach the VM to the load balancer backend configuration as shown below.



7. Now we can get the credentials from PKS CLI and pass them to kubectl as shown below

pasapicella@pas-macbook:~/pivotal/GCP/install/21/PKS$ pks get-credentials my-cluster

Fetching credentials for cluster my-cluster.
Context set for cluster my-cluster.

You can now switch between clusters by using:
$kubectl config use-context

pasapicella@pas-macbook:~/pivotal/GCP/install/21/PKS$ kubectl cluster-info
Kubernetes master is running at https://cluster1.pks.domain-name:8443
Heapster is running at https://cluster1.pks.domain-name:8443/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at https://cluster1.pks.domain-name:8443/api/v1/namespaces/kube-system/services/kube-dns/proxy
monitoring-influxdb is running at https://cluster1.pks.domain-name:8443/api/v1/namespaces/kube-system/services/monitoring-influxdb/proxy

8. To verify it worked for you here are some commands you would run. The "kubectl cluster-info" is one of those.

pasapicella@pas-macbook:~/pivotal/GCP/install/21/PKS$ kubectl get componentstatus
NAME                 STATUS    MESSAGE              ERROR
controller-manager   Healthy   ok
scheduler            Healthy   ok
etcd-0               Healthy   {"health": "true"}

pasapicella@pas-macbook:~/pivotal/GCP/install/21/PKS$ kubectl get pods
No resources found.

pasapicella@pas-macbook:~/pivotal/GCP/install/21/PKS$ kubectl get deployments
No resources found.

9. Finally lets start the Kubernetes UI to monitor this cluster. We do that as easily as this.

pasapicella@pas-macbook:~/pivotal/GCP/install/21/PKS$ kubectl proxy
Starting to serve on 127.0.0.1:8001  

The UI URL requires you to append /ui to the url above

Eg: http://127.0.0.1:8001/ui

Note: It will prompt you for the kubectl config file which would be in the $HOME/.kube/config file. Failure to present this means the UI won't show you much and give lost of warnings




More Info

https://docs.pivotal.io/runtimes/pks/1-0/index.html
Categories: Fusion Middleware

Install Pivotal Container Service (PKS) on GCP and getting started

Pas Apicella - Tue, 2018-04-03 20:15
With the release of Pivotal Cloud Foundry 2.1 (PCF) I decided this time to install Pivotal Application Service (PAS) as well as Pivotal Container Service (PKS) using the one Bosh Director which isn't recommended for production installs BUT ok for dev installs. Once installed you will have both the PAS tile and PKS tile as shown below.

https://content.pivotal.io/blog/pivotal-cloud-foundry-2-1-adds-cloud-native-net-envoy-native-service-discovery-to-boost-your-transformation


So here is how to get started with PKS once it's installed

1. Create a user for the PKS client to login with.

1.1. ssh into the ops manager VM

1.2. Target the UAA endpoint for PKS this was setup in the PKS tile

ubuntu@opsman-pcf:~$ uaac target https://PKS-ENDPOINT:8443 --skip-ssl-validation
Unknown key: Max-Age = 86400

Target: https://PKS-ENDPOINT:8443

1.3. Authenticate with UAA using the secret you retrieve from the PKS tile / Credentials tab as shown in the image below. Run the following command, replacing UAA-ADMIN-SECRET with your UAA admin secret

ubuntu@opsman-pcf:~$ uaac token client get admin -s UAA-ADMIN-SECRET
Unknown key: Max-Age = 86400

Successfully fetched token via client credentials grant.
Target: https://PKS-ENDPIONT:8443
Context: admin, from client admin



1.4. Create an ADMIN user as shown below using the UAA-ADMIN-SECRET password obtained form ops manager UI as shown above

ubuntu@opsman-pcf:~$ uaac user add pas --emails papicella@pivotal.io -p PASSWD
user account successfully added

ubuntu@opsman-pcf:~$ uaac member add pks.clusters.admin pas
success

2. Now lets login using the PKS CLI with a new admin user we created

pasapicella@pas-macbook:~$ pks login -a PKS-ENDPOINT -u pas -p PASSWD -k

API Endpoint: pks-api.pks.pas-apples.online
User: pas

3. You can test whether you have a DNS issue with a command as follows. 

Note: A test as follows determines any DNS issues you may have

pasapicella@pas-macbook:~$ nc -vz PKS-ENDPOINT 8443
found 0 associations
found 1 connections:
     1: flags=82
outif en0
src 192.168.1.111 port 62124
dst 35.189.1.209 port 8443
rank info not available
TCP aux info available

Connection to PKS-ENDPOINT port 8443 [tcp/pcsync-https] succeeded!

4. You can run a simple command to verify your connected as follows, below shows no K8's clusters exist at this stage

pasapicella@pas-macbook:~$ pks list-clusters

Name  Plan Name  UUID  Status  Action

You can use PKS CLI to create a new cluster, view clusters, resize clusters etc

pasapicella@pas-macbook:~$ pks

The Pivotal Container Service (PKS) CLI is used to create, manage, and delete Kubernetes clusters. To deploy workloads to a Kubernetes cluster created using the PKS CLI, use the Kubernetes CLI, kubectl.

Version: 1.0.0-build.3

Note: The PKS CLI is under development, and is subject to change at any time.

Usage:
  pks [command]

Available Commands:
  cluster         View the details of the cluster
  clusters        Show all clusters created with PKS
  create-cluster  Creates a kubernetes cluster, requires cluster name and an external host name
  delete-cluster  Deletes a kubernetes cluster, requires cluster name
  get-credentials Allows you to connect to a cluster and use kubectl
  help            Help about any command
  login           Login to PKS
  logout          Logs user out of the PKS API
  plans           View the preconfigured plans available
  resize          Increases the number of worker nodes for a cluster

Flags:
  -h, --help      help for pks
      --version   version for pks

Use "pks [command] --help" for more information about a command.

5. You would create a cluster as follows now you have logged in and yu will get aK8's cluster to begin working with

pasapicella@pas-macbook:~$ pks create-cluster my-cluster --external-hostname EXT-LB-HOST --plan small

Name:                     my-cluster
Plan Name:                small
UUID:                     64a086ce-c94f-4c51-95f8-5a5edb3d1476
Last Action:              CREATE
Last Action State:        in progress
Last Action Description:  Creating cluster
Kubernetes Master Host:   cluster1.FQDN
Kubernetes Master Port:   8443
Worker Instances:         3
Kubernetes Master IP(s):  In Progress

Finally when done you will see "Last Action:" as "succeeded" as shown below

pasapicella@pas-macbook:~$ pks cluster my-cluster

Name:                     my-cluster
Plan Name:                small
UUID:                     64a086ce-c94f-4c51-95f8-5a5edb3d1476
Last Action:              CREATE
Last Action State:        succeeded
Last Action Description:  Instance provisioning completed
Kubernetes Master Host:   cluster1.FQDN
Kubernetes Master Port:   8443
Worker Instances:         3
Kubernetes Master IP(s):  MASTER-IP-ADDRESS

More Info

https://docs.pivotal.io/runtimes/pks/1-0/index.html


Categories: Fusion Middleware

GSA Migration is Easier than Ever with the Mindbreeze Winter 2018 Release

Mindbreeze recently announced the Winter 2018 release of Mindbreeze InSpire which brings a number of new features and enhancements to Mindbreeze customers. One notable addition is the GSA Transformer Service which enables Mindbreeze to receive Google Search Appliance (GSA) queries and provide a GSA-formatted XML response. Add this to the list of GSA-friendly features already in place, and Mindbreeze continues to lead the way as an easy-to-implement GSA replacement. Read on to discover the top six ways Mindbreeze simplifies your GSA migration.

GSA Transformer Service

The newly released GSA Transformer Service enables a Mindbreeze client service (roughly comparable to a GSA front end) to accept GSA-formatted search requests. The GSA transformer service supports the following GSA search parameters:

  • start
  • num
  • getfields
  • requiredfields
  • query operators
  • filter
  • paging

When calling the GSA Transfomer Service, Mindbreeze provides an XML response that is compatible with Google Search Appliance implementations. The Mindbreeze XML conforms to the GSA DTD and includes configured metadata, snippets, Dynamic Navigation (configured as Filters in Mindbreeze), and Spelling Suggestions (e.g. “Did you mean”). This new option means that GSA customers can migrate to Mindbreeze without having to re-implement their custom search pages, which reduces the implementation effort.

GSA Feed Adapter Service

The Mindbreeze GSA Feed Adapter service allows Mindbreeze to accept GSA-formatted XML feeds as a means of indexing content. Feeds can be sent in both metadata-and-URL and content feed formats. Feeds are submitted to the Mindbreeze appliance as a POST request to a specific port in much the same way as they were within the GSA. Feed content can also be mapped into collections as part of the GSA Feed Adapter configuration. Collections in Mindbreeze are simply additional metadata which can be added to content for the purposes of filtering or segmentation. The GSA Feed Adapter contains a built-in configuration option for copying collection definitions from the GSA and assigning fed content to these collections. The Mindbreeze GSA Feed Adapter service means that customers with feed-based GSA indexing customizations can keep using their existing integrations.

GSA Vocabulary Mode for Synonyms

Mindbreeze includes a number of query expansion features to support synonyms, replacements, and custom dictionaries. For customers already using GSA synonym files, Mindbreeze provides the option to use a GSA-formatted vocabulary definition. If you have a large number of such files, an entire directory can be configured with all the query expansion files downloaded from your GSA. Like the GSA, query expansion can be configured globally for the entire search appliance. This is the simplest option and a good choice if your query expansion rules are fairly universal. Mindbreeze customers also have the option to configure query expansion (e.g. synonyms) for specific data sources thereby opening the door to support more granular and use-case specific sets of terms.

Support for googleon/googleoff Tags

For many customers, there may be portions of web page content that you want to exclude from indexing. To address this, Google suggested the use of googleon/googleoff tags. By embedding googleon/googleoff tags in HTML documents, you can disable the indexing of a portion of a web page. As part of the Mindbreeze web crawler configuration, customers may opt to enforce the use of googleon/googleoff tags. This reduces rework necessary to restrict the scope of indexed web content during a GSA-to-Mindbreeze migration. Fishbowl leveraged this option when integrating this website with Mindbreeze.

GSA Configuration Migration

Customers can expedite their implementation with the help of automated configuration mapping available from Mindbreeze. Their free service creates a Mindbreeze configuration file based on your existing GSA configuration. Typically between 60% and 80% of GSA settings can be migrated programmatically between the two search appliances and the rest can be addressed during implementation.

GSA-to-Mindbreeze Jumpstart for Websites

Fishbowl Solutions has been working with the Google Search Appliance since 2010 and has deep technical expertise around both the GSA and Mindbreeze. In order to simplify the transition, we’ve created the GSA-to-Mindbreeze Jumpstart for Websites. This three-day program is intended for customers migrating to Mindbreeze from the Google Search Appliance in order to provide website search capabilities. The Jumpstart is facilitated by one of Fishbowl’s Certified Implementation Experts and takes a collaborative approach to installing and configuring your appliance while training your team to manage it going forward. A training and scoping workbook is provided, and additional workshop days can be added to accommodate more complex implementations.

To learn more about how GSA features carry over to Mindbreeze, check out our previous post, How to Configure the Top 4 GSA Features in Mindbreeze – Plus 6 New Favorites. In the past eight years, we’ve helped numerous customers implement and maintain their GSAs. Despite the disruption caused by the GSA’s end of life, we’re excited about the many possibilities Mindbreeze has to offer. As a Mindbreeze partner, we provide resale, support, and implementation services. If you have questions or would like to know more, please contact us.

Time running out on your GSA?

Our expert team knows both GSA and Mindbreeze. We’ll help you understand your options and design a migration plan to fit your needs.

The post GSA Migration is Easier than Ever with the Mindbreeze Winter 2018 Release appeared first on Fishbowl Solutions.

Categories: Fusion Middleware, Other

Fishbowl Solutions to Defend Trophy at Oracle Modern CX Hackathon: Hack a Smarter Customer Experience Event

Fishbowl Solutions’ Oracle Mobile and Intelligent Chatbots team will once again be participating in the Oracle Modern CX Hackathon: Hack a Smarter Customer Experience event, which takes place on Wednesday, March 28th and 29th. This is Oracle’s second biannual two-day “Hack a Smarter Customer Experience” event, and this year it takes place at the Oracle headquarters in Redwood Shores, California.

This event brings together Oracle partners from around the world to work on a technical challenge that showcases a unique business case utilizing an Oracle Customer Experience SaaS (Software as a Service) and Oracle PaaS (Platform as a Service) technology, or ISV (Independent Software Vendor) solutions. During the two day event, participants and teams have access to Oracle product management A-Team experts who can offer suggestions, provide access to necessary systems, and review code.

Fishbowl Solutions’ Oracle Mobile and Intelligent Chatbots team will once again be participating in the Oracle Modern CX Hackathon: Hack a Smarter Customer Experience event, which takes place on Wednesday, March 28th and 29th. This is Oracle’ second biannual two-day “Hack a Smarter Customer Experience” event, and this year it takes place at the Oracle headquarters in Redwood Shores, California.

This event brings together Oracle partners from around the world to work on a technical challenge that showcases a unique business case utilizing an Oracle Customer Experience SaaS (Software as a Service) and Oracle PaaS (Platform as a Service) technology, or ISV (Independent Software Vendor) solutions. During the two day event, participants and teams have access to Oracle product management A-Team experts who can offer suggestions, provide access to necessary systems, and review code.

Fishbowl won the inaugural Oracle hackathon event last year right before Oracle OpenWorld 2017. Last year’s team built SalesBot, which leverages the Oracle Intelligent Bot Cloud Service integrated with Oracle Engagement Cloud, Big Data Cloud Service, and Content and Experience Cloud. SalesBot is able to bring together customer data from multiple systems within a conversational user interface, including key contact details, opportunities, purchases, and forecast details. Using SalesBot saves valuable time as reps and managers don’t have to be at their computers and logged in to their CRM system, such as Salesforce, to manually enter, search, and retrieve customer data. More information on SalesBot can be found here. 

Hackathon participants/teams are judged on the following criteria: Business Use Case – 40%; UX Factor – 40%, and Technology Implementation – 20%. This year’s winners will be announced in a LIVE Judging Session at Oracle Modern Customer Experience, which takes place from April 10 – 12 in Chicago.

Tim Gruidl, Fishbowl’s President and CEO, will be speaking at two sessions at Oracle Modern Customer Experience on Wednesday, April 11th and Thursday, April 12th. Both of his topics will be about how chatbots are streamlining business processes in the enterprises. For a preview of his sessions, please visit our Oracle Modern Customer Experience page.

The post Fishbowl Solutions to Defend Trophy at Oracle Modern CX Hackathon: Hack a Smarter Customer Experience Event appeared first on Fishbowl Solutions.

Categories: Fusion Middleware, Other

How We Integrated this Website with the Mindbreeze InSpire Enterprise Search Appliance

As many of you know Fishbowl is a Mindbreeze Certified Partner and search appliance reseller. A core component of our company culture is using the same tools and technologies we implement for our customers. For that reason, and to give readers like you a chance to try out Mindbreeze in action, we have implemented Mindbreeze search here on fishbowlsolutions.com. Read on to learn more about the benefits and details of this integration.

Indexing Our Site

The first step in our Mindbreeze integration project was to configure Mindbreeze to crawl our website using the out of the box web crawler. We decided to split the content into two groups, blog posts and everything else, in order to distinctly configure how blog post content would be indexed. Mindbreeze allows the configuration of one or more crawler instances, so we created two crawlers with separate follow and do-not-follow patterns to index each content group.

Next we configured the extraction of content from the site. By default the crawler will crawl the entire contents of a page, but Mindbreeze can optionally restrict content indexing to a specific DIV or section. That way, words contained in your navigation or footer won’t be indexed for every page. For example, Fishbowl’s footer currently includes the word “Mindbreeze”, but when site users search for “Mindbreeze” we don’t want to return every page on the site—only those actually related to Mindbreeze. For customers already leveraging google-on google-off tags for this purpose (a feature from the Google Search Appliance), Mindbreeze can interpret those tags. We have a few spots on our blog where this was used to restrict the indexing of blog sidebars and other non-content elements within a page template.

We also configured metadata extraction from within the blog posts themselves. This was done by telling Mindbreeze (via XPATH selectors) where in the DOM the blog post author, category, and feature image data could be located. Again, this was all accomplished without altering the structure of the site itself or requiring additional work on the part of our site’s contributors. If you have standard htmltags within your pages, Mindbreeze will index these automatically.

Entity Recognition

As part of the index setup, we configured entity recognition to parse our pages (both blog and non-blog) for the names of the five key technologies Fishbowl works with. This was done using the Mindbreeze entity extraction feature. Each of the five possible values were mapped to a metadata field called Technology. Like the metadata extraction, the entities were extracted without having to change anything about the structure of our site or templates.

Query Expansion

Between the time when a user enters their query and the time the search engine computes relevant results, there is a critical piece in the search process often referred to as query expansion. Query expansion describes various ways in which the words the user types can be expanded upon or “understood” by the search engine in order to more accurately represent the original intent and locate the right content. One way queries can be expanded for better search is through the use of synonyms. Synonyms can be used to set related terms equal to one-another, make abbreviations equal to their full meanings, or set legacy terminology as synonymous with current nomenclature. Mindbreeze query expansion is used on this site to expand queries such as “Jobs” to include “Careers” and the legacy product name “UCM” to search for the new name, “WebCenter Content”. Mindbreeze also includes default stemming and spelling expansions to allow users to find content even if their query doesn’t exactly match our site’s data. For example, stemming allows users to search for “orders” and get results containing “order” “ordered” and “ordering.” It means users don’t have to know whether a word was in past tense, plural, or singular, in order to find what they need.

Relevancy and Result Boosting

Relevancy boosting allows administrators to further tune result ranking (also called biasing) based on factors such as metadata values, URL patterns, or date. These relevancy adjustments can be applied to specific sites, so that each audience sees what is most relevant to them. Relevancy is configured through the Mindbreeze Management Center without requiring custom development. On our site, the number of blog posts far outweigh the number of product pages; when someone searches for a product (such as Mindbreeze) we want the first result to be the main Mindbreeze product page. To ensure the main product pages (which may be older and contain fewer words than our latest blog posts) remain on the top, we can use Mindbreeze boosting to either increase the relevancy of product pages or decrease the relevancy of blog posts. All things being equal, it is better to down-boost less relevant content than to up-boost relevant content. We added a rule to reduce the relevancy of all blog post content by a factor of 0.75. We also boost our featured results by a factor of 10 to ensure they appear on top when relevant. In addition to manual tuning, Mindbreeze automatically monitors and analyzes click patterns to learn from user behavior and improve relevancy automatically over time.

Creating the Search Results Page

The search results page used on this site was created using the Mindbreeze Search App Designer. This builder provides a drag-and-drop interface for creating modular, mobile-friendly, search applications. Mindbreeze also provides a JSON API for fully custom search page development.

Our search app combines a list-style results widget and three filter widgets to limit the results based on Technology, Blog Post Category, and Blog Post Author. The filter widgets available within the builder are determined by the metadata available via the indexing configuration described earlier.

To personalize our search app, we made several modifications to the mustache templates which control the rendering of the various widgets. For example, we only show dates on blog posts and include the “blog post” callouts next to blog post titles.

Once the structure of the search app was complete, we were able use the export snippet functionality to copy the search app code from the Mindbreeze Management Center and embed that into a div within our site. In order to make the Mindbreeze search app match the look and feel of the rest of the website, we added a custom CSS file which overrides some of the standard Mindbreeze CSS within the search app.

Search Box Integration & Suggestions

To integrate Mindbreeze with our existing website’s search box, we modified the search input in the site header to direct search form submissions to the new Mindbreeze search results page. Since we are using WordPress, this involved modifying the header.php file within our site’s child theme. We also added a call to the Mindbreeze Suggest API, displayed using jQuery autocomplete, in order to provide search suggestions as you type. Most WCM systems have template files which can be modified to integrate Mindbreeze search into existing site headers. Our customers have similar integrations within Adobe Experience Manger and Oracle WebCenter Portal to name a few.

As a note for those familiar with WordPress, we could have customized the search.php template to include the Mindbreeze Export Snippet instead of creating a new search results page. We wanted to let our contributors edit the heading and call-to-action sections of our search results page without coding, so we built the search results into a standard WordPress page. This also allowed us to keep the core WordPress search page intact for comparison purposes (we are in the search business after all). From a technical perspective, either approach would have worked.

Closing Comments

We wanted to share the details about our integration to give anyone using or considering Mindbreeze an in-depth look at a real working search integration. The architecture and approach we took here can be applied to other platforms both internal and externally facing including SharePoint, Oracle WebCenter, or Liferay. Use the search box at the top of the page to try it for yourself. If you have any questions about Mindbreeze search integration options, please contact us.

Time running out on your GSA?

Our expert team knows both GSA and Mindbreeze. We’ll help you understand your options and design a migration plan to fit your needs.

The post How We Integrated this Website with the Mindbreeze InSpire Enterprise Search Appliance appeared first on Fishbowl Solutions.

Categories: Fusion Middleware, Other

Pivotal Cloud Foundry Healthwatch for Pivotal Cloud Foundry 2.0 on GCP

Pas Apicella - Thu, 2018-03-15 01:29
I decided to eventually install PCF Healthwatch on my Google Cloud Platform PCF 2.0 instance. Installing it is straight forward using Ops Manager UI and once installed it will look like this.

Note: This is PCF 2.0 on GCP


Once installed the application for the Web UI end point would be as follows. The login username and password is the UAA admin user . By default the property "healthwatch.read" credential is given to this user only. You can always create a new user that has this credential role if you like.

https://healthwatch.SYSTEM-DOMAIN

The main page has various useful information and more then enough to show you what's happening in your PCF instance as shown below.



Clicking on any of the headings for each tile you can get more detailed information. The two screen shots below show some CF CLI command history tests like a "cf push" , "cf logs" and also what is happening within the Diego cells in terms of "Memory, Disk and the Containers" themselves.




More Information

https://docs.pivotal.io/pcf-healthwatch/1-1/index.html
Categories: Fusion Middleware

Just gave CFDEV a quick test and it's easy and includes BOSH!!!!

Pas Apicella - Sun, 2018-03-11 01:57
CF Dev is a new distribution of Cloud Foundry designed to run on a developer’s laptop or workstation using native hypervisors and a fully functional BOSH Director.

I decided to give it a test run today and it's fast and easy full CF experience deployed through the CF CLI plugin as described in the GitHub project

  https://github.com/pivotal-cf/cfdev

Here we run some bosh commands once it's up and running. You can't run BOSH commands without first setting your ENV to use the correct bosh director which you do as follows

  $ eval "$(cf dev bosh env)"

pasapicella@pas-macbook:~/apps/ENV/cfdev$ bosh deployments
Using environment '10.245.0.2' as client 'admin'

Name  Release(s)                    Stemcell(s)                                          Team(s)  Cloud Config
cf    binary-buildpack/1.0.15       bosh-warden-boshlite-ubuntu-trusty-go_agent/3468.17  -        latest
      bosh-dns/0.2.0
      capi/1.46.0
      cf-mysql/36.10.0
      cf-networking/1.9.0
      cf-smoke-tests/40
      cf-syslog-drain/5
      cflinuxfs2/1.179.0
      consul/191
      diego/1.32.1
      dotnet-core-buildpack/1.0.32
      garden-runc/1.10.0
      go-buildpack/1.8.15
      grootfs/0.30.0
      java-buildpack/4.7.1
      loggregator/99
      nats/22
      nodejs-buildpack/1.6.13
      php-buildpack/4.3.46
      python-buildpack/1.6.4
      routing/0.169.0
      ruby-buildpack/1.7.8
      staticfile-buildpack/1.4.20
      statsd-injector/1.0.30
      uaa/53.3

1 deployments

Succeeded

pasapicella@pas-macbook:~/apps/ENV/cfdev$ bosh stemcells
Using environment '10.245.0.2' as client 'admin'

Name                                         Version   OS             CPI  CID
bosh-warden-boshlite-ubuntu-trusty-go_agent  3468.17*  ubuntu-trusty  -    54a8d4c1-5a02-4d89-5648-1132914a0cb8

(*) Currently deployed

1 stemcells

Succeeded

You can simply use the CF CLI as follows once you target the correct API endpoint and login as follows

pasapicella@pas-macbook:~/apps/ENV/cfdev$ cf api https://api.v3.pcfdev.io --skip-ssl-validation
Setting api endpoint to https://api.v3.pcfdev.io...
OK

api endpoint:   https://api.v3.pcfdev.io
api version:    2.100.0
Not logged in. Use 'cf login' to log in.

and to log in ...

pasapicella@pas-macbook:~/apps/ENV/cfdev$ cf login -o cfdev-org -u admin -p admin
API endpoint: https://api.v3.pcfdev.io
Authenticating...
OK

Targeted org cfdev-org

Targeted space cfdev-space

API endpoint:   https://api.v3.pcfdev.io (API version: 2.100.0)
User:           admin
Org:            cfdev-org
Space:          cfdev-space
Categories: Fusion Middleware

Spring boot 2 Actuator Support and Pivotal Cloud Foundry 2.0

Pas Apicella - Sun, 2018-03-04 04:29
With Spring Boot Actuator you get production-ready features to your application. The main benefit of this library is that we can get production grade tools without having to actually implement these features ourselves.

Actuator is mainly used to expose operational information about the running application – health, metrics, info, dump, env, etc. It uses HTTP endpoints or JMX beans to enable us to interact with it.

In this post we will show how Spring Boot 2.0 Actuator endpoints are automatically integrated into Pivotal Cloud Foundry Apps Manager.

1. Clone the following project as shown below

pasapicella@pas-macbook:~/temp$ git clone https://github.com/papicella/springboot-actuator-2-demo.git
Cloning into 'springboot-actuator-2-demo'...
remote: Counting objects: 57, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 57 (delta 0), reused 6 (delta 0), pack-reused 48
Unpacking objects: 100% (57/57), done.

2. Package as follows

pasapicella@pas-macbook:~/temp/springboot-actuator-2-demo$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building springboot-autuator-2-demo 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.0.1:resources (default-resources) @ springboot-autuator-2-demo ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 1 resource

...

[INFO]
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ springboot-autuator-2-demo ---
[INFO] Building jar: /Users/pasapicella/temp/springboot-actuator-2-demo/target/springboot-autuator-2-demo-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.0.0.M7:repackage (default) @ springboot-autuator-2-demo ---
[INFO]
[INFO] --- maven-dependency-plugin:3.0.1:unpack (unpack) @ springboot-autuator-2-demo ---
[INFO] Configured Artifact: com.example:springboot-autuator-2-demo:0.0.1-SNAPSHOT:jar
[INFO] Unpacking /Users/pasapicella/temp/springboot-actuator-2-demo/target/springboot-autuator-2-demo-0.0.1-SNAPSHOT.jar to /Users/pasapicella/temp/springboot-actuator-2-demo/target/dependency with includes "" and excludes ""
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.650 s
[INFO] Finished at: 2018-03-04T21:04:08+11:00
[INFO] Final Memory: 46M/594M
[INFO] ------------------------------------------------------------------------

3. Deploy as follows

pasapicella@pas-macbook:~/temp/springboot-actuator-2-demo$ cf push
Pushing from manifest to org apples-pivotal-org / space development as papicella@pivotal.io...
Using manifest file /Users/pasapicella/temp/springboot-actuator-2-demo/manifest.yml
Getting app info...
Updating app with these attributes...
  name:                springboot-actuator-appsmanager
  path:                /Users/pasapicella/temp/springboot-actuator-2-demo/target/springboot-autuator-2-demo-0.0.1-SNAPSHOT.jar
  buildpack:           client-certificate-mapper=1.5.0_RELEASE container-security-provider=1.13.0_RELEASE java-buildpack=v4.9-offline-https://github.com/cloudfoundry/java-buildpack.git#830f4c3 java-main java-opts java-security jvmkill-agent=1.12.0_RELEASE open-jdk-l...
  command:             JAVA_OPTS="-agentpath:$PWD/.java-buildpack/open_jdk_jre/bin/jvmkill-1.12.0_RELEASE=printHeapHistogram=1 -Djava.io.tmpdir=$TMPDIR -Djava.ext.dirs=$PWD/.java-buildpack/container_security_provider:$PWD/.java-buildpack/open_jdk_jre/lib/ext -Djava.security.properties=$PWD/.java-buildpack/java_security/java.security $JAVA_OPTS" && CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-3.10.0_RELEASE -totMemory=$MEMORY_LIMIT -stackThreads=250 -loadedClasses=17785 -poolType=metaspace -vmOptions="$JAVA_OPTS") && echo JVM Memory Configuration: $CALCULATED_MEMORY && JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY" && MALLOC_ARENA_MAX=2 SERVER_PORT=$PORT eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher
  disk quota:          1G
  health check type:   port
  instances:           1
  memory:              1G
  stack:               cflinuxfs2
  routes:
    springboot-actuator-appsmanager-forgiving-camel.cfapps.io

Updating app springboot-actuator-appsmanager...
Mapping routes...
Comparing local files to remote cache...
Packaging files to upload...
Uploading files...

...

Waiting for app to start...

name:              springboot-actuator-appsmanager
requested state:   started
instances:         1/1
usage:             1G x 1 instances
routes:            springboot-actuator-appsmanager-forgiving-camel.cfapps.io
last uploaded:     Sun 04 Mar 21:07:03 AEDT 2018
stack:             cflinuxfs2
buildpack:         client-certificate-mapper=1.5.0_RELEASE container-security-provider=1.13.0_RELEASE java-buildpack=v4.9-offline-https://github.com/cloudfoundry/java-buildpack.git#830f4c3
                   java-main java-opts java-security jvmkill-agent=1.12.0_RELEASE open-jdk-l...
start command:     JAVA_OPTS="-agentpath:$PWD/.java-buildpack/open_jdk_jre/bin/jvmkill-1.12.0_RELEASE=printHeapHistogram=1 -Djava.io.tmpdir=$TMPDIR
                   -Djava.ext.dirs=$PWD/.java-buildpack/container_security_provider:$PWD/.java-buildpack/open_jdk_jre/lib/ext -Djava.security.properties=$PWD/.java-buildpack/java_security/java.security
                   $JAVA_OPTS" && CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-3.10.0_RELEASE -totMemory=$MEMORY_LIMIT -stackThreads=250 -loadedClasses=17785
                   -poolType=metaspace -vmOptions="$JAVA_OPTS") && echo JVM Memory Configuration: $CALCULATED_MEMORY && JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY" && MALLOC_ARENA_MAX=2 SERVER_PORT=$PORT
                   eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher

     state     since                  cpu      memory         disk           details
#0   running   2018-03-04T10:08:16Z   196.2%   385.7M of 1G   157.4M of 1G

4. The application.yml exposes all methods and is totally unsecure so you would not want to do this in a production application. The application is deployed using an application.yml as follows.

spring:
  application:
    name: PCFSpringBootActuatorDemo
  jpa:
    hibernate:
      ddl-auto: update
management:
  endpoint:
    health:
      show-details: true
  endpoints:
    web:
      expose: '*'
      enabled: true
    jmx:
      expose: '*'
      enabled: true

Once deployed Pivotal Cloud Foundry Apps Manager will show the Spring Icon and use the Actuator endpoints.





Lets invoke some of the Actuator endpoints using HTTPIE or CURL if you like. Remember we have exposed all web endpoints allowing us to do this. One thing that has changed form Actuator 1.x to 2.0 is the endpoints are now mapped to /actuator out of the box. You can get all that are available endpoints just by invoking /actuator as shown below using a GET RESTful call.

pasapicella@pas-macbook:~/temp/springboot-actuator-2-demo$ http http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/vnd.spring-boot.actuator.v2+json;charset=UTF-8
Date: Sun, 04 Mar 2018 10:13:38 GMT
X-Vcap-Request-Id: 22116a58-f689-4bd9-448c-023bae2ed5ec
transfer-encoding: chunked

{
    "_links": {
        "auditevents": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/auditevents",
            "templated": false
        },
        "beans": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/beans",
            "templated": false
        },
        "conditions": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/conditions",
            "templated": false
        },
        "configprops": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/configprops",
            "templated": false
        },
        "env": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/env",
            "templated": false
        },
        "env-toMatch": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/env/{toMatch}",
            "templated": true
        },
        "health": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/health",
            "templated": false
        },
        "heapdump": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/heapdump",
            "templated": false
        },
        "info": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/info",
            "templated": false
        },
        "loggers": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/loggers",
            "templated": false
        },
        "loggers-name": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/loggers/{name}",
            "templated": true
        },
        "mappings": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/mappings",
            "templated": false
        },
        "metrics": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/metrics",
            "templated": false
        },
        "metrics-requiredMetricName": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/metrics/{requiredMetricName}",
            "templated": true
        },
        "scheduledtasks": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/scheduledtasks",
            "templated": false
        },
        "self": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator",
            "templated": false
        },
        "threaddump": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/threaddump",
            "templated": false
        },
        "trace": {
            "href": "http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/trace",
            "templated": false
        }
    }
}

pasapicella@pas-macbook:~/temp/springboot-actuator-2-demo$ http http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/health
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 183
Content-Type: application/vnd.spring-boot.actuator.v2+json;charset=UTF-8
Date: Sun, 04 Mar 2018 10:16:03 GMT
X-Vcap-Request-Id: be45c751-b77d-4e7c-77b6-0d7affa0fe16

{
    "details": {
        "db": {
            "details": {
                "database": "H2",
                "hello": 1
            },
            "status": "UP"
        },
        "diskSpace": {
            "details": {
                "free": 908681216,
                "threshold": 10485760,
                "total": 1073741824
            },
            "status": "UP"
        }
    },
    "status": "UP"
}

pasapicella@pas-macbook:~/temp/springboot-actuator-2-demo$ http http://springboot-actuator-appsmanager-forgiving-camel.cfapps.io/actuator/trace
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/vnd.spring-boot.actuator.v2+json;charset=UTF-8
Date: Sun, 04 Mar 2018 10:19:46 GMT
X-Vcap-Request-Id: e0c86f51-dcc4-4349-41d2-6b603677c3f4
transfer-encoding: chunked

{
    "traces": [
        {
            "info": {
                "headers": {
                    "request": {
                        "accept": "*/*",
                        "accept-encoding": "gzip, deflate",
                        "host": "springboot-actuator-appsmanager-forgiving-camel.cfapps.io",
                        "user-agent": "HTTPie/0.9.9",
                        "x-b3-spanid": "0ad427a9f13bad0c",
                        "x-b3-traceid": "0ad427a9f13bad0c",
                        "x-cf-applicationid": "c1e50a41-5e1e-475f-b9e6-116a7acd98a2",
                        "x-cf-instanceid": "db74a5d2-ac72-4c45-539a-118f",
                        "x-cf-instanceindex": "0",
                        "x-forwarded-port": "80",
                        "x-forwarded-proto": "http",
                        "x-request-start": "1520158694338",
                        "x-vcap-request-id": "5f1e5572-a841-4e3f-4b6f-2cfd0c0ccc8e"
                    },
                    "response": {
                        "Content-Type": "application/vnd.spring-boot.actuator.v2+json;charset=UTF-8",
                        "Date": "Sun, 04 Mar 2018 10:18:14 GMT",

...

More Information

https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html
Categories: Fusion Middleware

3 Easy Ways to Capture Documents to Oracle Content & Experience Cloud with Oracle WebCenter Enterprise Capture

Document capture plays a crucial role in the overall content management process. The conversion of paper or electronic documents (PDFs, email attachments, etc.) to managed content that includes metadata, enables such content to be easily found within enterprise content management systems like Oracle WebCenter. For companies that have invested in cloud-based content management systems, such as Oracle Content & Experience Cloud (Oracle CEC), the process of capturing documents shouldn’t delay the benefits of being able to easily share and collaborate on content with third parties. The capture process should provide a seamless experience to image enable paper and electronic documents regardless of repository location – on premise or in the cloud. Fortunately for Oracle CEC customers, Oracle WebCenter Enterprise Capture provides the 3 simple methods to capture documents directly to the cloud.

To see how easy this is, I’ve put together a 2 minute video that shows how content can be processed and committed to Oracle CEC from Enterprise Capture. The video shows the 3 options customers have to upload files or documents using the capture client, a file directory upload method, and an email upload.

 

If you are looking for easy ways to get paper and electronic documents into your Oracle CEC system, then consider Oracle WebCenter Enterprise Capture. It provides three easy configurations that may benefit all users when searching for content in Oracle CEC because of the consistency of file location and expected file naming convention. The three methods of capturing content to the cloud have unique and shared benefits:

Shared Benefits

  • Content is checked into the same location.
  • The file names can be forced to be in a specified format.
  • Files can be converted to the same image format.

Manual Upload Benefits

  • The Enterprise Capture Client can drive a scanner to upload documents.
  • The document can be reviewed and edited before being committed to Oracle CEC.

File Directory Upload Benefits

  • Can be mapped to a file share that multiple users have access to.
  • File is stored in that folder as a backup.
  • Files can be limited to certain file extensions.

Email Upload Benefits

  • An email inbox can be configured to watch for file types.
  • Automatically upload files with no user interaction.
  • The email after upload can be moved to a success folder for backup purposes.

 

Categories: Fusion Middleware, Other

Pivotal Cloud Foundry App Instance Routing in HTTP Headers

Pas Apicella - Thu, 2018-01-18 04:26
Developers who want to obtain debug data for a specific instance of an app can use the HTTP header X-CF-APP-INSTANCE to make a request to an app instance. To demonstrate how we can write a Spring Boot application which simply outputs the current CF app index so we are sure we are hitting the right application container.

Simplest way to do that is to define a RestController using Spring Boot as follows which then enables us to get the current application index and verify we are hitting the right container instance.
  
package com.example.pas;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DemoRest
{
private final String ip;
private final String index;

@Autowired
public DemoRest
(@Value("${CF_INSTANCE_IP:127.0.0.1}") String ip,
@Value("${CF_INSTANCE_INDEX:0}") String index) {
this.ip = ip;
this.index = index;
}

@RequestMapping("/")
public InstanceDetail getAppDetails()
{
InstanceDetail instanceDetail = new InstanceDetail(ip, index);

return instanceDetail;
}
}

So with the application deployed as see we have 3 instances as follows

pasapicella@pas-macbook:~$ cf app pas-pcf-routingdemo
Showing health and status for app pas-pcf-routingdemo in org pivot-papicella / space dotnet as papicella@pivotal.io...

name:                pas-pcf-routingdemo
requested state:     started
instances:           3/3
isolation segment:   main
usage:               756M x 3 instances
routes:              pas-pcf-routingdemo-incidental-curia.pcfbeta.io
last uploaded:       Thu 18 Jan 20:41:26 AEDT 2018
stack:               cflinuxfs2
buildpack:           client-certificate-mapper=1.4.0_RELEASE container-security-provider=1.11.0_RELEASE java-buildpack=v4.7.1-offline-https://github.com/cloudfoundry/java-buildpack.git#6a3361a
                     java-main java-opts java-security jvmkill-agent=1... (no decorators apply)

     state     since                  cpu    memory           disk           details
#0   running   2018-01-18T09:44:07Z   0.4%   224.8M of 756M   137.5M of 1G
#1   running   2018-01-18T09:44:13Z   0.8%   205M of 756M     137.5M of 1G
#2   running   2018-01-18T09:44:06Z   0.7%   221.1M of 756M   137.5M of 1G

Now lets simply access our application a few times using the "/" end point and verify we are accessing different application containers via round robin routing as per GoRouter

pasapicella@pas-macbook:~$ http https://pas-pcf-routingdemo-incidental-curia.pcfbeta.io/
HTTP/1.1 200 OK
Content-Length: 34
Content-Type: application/json;charset=UTF-8
Date: Thu, 18 Jan 2018 09:58:10 GMT
Set-Cookie: dtCookie=6$B570EBB532CD9D8DAA2BCAE14C4277FC|RUM+Default+Application|1; Domain=pcfbeta.io; Path=/
X-Vcap-Request-Id: 336ba633-685b-4235-467d-b9833a9e6435

{
    "index": "2",
    "ip": "192.168.16.34"
}

pasapicella@pas-macbook:~$ http https://pas-pcf-routingdemo-incidental-curia.pcfbeta.io/
HTTP/1.1 200 OK
Content-Length: 34
Content-Type: application/json;charset=UTF-8
Date: Thu, 18 Jan 2018 09:58:15 GMT
Set-Cookie: dtCookie=5$3389B3DFBAD936D68CBAF30657653465|RUM+Default+Application|1; Domain=pcfbeta.io; Path=/
X-Vcap-Request-Id: aa74e093-9031-4df5-73a5-bc9f1741a942

{
    "index": "1",
    "ip": "192.168.16.32"
}

Now we can request access to just the container with application index "1" as follows

1. First get the Application GUID as shown below

pasapicella@pas-macbook:~$ cf app pas-pcf-routingdemo --guid
5bdf2f08-34a5-402f-b7cb-f29c81d171e0

2. Now lets invoke a call to the application and set the HEADER required to instruct GoRouter to target a specific application index

eg: curl app.example.com -H "X-CF-APP-INSTANCE":"YOUR-APP-GUID:YOUR-INSTANCE-INDEX"

Example below is using HTTPie 

Accessing Instance 1

pasapicella@pas-macbook:~$ http https://pas-pcf-routingdemo-incidental-curia.pcfbeta.io/ "X-CF-APP-INSTANCE":"5bdf2f08-34a5-402f-b7cb-f29c81d171e0:1"
HTTP/1.1 200 OK
Content-Length: 34
Content-Type: application/json;charset=UTF-8
Date: Thu, 18 Jan 2018 10:20:31 GMT
Set-Cookie: dtCookie=5$FD08A5C88469AF379C8AD3F36FA7984B|RUM+Default+Application|1; Domain=pcfbeta.io; Path=/
X-Vcap-Request-Id: cb19b960-713a-49d0-4529-a0766a8880a7

{
    "index": "1",
    "ip": "192.168.16.32"
}

Accessing Instance 2 

pasapicella@pas-macbook:~$ http https://pas-pcf-routingdemo-incidental-curia.pcfbeta.io/ "X-CF-APP-INSTANCE":"5bdf2f08-34a5-402f-b7cb-f29c81d171e0:2"
HTTP/1.1 200 OK
Content-Length: 34
Content-Type: application/json;charset=UTF-8
Date: Thu, 18 Jan 2018 10:21:09 GMT
Set-Cookie: dtCookie=7$53957A744D473BB024EB1FF4F0CD60A9|RUM+Default+Application|1; Domain=pcfbeta.io; Path=/
X-Vcap-Request-Id: 33cc7922-9b43-4182-5c36-13eee42a9919

{
    "index": "2",
    "ip": "192.168.16.34"
}

More Information

https://docs.cloudfoundry.org/concepts/http-routing.html#http-headers
Categories: Fusion Middleware

No More Content Chaos – Fishbowl Helps Manufacturer Integrate Oracle WebCenter with Agility for Enterprise Asset Management and Multichannel Delivery

This post is a recap of a recent Oracle WebCenter Content digital asset management project we completed for a manufacturing customer. They have thousands of products, and each has its own set of images, illustrations, videos, and manuals. Over 20,000 different asset types like these supported multiple processes and are distributed across a variety of mediums.

Google Search Appliance (GSA) Replacement, Alternatives, and Migration
The Business Problem: Disparate Content Storage

The company was storing some of its assets within Oracle Universal Content Management (UCM). Others, however, were stored in employee laptops, file servers, and various other locations. The assets were also stored with multiple naming conventions. These factors made it difficult to find relevant assets for products and repurpose them across channels and teams, as well as collaborate on the assets internally or with partners. Employees involved in asset creation and management described it as “content chaos”.

Illustration 1: Content Creation Lifecycle
The company’s view on how content will be created and consumed. This includes the various audiences for the content illustrating the content types necessary (electronic and print) – technical specifications, price and availability, manuals, etc.

This disparate content storage architecture and inconsistent file naming also meant that there was limited visibility into when and where purchased assets like image libraries were being used. This made it difficult to share such investments throughout the company.

Selecting Oracle WebCenter Content for Asset Storage and Management

With these issues identified, the company set out to develop a strategy to implement a permissions-based, centralized document and digital asset management system.  They had been using Oracle UCM for some time, but their initial implementation was not architected in a way to best suit the needs to search, access, use, and share assets across the company.

The company had also recently deployed the Agility product information management (PIM) system. Agility is used to manage the fully lifecycle of the company’s products, including where and how they can be marketed and sold, as well as what they should cost. The company wanted to integrate Agility with Oracle UCM, so that they could relate products in Agility with associated assets in UCM. This would make it easier to support commerce channels, including the company’s website, print catalogs, and the future desire to enable the sales team to access the company’s full product line “binder” from their mobile devices. The company needed the content management system to be able to output multiple rendition types including videos and PDFs.

For these reasons, the company decided to upgrade Oracle UCM to WebCenter Content 12c. An added benefit of 12c was that it provided the ability to integrate with third-party audio and video transcoding systems. This enabled the company to leverage FFmpeg software, which records, converts, and streams audio and video data. This video rendition engine is an open source product and therefore free, which helped keep implementation costs down as no additional licenses needed to be purchased.

The company partnered with Fishbowl Solutions to perform the upgrade to WebCenter 12c and integrate the product with Agility. Fishbowl had engaged with this company previously to scope out the future use of Oracle UCM (WebCenter), as well as design how its digital asset management component could be architected to achieve the following:

  • Simplified Image Access and Control
    • Provide an easy-to-use system that minimizes non-value add tasks. Users should have simple input mechanisms, assets should be transformed transparently to the user, and end up distributed to the right channel based on product name and metadata values.
  • Simple Scalable Solution for More Effective Collateral Control Across All Brands
    • Simplified solution architecture that is scalable to the needs of the company’s brands and shared functions and clarifies/enforces the defined “fit for purpose” solutions.
  • Image and Referential Content are Appropriately Managed throughout the Lifecycle
    • Knowledge workers want a solution that manages data according to organizational policy and standards within the systems they use on a day-to-day basis and does not require significant additional effort.
Oracle WebCenter Content 12c Implementation and Agility Integration

The company created a “Portfolio Initiative Roadmap” identifying these 9 key initiatives required to build out their Enterprise Digital Asset Management Solution and Program:

  1. Establish Foundation
  2. Marketing and Creative Services Enablement
  3. Sales Enablement
  4. Training and Certification Enablement
  5. Engineering Enablement
  6. Archive and Access AP Images To/From Oracle WebCenter Content
  7. Creative Services Enablement
  8. Ecommerce Enablement
  9. Evolve Foundation

Fishbowl worked with the company to deliver roadmap item number one: Establish Foundation. With this initiative Fishbowl needed to first upgrade Oracle UCM to Oracle WebCenter 12c. This included migrating the creative assets into the new instance. In parallel with the content migration and upgrade, the Fishbowl team designed an integration between Agility and Oracle WebCenter. This integration would enable Agility’s product taxonomy and data model to be associated with WebCenter’s metadata fields. This essentially would enable metadata between the systems to be shared and synced, making it easier to standardize on how assets were named.

The Fishbowl team did an outstanding job researching, planning, troubleshooting and creating the migration schedule for the Oracle Universal Content Management to WebCenter Content 12c upgrade. We did encounter one issue the night of the release, but the team developed a resolution and was ready to attempt the upgrade within 3 days.  I had the utmost confidence their plan was solid and we would attempt the upgrade mid-week.  The next attempt went very smoothly and users were in WebCenter Content the next morning.

Manager, Digital Strategy, Manufacturing Company

This integration would also provide renditions of the assets stored in Oracle WebCenter to display in Agility. For example, photographs and images of the company’s products are rendered via Oracle WebCenter’s digital asset management component to produce various formats – high and low resolution, 1200 x 1200, etc. Since Agility would be used by many departments at the company, including marketing, creative services, sales, and engineering; it was important that various formats of the assets could be easily found. This would help accelerate the execution of campaigns through web and email channels, as well as when print-ready images were needed to create or update product installation manuals and catalogs that were stored as PDFs. Additionally, associating the assets with the products in Agility would enable them to be paired so that they could be part of the product’s lifecycle – when products were discontinued, associated assets could be removed from the system. The following graphic illustrates the Oracle WebCenter and Agility integration:

Illustration 2: WebCenter Content and Agility Integration  Fishbowl designed a filter to capture all of the IDs of content items checked into the PIM Asset profile and added these to the Send To PIM Table. A system event was then added in WebCenter which runs about every 5 minutes, and this checks assets that are in the Send To PIM Table and adds them to the PIM Table. After it is added to the PIM Table, an API call is made to the PIM system to pull the assets from that table and add them to the appropriate product with any relations associated to it (i.e. the high resolution image for a specific product). After it is added into the PIM system, an API call is made to WebCenter with the updated path of the asset.

Results

This company first invested in Oracle WebCenter about five years ago. Although the system was being used to store some technical and business documents, the feeling amongst senior leadership was that the return on that investment was minimal. It hadn’t reached widespread adoption, and it was viewed as a system that wasn’t streamlining business processes and therefore wasn’t saving the company money.

This company, like most WebCenter Content customers, wasn’t fully aware of all that the system had to offer. Oracle WebCenter Content’s capabilities had to be reimagined, and in this case it was the Manager of Digital Strategy at the company that found an ideal use case. He was aware of the “content chaos” that the marketing and creative services teams were experiencing, which was part of the reason campaigns for specific channels took a long time to launch, as well as how the assets for such campaigns couldn’t be repurposed easily.

With the implementation of Oracle WebCenter Content 12c, and its integration with Agility, that has all changed. WebCenter has been identified as the system to store and manage assets, and as those assets are checked in they are automatically linked to products in Agility. This means that employees across divisions and geographic locations can easily locate the acceptable product assets for use in marketing, sales, engineering, training, or installation purposes. Outdated assets can easily be removed from the system, either manually or based on a content lifecycle schedule. Furthermore, having a standardized repository for the assets will better ensure they are reused across divisions and geographic locations, and no longer does the unknown location of assets impede internal or external collaboration. Furthermore, the open-source FFMpeg video rendition engine didn’t require the purchase of additional licenses, reducing future license and maintenance costs. Overall, the WebCenter and Agility-based digital asset management system has provided the foundation to effectively and efficiently control and deliver assets to the company’s targeted commerce channels.

The Fishbowl consultants on this project have all proved to be a very valuable part of my digital content strategy. I am very happy with the level of support I have received and amazed by how quickly they are able to provide conceptual ideas, working POC’s and final deliverables. They have been instrumental in developing and implementing the integration between Oracle WebCenter’s digital asset management component and our new Agility PIM application. I view them as members of my team, and they were all key in the successful implementation of our digital content management system.

Manager, Digital Strategy, Manufacturing Company

Time running out on your GSA?

Our expert team knows both GSA and Mindbreeze. We’ll help you understand your options and design a migration plan to fit your needs.

The post No More Content Chaos – Fishbowl Helps Manufacturer Integrate Oracle WebCenter with Agility for Enterprise Asset Management and Multichannel Delivery appeared first on Fishbowl Solutions.

Categories: Fusion Middleware, Other

Verifying PCF 2.0 with PAS small footprint with bosh CLI

Pas Apicella - Thu, 2017-12-28 22:27
After installing PCF 2.0 here is how you can verify your installation using the new bosh2 CLI. In this example I use "bosh2" BUT with PCF 2.0 you can actually use "bosh". bosh2 v2 existed for a while in PCF 1.12 and some previous versions while we left bosh v1

1. SSH into your ops manager VM as shown below, in this example we using GCP

https://docs.pivotal.io/pivotalcf/2-0/customizing/trouble-advanced.html#ssh

2. Create an alias for your ENV as shown below

Note: You will need the bosh director IP address which you can obtain using

  https://docs.pivotal.io/pivotalcf/2-0/customizing/trouble-advanced.html#gather

ubuntu@opsman-pcf:~$ bosh2 alias-env gcp -e y.y.y.y --ca-cert /var/tempest/workspaces/default/root_ca_certificate
Using environment 'y.y.y.y' as anonymous user

Name      p-bosh
UUID      3c886290-144f-4ec7-86dd-b7586b98dc3b
Version   264.4.0 (00000000)
CPI       google_cpi
Features  compiled_package_cache: disabled
          config_server: enabled
          dns: disabled
          snapshots: disabled
User      (not logged in)

Succeeded

3. Log in to the BOSH Director with UAA

Note: You will need the username / password for the bosh director which you can obtain as follows

  https://docs.pivotal.io/pivotalcf/2-0/customizing/trouble-advanced.html#gather

ubuntu@opsman-pcf:~$ bosh2 -e gcp log-in
Email (): director
Password ():

Successfully authenticated with UAA

Succeeded

4. View all the VM's managed by BOSH as follows

ubuntu@opsman-pcf:~/scripts$ bosh2 -e gcp vms --column=Instance --column="Process State" --column=AZ --column="VM Type"
Using environment 'y.y.y.y' as user 'director' (bosh.*.read, openid, bosh.*.admin, bosh.read, bosh.admin)

Task 65. Done

Deployment 'cf-adee3657c74c7b9a8e35'

Instance                                             Process State  AZ                      VM Type
backup-prepare/996340c7-4114-472e-b660-a5e353493fa4  running        australia-southeast1-a  micro
blobstore/cdd6fc8d-25c9-4cfb-9908-89eb0164fb80       running        australia-southeast1-a  medium.mem
compute/2dfcc046-c16a-4a36-9170-ef70d1881818         running        australia-southeast1-a  xlarge.disk
control/2f3d0bc6-9a2d-4c08-9ccc-a88bad6382a3         running        australia-southeast1-a  xlarge
database/da60f0e7-b8e3-4f8d-945d-306b267ac161        running        australia-southeast1-a  large.disk
mysql_monitor/a88331c4-1659-4fe4-b8e9-89ce4bf092fd   running        australia-southeast1-a  micro
router/276e308e-a476-4c8d-9555-21623dada492          running        australia-southeast1-a  micro

7 vms

Succeeded

** Few other examples **

- View all the deployments, in this example we just have the PAS small footprint tile installed so it only exists and no other bosh managed tiles xist

ubuntu@opsman-pcf:~/scripts$ bosh2 -e gcp deployments --column=name
Using environment 'y.y.y.y' as user 'director' (bosh.*.read, openid, bosh.*.admin, bosh.read, bosh.admin)

Name
cf-adee3657c74c7b9a8e35

1 deployments

Succeeded

- Run cloud check to check for issues

ubuntu@opsman-pcf:~/scripts$ bosh2 -e gcp -d cf-adee3657c74c7b9a8e35 cloud-check
Using environment 'y.y.y.y' as user 'director' (bosh.*.read, openid, bosh.*.admin, bosh.read, bosh.admin)

Using deployment 'cf-adee3657c74c7b9a8e35'

Task 66

Task 66 | 04:20:52 | Scanning 7 VMs: Checking VM states (00:00:06)
Task 66 | 04:20:58 | Scanning 7 VMs: 7 OK, 0 unresponsive, 0 missing, 0 unbound (00:00:00)
Task 66 | 04:20:58 | Scanning 3 persistent disks: Looking for inactive disks (00:00:01)
Task 66 | 04:20:59 | Scanning 3 persistent disks: 3 OK, 0 missing, 0 inactive, 0 mount-info mismatch (00:00:00)

Task 66 Started  Fri Dec 29 04:20:52 UTC 2017
Task 66 Finished Fri Dec 29 04:20:59 UTC 2017
Task 66 Duration 00:00:07
Task 66 done

#  Type  Description

0 problems

Succeeded

More Information

https://docs.pivotal.io/pivotalcf/2-0/customizing/trouble-advanced.html
Categories: Fusion Middleware

Karamazov

Greg Pavlik - Sat, 2017-12-23 17:36
 Chapter 3  -  Conversations and Exhortations of Father Zosima

(e) The Russian Monk and His Possible Significance.

FATHERS and teachers, what is the monk? In the cultivated world the word is nowadays pronounced by some people with a jeer, and by others it is used as a term of abuse, and this contempt for the monk is growing. It is true, alas, it is true, that there are many sluggards, gluttons, profligates, and insolent beggars among monks. Educated people point to these: "You are idlers, useless members of society, you live on the labour of others, you are shameless beggars." And yet how many meek and humble monks there are, yearning for solitude and fervent prayer in peace! These are less noticed, or passed over in silence. And how surprised men would be if I were to say that from these meek monks, who yearn for solitary prayer, the salvation of Russia will come perhaps once more! For they are in truth made ready in peace and quiet "for the day and the hour, the month and the year." Meanwhile, in their solitude, they keep the image of Christ fair and undefiled, in the purity of God's truth, from the times of the Fathers of old, the Apostles and the martyrs. And when the time comes they will show it to the tottering creeds of the world. That is a great thought. That star will rise out of the East.
  That is my view of the monk, and is it false? Is it too proud? Look at the worldly and all who set themselves up above the people of God; has not God's image and His truth been distorted in them? They have science; but in science there is nothing but what is the object of sense. The spiritual world, the higher part of man's being is rejected altogether, dismissed with a sort of triumph, even with hatred. The world has proclaimed the reign of freedom, especially of late, but what do we see in this freedom of theirs? Nothing but slavery and self-destruction! For the world says:
  "You have desires and so satisfy them, for you have the same rights as the most rich and powerful. Don't be afraid of satisfying them and even multiply your desires." That is the modern doctrine of the world. In that they see freedom. And what follows from this right of multiplication of desires? In the rich, isolation and spiritual suicide; in the poor, envy and murder; for they have been given rights, but have not been shown the means of satisfying their wants. They maintain that the world is getting more and more united, more and more bound together in brotherly community, as it overcomes distance and sets thoughts flying through the air.
  Alas, put no faith in such a bond of union. Interpreting freedom as the multiplication and rapid satisfaction of desires, men distort their own nature, for many senseless and foolish desires and habits and ridiculous fancies are fostered in them. They live only for mutual envy, for luxury and ostentation. To have dinners visits, carriages, rank, and slaves to wait on one is looked upon as a necessity, for which life, honour and human feeling are sacrificed, and men even commit suicide if they are unable to satisfy it. We see the same thing among those who are not rich, while the poor drown their unsatisfied need and their envy in drunkenness. But soon they will drink blood instead of wine, they are being led on to it. I ask you is such a man free? I knew one "champion of freedom" who told me himself that, when he was deprived of tobacco in prison, he was so wretched at the privation that he almost went and betrayed his cause for the sake of getting tobacco again! And such a man says, "I am fighting for the cause of humanity."
  How can such a one fight? What is he fit for? He is capable perhaps of some action quickly over, but he cannot hold out long. And it's no wonder that instead of gaining freedom they have sunk into slavery, and instead of serving, the cause of brotherly love and the union of humanity have fallen, on the contrary, into dissension and isolation, as my mysterious visitor and teacher said to me in my youth. And therefore the idea of the service of humanity, of brotherly love and the solidarity of mankind, is more and more dying out in the world, and indeed this idea is sometimes treated with derision. For how can a man shake off his habits? What can become of him if he is in such bondage to the habit of satisfying the innumerable desires he has created for himself? He is isolated, and what concern has he with the rest of humanity? They have succeeded in accumulating a greater mass of objects, but the joy in the world has grown less.
  The monastic way is very different. Obedience, fasting, and prayer are laughed at, yet only through them lies the way to real, true freedom. I cut off my superfluous and unnecessary desires, I subdue my proud and wanton will and chastise it with obedience, and with God's help I attain freedom of spirit and with it spiritual joy. Which is most capable of conceiving a great idea and serving it- the rich in his isolation or the man who has freed himself from the tyranny of material things and habits? The monk is reproached for his solitude, "You have secluded yourself within the walls of the monastery for your own salvation, and have forgotten the brotherly service of humanity!" But we shall see which will be most zealous in the cause of brotherly love. For it is not we, but they, who are in isolation, though they don't see that. Of old, leaders of the people came from among us, and why should they not again? The same meek and humble ascetics will rise up and go out to work for the great cause. The salvation of Russia comes from the people. And the Russian monk has always been on the side of the people. We are isolated only if the people are isolated. The people believe as we do, and an unbelieving reformer will never do anything in Russia, even if he is sincere in heart and a genius. Remember that! The people will meet the atheist and overcome him, and Russia will be one and Orthodox. Take care of the peasant and guard his heart. Go on educating him quietly. That's your duty as monks, for the peasant has God in his heart.

(f) Of Masters and Servants, and of whether it is possible for them to be Brothers in the Spirit

Of course, I don't deny that there is sin in the peasants too. And the fire of corruption is spreading visibly, hourly, working from above downwards. The spirit of isolation is coming upon the people too. Money-lenders and devourers of the commune are rising up. Already the merchant grows more and more eager for rank, and strives to show himself cultured though he has not a trace of culture, and to this end meanly despises his old traditions, and is even ashamed of the faith of his fathers. He visits princes, though he is only a peasant corrupted. The peasants are rotting in drunkenness and cannot shake off the habit. And what cruelty to their wives, to their children even! All from drunkenness! I've seen in the factories children of nine years old, frail, rickety, bent and already depraved. The stuffy workshop, the din of machinery, work all day long, the vile language and the drink, the drink- is that what a little child's heart needs? He needs sunshine, childish play, good examples all about him, and at least a little love. There must be no more of this, monks, no more torturing of children, rise up and preach that, make haste, make haste!
  But God will save Russia, for though the peasants are corrupted and cannot renounce their filthy sin, yet they know it is cursed by God and that they do wrong in sinning. So that our people still believe in righteousness, have faith in God and weep tears of devotion.
  It is different with the upper classes. They, following science, want to base justice on reason alone, but not with Christ, as before, and they have already proclaimed that there is no crime, that there is no sin. And that's consistent, for if you have no God what is the meaning of crime? In Europe the people are already rising up against the rich with violence, and the leaders of the people are everywhere leading them to bloodshed, and teaching them that their wrath is righteous. But their "wrath is accursed, for it is cruel." But God will save Russia as He has saved her many times. Salvation will come from the people, from their faith and their meekness.
  Fathers and teachers, watch over the people's faith and this will not be a dream. I've been struck all my life in our great people by their dignity, their true and seemly dignity. I've seen it myself, I can testify to it, I've seen it and marvelled at it, I've seen it in spite of the degraded sins and poverty-stricken appearance of our peasantry. They are not servile, and even after two centuries of serfdom they are free in manner and bearing, yet without insolence, and not revengeful and not envious. "You are rich and noble, you are clever and talented, well, be so, God bless you. I respect you, but I know that I too am a man. By the very fact that I respect you without envy I prove my dignity as a man."
In truth if they don't say this (for they don't know how to say this yet), that is how they act. I have seen it myself, I have known it myself, and, would you believe it, the poorer our Russian peasant is, the more noticeable is that serene goodness, for the rich among them are for the most part corrupted already, and much of that is due to our carelessness and indifference. But God will save His people, for Russia is great in her humility. I dream of seeing, and seem to see clearly already, our future. It will come to pass that even the most corrupt of our rich will end by being ashamed of his riches before the poor, and the poor, seeing his humility, will understand and give way before him, will respond joyfully and kindly to his honourable shame. Believe me that it will end in that; things are moving to that. Equality is to be found only in the spiritual dignity of man, and that will only be understood among us. If we were brothers, there would be fraternity, but before that they will never agree about the division of wealth. We preserve the image of Christ, and it will shine forth like a precious diamond to the whole world. So may it be, so may it be!
  Fathers and teachers, a touching incident befell me once. In my wanderings I met in the town of K. my old orderly, Afanasy. It was eight years since I had parted from him. He chanced to see me in the market-place, recognised me, ran up to me, and how delighted he was! He simply pounced on me: "Master dear, is it you? Is it really you I see?" He took me home with him.
  He was no longer in the army, he was married and already had two little children. He and his wife earned their living as costermongers in the market-place. His room was poor, but bright and clean. He made me sit down, set the samovar, sent for his wife, as though my appearance were a festival for them. He brought me his children: "Bless them, Father."
  "Is it for me to bless them? I am only a humble monk. I will pray for them. And for you, Afanasy Pavlovitch, I have prayed every day since that day, for it all came from you," said I. And I explained that to him as well as I could. And what do you think? The man kept gazing at me and could not believe that I, his former master, an officer, was now before him in such a guise and position; it made him shed tears.
  "Why are you weeping?" said I, "better rejoice over me, dear friend, whom I can never forget, for my path is a glad and joyful one."
  He did not say much, but kept sighing and shaking his head over me tenderly.
  "What has become of your fortune?" he asked.
  "I gave it to the monastery," I answered; "we live in common."
  After tea I began saying good-bye, and suddenly he brought out half a rouble as an offering to the monastery, and another half-rouble I saw him thrusting hurriedly into my hand: "That's for you in your wanderings, it may be of use to you, Father."
  I took his half-rouble, bowed to him and his wife, and went out rejoicing. And on my way I thought: "Here we are both now, he at home and I on the road, sighing and shaking our heads, no doubt, and yet smiling joyfully in the gladness of our hearts, remembering how God brought about our meeting."
I have never seen him again since then. I had been his master and he my servant, but now when we exchanged a loving kiss with softened hearts, there was a great human bond between us. I have thought a great deal about that, and now what I think is this: Is it so inconceivable that that grand and simple-hearted unity might in due time become universal among the Russian people? I believe that it will come to pass and that the time is at hand.
  And of servants I will add this: In old days when I was young I was often angry with servants; "the cook had served something too hot, the orderly had not brushed my clothes." But what taught me better then was a thought of my dear brother's, which I had heard from him in childhood: "Am I worth it, that another should serve me and be ordered about by me in his poverty and ignorance?" And I wondered at the time that such simple and self-evident ideas should be so slow to occur to our minds.
  It is impossible that there should be no servants in the world, but act so that your servant may be freer in spirit than if he were not a servant. And why cannot I be a servant to my servant and even let him see it, and that without any pride on my part or any mistrust on his? Why should not my servant be like my own kindred, so that I may take him into my family and rejoice in doing so? Even now this can be done, but it will lead to the grand unity of men in the future, when a man will not seek servants for himself, or desire to turn his fellow creatures into servants as he does now, but on the contrary, will long with his whole heart to be the servant of all, as the Gospel teaches.
  And can it be a dream, that in the end man will find his joy only in deeds of light and mercy, and not in cruel pleasures as now, in gluttony, fornication, ostentation, boasting and envious rivalry of one with the other? I firmly believe that it is not and that the time is at hand. People laugh and ask: "When will that time come and does it look like coming?" I believe that with Christ's help we shall accomplish this great thing. And how many ideas there have been on earth in the history of man which were unthinkable ten years before they appeared! Yet when their destined hour had come, they came forth and spread over the whole earth. So it will be with us, and our people will shine forth in the world, and all men will say: "The stone which the builders rejected has become the cornerstone of the building."
  And we may ask the scornful themselves: If our hope is a dream, when will you build up your edifice and order things justly by your intellect alone, without Christ? If they declare that it is they who are advancing towards unity, only the most simple-hearted among them believe it, so that one may positively marvel at such simplicity. Of a truth, they have more fantastic dreams than we. They aim at justice, but, denying Christ, they will end by flooding the earth with blood, for blood cries out for blood, and he that taketh up the sword shall perish by the sword. And if it were not for Christ's covenant, they would slaughter one another down to the last two men on earth. And those two last men would not be able to restrain each other in their pride, and the one would slay the other and then himself. And that would come to pass, were it not for the promise of Christ that for the sake of the humble and meek the days shall be shortened.
  While I was still wearing an officer's uniform after my duel, I talked about servants in general society, and I remember everyone was amazed at me. "What!" they asked, "are we to make our servants sit down on the sofa and offer them tea?" And I answered them: "Why not, sometimes at least?" Everyone laughed. Their question was frivolous and my answer was not clear; but the thought in it was to some extent right.

(g) Of Prayer, of Love, and of Contact with other Worlds.

Young man, be not forgetful of prayer. Every time you pray, if your prayer is sincere, there will be new feeling and new meaning in it, which will give you fresh courage, and you will understand that prayer is an education. Remember, too, every day, and whenever you can, repeat to yourself, "Lord, have mercy on all who appear before Thee to-day." For every hour and every moment thousands of men leave life on this earth, and their souls appear before God. And how many of them depart in solitude, unknown, sad, dejected that no one mourns for them or even knows whether they have lived or not! And behold, from the other end of the earth perhaps, your prayer for their rest will rise up to God though you knew them not nor they you. How touching it must be to a soul standing in dread before the Lord to feel at that instant that, for him too, there is one to pray, that there is a fellow creature left on earth to love him too! And God will look on you both more graciously, for if you have had so much pity on him, how much will He have pity Who is infinitely more loving and merciful than you! And He will forgive him for your sake.
  Brothers, have no fear of men's sin. Love a man even in his sin, for that is the semblance of Divine Love and is the highest love on earth. Love all God's creation, the whole and every grain of sand in it. Love every leaf, every ray of God's light. Love the animals, love the plants, love everything. If you love everything, you will perceive the divine mystery in things. Once you perceive it, you will begin to comprehend it better every day. And you will come at last to love the whole world with an all-embracing love. Love the animals: God has given them the rudiments of thought and joy untroubled. Do not trouble it, don't harass them, don't deprive them of their happiness, don't work against God's intent. Man, do not pride yourself on superiority to the animals; they are without sin, and you, with your greatness, defile the earth by your appearance on it, and leave the traces of your foulness after you- alas, it is true of almost every one of us! Love children especially, for they too are sinless like the angels; they live to soften and purify our hearts and, as it were, to guide us. Woe to him who offends a child! Father Anfim taught me to love children. The kind, silent man used often on our wanderings to spend the farthings given us on sweets and cakes for the children. He could not pass by a child without emotion. That's the nature of the man.
  At some thoughts one stands perplexed, especially at the sight of men's sin, and wonders whether one should use force or humble love. Always decide to use humble love. If you resolve on that once for all, you may subdue the whole world. Loving humility is marvellously strong, the strongest of all things, and there is nothing else like it.
  Every day and every hour, every minute, walk round yourself and watch yourself, and see that your image is a seemly one. You pass by a little child, you pass by, spiteful, with ugly words, with wrathful heart; you may not have noticed the child, but he has seen you, and your image, unseemly and ignoble, may remain in his defenceless heart. You don't know it, but you may have sown an evil seed in him and it may grow, and all because you were not careful before the child, because you did not foster in yourself a careful, actively benevolent love. Brothers, love is a teacher; but one must know how to acquire it, for it is hard to acquire, it is dearly bought, it is won slowly by long labour. For we must love not only occasionally, for a moment, but for ever. Everyone can love occasionally, even the wicked can.
  My brother asked the birds to forgive him; that sounds senseless, but it is right; for all is like an ocean, all is flowing and blending; a touch in one place sets up movement at the other end of the earth. It may be senseless to beg forgiveness of the birds, but birds would be happier at your side- a little happier, anyway- and children and all animals, if you were nobler than you are now. It's all like an ocean, I tell you. Then you would pray to the birds too, consumed by an all-embracing love, in a sort of transport, and pray that they too will forgive you your sin. Treasure this ecstasy, however senseless it may seem to men.
  My friends, pray to God for gladness. Be glad as children, as the birds of heaven. And let not the sin of men confound you in your doings. Fear not that it will wear away your work and hinder its being accomplished. Do not say, "Sin is mighty, wickedness is mighty, evil environment is mighty, and we are lonely and helpless, and evil environment is wearing us away and hindering our good work from being done." Fly from that dejection, children! There is only one means of salvation, then take yourself and make yourself responsible for all men's sins, that is the truth, you know, friends, for as soon as you sincerely make yourself responsible for everything and for all men, you will see at once that it is really so, and that you are to blame for everyone and for all things. But throwing your own indolence and impotence on others you will end by sharing the pride of Satan and murmuring against God.
  Of the pride of Satan what I think is this: it is hard for us on earth to comprehend it, and therefore it is so easy to fall into error and to share it, even imagining that we are doing something grand and fine. Indeed, many of the strongest feelings and movements of our nature we cannot comprehend on earth. Let not that be a stumbling-block, and think not that it may serve as a justification to you for anything. For the Eternal judge asks of you what you can comprehend and not what you cannot. You will know that yourself hereafter, for you will behold all things truly then and will not dispute them. On earth, indeed, we are, as it were, astray, and if it were not for the precious image of Christ before us, we should be undone and altogether lost, as was the human race before the flood. Much on earth is hidden from us, but to make up for that we have been given a precious mystic sense of our living bond with the other world, with the higher heavenly world, and the roots of our thoughts and feelings are not here but in other worlds. That is why the philosophers say that we cannot apprehend the reality of things on earth.
  God took seeds from different worlds and sowed them on this earth, and His garden grew up and everything came up that could come up, but what grows lives and is alive only through the feeling of its contact with other mysterious worlds. If that feeling grows weak or is destroyed in you, the heavenly growth will die away in you. Then you will be indifferent to life and even grow to hate it. That's what I think.

(h) Can a Man judge his Fellow Creatures? Faith to the End.

Remember particularly that you cannot be a judge of anyone. For no one can judge a criminal until he recognises that he is just such a criminal as the man standing before him, and that he perhaps is more than all men to blame for that crime. When he understands that, he will be able to be a judge. Though that sounds absurd, it is true. If I had been righteous myself, perhaps there would have been no criminal standing before me. If you can take upon yourself the crime of the criminal your heart is judging, take it at once, suffer for him yourself, and let him go without reproach. And even if the law itself makes you his judge, act in the same spirit so far as possible, for he will go away and condemn himself more bitterly than you have done. If, after your kiss, he goes away untouched, mocking at you, do not let that be a stumbling-block to you. It shows his time has not yet come, but it will come in due course. And if it come not, no Matter; if not he, then another in his place will understand and suffer, and judge and condemn himself, and the truth will be fulfilled. Believe that, believe it without doubt; for in that lies all the hope and faith of the saints.
  Work without ceasing. If you remember in the night as you go to sleep, "I have not done what I ought to have done," rise up at once and do it. If the people around you are spiteful and callous and will not hear you, fall down before them and beg their forgiveness; for in truth you are to blame for their not wanting to hear you. And if you cannot speak to them in their bitterness, serve them in silence and in humility, never losing hope. If all men abandon you and even drive you away by force, then when you are left alone fall on the earth and kiss it, water it with your tears and it will bring forth fruit even though no one has seen or heard you in your solitude. Believe to the end, even if all men went astray and you were left the only one faithful; bring your offering even then and praise God in your loneliness. And if two of you are gathered together- then there is a whole world, a world of living love. Embrace each other tenderly and praise God, for if only in you two His truth has been fulfilled.
  If you sin yourself and grieve even unto death for your sins or for your sudden sin, then rejoice for others, rejoice for the righteous man, rejoice that if you have sinned, he is righteous and has not sinned.
  If the evil-doing of men moves you to indignation and overwhelming distress, even to a desire for vengeance on the evil-doers, shun above all things that feeling. Go at once and seek suffering for yourself, as though you were yourself guilty of that wrong. Accept that suffering and bear it and your heart will find comfort, and you will understand that you too are guilty, for you might have been a light to the evil-doers, even as the one man sinless, and you were not a light to them. If you had been a light, you would have lightened the path for others too, and the evil-doer might perhaps have been saved by your light from his sin. And even though your light was shining, yet you see men were not saved by it, hold firm and doubt not the power of the heavenly light. Believe that if they were not saved, they will be saved hereafter. And if they are not saved hereafter, then their sons will be saved, for your light will not die even when you are dead. The righteous man departs, but his light remains. Men are always saved after the death of the deliverer. Men reject their prophets and slay them, but they love their martyrs and honour those whom they have slain. You are working for the whole, are acting for the future. Seek no reward, for great is your reward on this earth: the spiritual joy which is only vouchsafed to the righteous man. Fear not the great nor the mighty, but be wise and ever serene. Know the measure, know the times, study that. When you are left alone, pray. Love to throw yourself on the earth and kiss it. Kiss the earth and love it with an unceasing, consuming love. Love all men, love everything. Seek that rapture and ecstasy. Water the earth with the tears of your joy and love those tears. Don't be ashamed of that ecstasy, prize it, for it is a gift of God and a great one; it is not given to many but only to the elect.

(i) Of Hell and Hell Fire, a Mystic Reflection.

Fathers and teachers, I ponder, "What is hell?" I maintain that it is the suffering of being unable to love. Once in infinite existence, immeasurable in time and space, a spiritual creature was given on his coming to earth the power of saying, "I am and I love." Once, only once, there was given him a moment of active lifting love, and for that was earthly life given him, and with it times and seasons. And that happy creature rejected the priceless gift, prized it and loved it not, scorned it and remained callous. Such a one, having left the earth, sees Abraham's bosom and talks with Abraham as we are told in the parable of the rich man and Lazarus, and beholds heaven and can go up to the Lord. But that is just his torment, to rise up to the Lord without ever having loved, to be brought close to those who have loved when he has despised their love. For he sees clearly and says to himself, "Now I have understanding, and though I now thirst to love, there will be nothing great, no sacrifice in my love, for my earthly life is over, and Abraham will not come even with a drop of living water (that is the gift of earthly active life) to cool the fiery thirst of spiritual love which burns in me now, though I despised it on earth; there is no more life for me and will be no more time! Even though I would gladly give my life for others, it can never be, for that life is passed which can be sacrificed for love, and now there is a gulf fixed between that life and this existence."
  They talk of hell fire in the material sense. I don't go into that mystery and I shun it. But I think if there were fire in material sense, they would be glad of it, for I imagine that in material agony, their still greater spiritual agony would be forgotten for a moment. Moreover, that spiritual agony cannot be taken from them, for that suffering is not external but within them. And if it could be taken from them, I think it would be bitterer still for the unhappy creatures. For even if the righteous in Paradise forgave them, beholding their torments, and called them up to heaven in their infinite love, they would only multiply their torments, for they would arouse in them still more keenly a flaming thirst for responsive, active and grateful love which is now impossible. In the timidity of my heart I imagine, however, that the very recognition of this impossibility would serve at last to console them. For accepting the love of the righteous together with the impossibility of repaying it, by this submissiveness and the effect of this humility, they will attain at last, as it were, to a certain semblance of that active love which they scorned in life, to something like its outward expression... I am sorry, friends and brothers, that I cannot express this clearly. But woe to those who have slain themselves on earth, woe to the suicides! I believe that there can be none more miserable than they. They tell us that it is a sin to pray for them and outwardly the Church, as it were, renounces them, but in my secret heart I believe that we may pray even for them. Love can never be an offence to Christ. For such as those I have prayed inwardly all my life, I confess it, fathers and teachers, and even now I pray for them every day.
  Oh, there are some who remain proud and fierce even in hell, in spite of their certain knowledge and contemplation of the absolute truth; there are some fearful ones who have given themselves over to Satan and his proud spirit entirely. For such, hell is voluntary and ever consuming; they are tortured by their own choice. For they have cursed themselves, cursing God and life. They live upon their vindictive pride like a starving man in the desert sucking blood out of his own body. But they are never satisfied, and they refuse forgiveness, they curse God Who calls them. They cannot behold the living God without hatred, and they cry out that the God of life should be annihilated, that God should destroy Himself and His own creation. And they will burn in the fire of their own wrath for ever and yearn for death and annihilation. But they will not attain to death....
  Here Alexey Fyodorovitch Karamazov's manuscript ends. I repeat, it is incomplete and fragmentary. Biographical details, for instance, cover only Father Zosima's earliest youth. Of his teaching and opinions we find brought together sayings evidently uttered on very different occasions. His utterances during the last few hours have not been kept separate from the rest, but their general character can be gathered from what we have in Alexey Fyodorovitch's manuscript.
  The elder's death came in the end quite unexpectedly. For although those who were gathered about him that last evening realised that his death was approaching, yet it was difficult to imagine that it would come so suddenly. On the contrary, his friends, as I observed already, seeing him that night apparently so cheerful and talkative, were convinced that there was at least a temporary change for the better in his condition. Even five minutes before his death, they said afterwards wonderingly, it was impossible to foresee it. He seemed suddenly to feel an acute pain in his chest, he turned pale and pressed his hands to his heart. All rose from their seats and hastened to him. But though suffering, he still looked at them with a smile, sank slowly from his chair on to his knees, then bowed his face to the ground, stretched out his arms and as though in joyful ecstasy, praying and kissing the ground, quietly and joyfully gave up his soul to God.
  The news of his death spread at once through the hermitage and reached the monastery. The nearest friends of the deceased and those whose duty it was from their position began to lay out the corpse according to the ancient ritual, and all the monks gathered together in the church. And before dawn the news of the death reached the town. By the morning all the town was talking of the event, and crowds were flocking from the town to the monastery. But this subject will be treated in the next book; I will only add here that before a day had passed something happened so unexpected, so strange, upsetting, and bewildering in its effect on the monks and the townspeople, that after all these years, that day of general suspense is still vividly remembered in the town.

Terminating a specific application instance using it's index number in Pivotal Cloud Foundry

Pas Apicella - Tue, 2017-12-19 03:54
I was recently asked how to terminate a specific application instance rather then terminate all instances using "cf delete".

We can easily using the CF REST API or even easier the CF CLI "cf curl" command which makes it straight forward to make REST based calls into cloud foundry as shown below.

CF REST API Docs

https://apidocs.cloudfoundry.org/280/

Below assumes you already logged into PCF using the CF CLI

1. First find an application that has multiple instances

pasapicella@pas-macbook:~$ cf app pas-cf-manifest
Showing health and status for app pas-cf-manifest in org apples-pivotal-org / space development as papicella@pivotal.io...

name:              pas-cf-manifest
requested state:   started
instances:         2/2
usage:             756M x 2 instances
routes:            pas-cf-manifest.cfapps.io
last uploaded:     Sun 19 Nov 21:26:26 AEDT 2017
stack:             cflinuxfs2
buildpack:         client-certificate-mapper=1.2.0_RELEASE container-security-provider=1.8.0_RELEASE java-buildpack=v4.5-offline-https://github.com/cloudfoundry/java-buildpack.git#ffeefb9 java-main
                   java-opts jvmkill-agent=1.10.0_RELEASE open-jdk-like-jre=1.8.0_1...

     state     since                  cpu    memory           disk           details
#0   running   2017-12-16T00:11:27Z   0.0%   241.5M of 756M   139.9M of 1G
#1   running   2017-12-17T10:39:09Z   0.3%   221.3M of 756M   139.9M of 1G

2. Use a "cf curl" curl which uses the application GUID to determine which application to check all application instances and their current state

pasapicella@pas-macbook:~$ cf curl /v2/apps/`cf app pas-cf-manifest --guid`/instances
{
   "0": {
      "state": "RUNNING",
      "uptime": 293653,
      "since": 1513383087
   },
   "1": {
      "state": "RUNNING",
      "uptime": 169591,
      "since": 1513507149
   }
}

3. Now let's delete instance with index "1". Don't forget that PCF will determine the current desired state of the application is not the current state and will re-start the application instance very quickly

pasapicella@pas-macbook:~$ cf curl /v2/apps/`cf app pas-cf-manifest --guid`/instances/1 -X DELETE

Note: You won't get any output BUT you can verify it has done what you asked for by running the command at step #2 again

pasapicella@pas-macbook:~$ cf curl /v2/apps/`cf app pas-cf-manifest --guid`/instances
{
   "0": {
      "state": "RUNNING",
      "uptime": 293852,
      "since": 1513383087
   },
   "1": {
      "state": "DOWN",
      "uptime": 0
   }
}

If you run it again say 30 seconds later you should see your application instance re-started as shown below

pasapicella@pas-macbook:~$ cf curl /v2/apps/`cf app pas-cf-manifest --guid`/instances
{
   "0": {
      "state": "RUNNING",
      "uptime": 293870,
      "since": 1513383087
   },
   "1": {
      "state": "STARTING",
      "uptime": 11,
      "since": 1513676947
   }
}

pasapicella@pas-macbook:~$ cf curl /v2/apps/`cf app pas-cf-manifest --guid`/instances
{
   "0": {
      "state": "RUNNING",
      "uptime": 293924,
      "since": 1513383087
   },
   "1": {
      "state": "RUNNING",
      "uptime": 45,
      "since": 1513676965
   }
}

More Information

pasapicella@pas-macbook:~$ cf curl --help
NAME:
   curl - Executes a request to the targeted API endpoint

USAGE:
   cf curl PATH [-iv] [-X METHOD] [-H HEADER] [-d DATA] [--output FILE]

   By default 'cf curl' will perform a GET to the specified PATH. If data
   is provided via -d, a POST will be performed instead, and the Content-Type
   will be set to application/json. You may override headers with -H and the
   request method with -X.

   For API documentation, please visit http://apidocs.cloudfoundry.org.

EXAMPLES:
   cf curl "/v2/apps" -X GET -H "Content-Type: application/x-www-form-urlencoded" -d 'q=name:myapp'
   cf curl "/v2/apps" -d @/path/to/file

OPTIONS:
   -H            Custom headers to include in the request, flag can be specified multiple times
   -X            HTTP method (GET,POST,PUT,DELETE,etc)
   -d            HTTP data to include in the request body, or '@' followed by a file name to read the data from
   -i            Include response headers in the output
   --output      Write curl body to FILE instead of stdout
Categories: Fusion Middleware

Oracle Content & Experience Cloud: Document Search

If you read my first post on Oracle Content & Experience Cloud (Oracle CEC), you would have come away impressed with the capabilities and features of the product. Features for organizations to manage and share high-value content that could be used to build content-rich, omni-channel websites. However, as I’ve continued to work with Oracle CEC over the last four months, some features need improvement. Most notably in my opinion, is search. I’ll explain the reasons why in this blog post, and offer up details on how you can develop a custom component to enable a better search experience.

The Problem: Search Options are Limited for Sites and Provide Little Customization

Oracle CEC provides businesses with strong document storage, security and sharing capabilities through the managed “Content” section of the interface. However, there is often a need for content to be searched, viewed and accessed through a managed site. The out-of-the-box options to achieve this are scarce, and moreover may only fit a general use case, which is not likely to suit the needs of your business.

Luckily, Oracle allows developers to integrate custom components to Oracle CEC, and continually improves a powerful set of REST APIs which can be used to search folders and documents. Combining the two will result in an integrated search solution for the site which can be tailor-made to fit the functional and visual requirements of the business. In this post I will share my experience developing a custom search component for CEC, and provide a glimpse into future enhancements and capabilities.

The Solution: Integrate a Custom Search Interface

I began by integrating a global search bar into the header of the layout for the site. This gives users the ability to search for content on the fly regardless of where they are in the site. Once a user enters a search term, they can press enter, or click the “Search” button to initiate the search. The user and search term are then redirected to a search results page.

The search results page is like any other page of the site, except it has been hidden from display in the header navigation. I have placed my “Search-Results-Page” custom component within the page, which performs all the actions and rendering for the search.

The search term is picked up and decoded, then passed into Oracle’s API for full-text document searching. Using full-text search strengthens the search by looking for matches across multiple file and folder properties, such as:

  • The name
  • The text content of the file
  • The file extension
  • The owner’s name
  • The latest modified user’s name
  • The folder description/tags

The matching items are then returned to the component, where it applies pagination to the results, and injects that data into a template to build the results page. The template was modularly designed so that it can be easily updated or replaced to structure the response in a format that will match a specific look and feel without compromising the core search functionality behind the component.

Using several other API endpoints available, I added some additional features to the results page, such as the ability to generate thumbnail previews for the results as they are displayed to the page. I apply a thumbnail next to the info of each document returned, and display a folder icon next to the folders.

Hovering your cursor over the thumbnail will indicate the image can be enlarged. Clicking will expand the thumbnail and overlay it in the center of the page for the user to quickly inspect and verify whether it is the document they have been looking for:

For all documents returned in the results I have included actions to “View” and “Download”. Clicking the “View” icon will utilize another API endpoint to generate and open an HTML5 rendition of the full document.

Among other document attributes returned from the search are the content types (folder or file). Some users may want to view only one or the other, which can be made possible through a filter facet menu surfaced alongside the results. Logic can be included to handle a number of different sorting and filtering tasks.

Beyond a customizable display, there are also custom settings that can allow a site administrator to make near-immediate modifications to the search results component to adjust behaviors or adapt its use for multiple sites used within the organization. For example, the Results Limit and Results Per Page value can be adjusted for more results included on searches, and how many items are included in each page, respectively. Additionally, I’ve included a “Root Search Folder” selection, which allows the site admin to point searches at a specific folder (and all of its contents) as the target of the search for that site. This setting can be applied per instance, so any number of sites can target different folders of content to search upon, providing contextualization of searchable content on the basis of which site the search is being performed against.

The below settings dictate a total of at most 80 items be returned, at a max of 10 pages (8 results per page), and the search will target folders and documents that live within the “Search” folder.

The Vision: Faceted, Robust, and Dynamic Searching… Anywhere

Additional Filtering Capabilities

Filtering content by its type is a small example within a very large list of options which can provide users with the ability to reach more granular results. Adding additional attributes to filter on, and allowing site administrators to decide which filters should be available (or applied by default) can give businesses control on the relevancy of search results.

Targeting More Oracle Cloud Content

In addition to documents and folders, Oracle is continuing to improve on options to search across structured content, digital assets, content collections, and conversations. Additional functionality can be developed to include or separate searches across these various formats on the system.

Targeting Separate Existing Datastores

With API endpoints available, or other methods of JavaScript access available to existing datastores, the solution can also be repurposed to perform searches across existing data sources, and then formatted to be returned within a CEC site.

Improving the UX Out of the Box

The layout and structure of results is a crucial aspect of user experience. Several default templates can be created and bundled with the component to give business owners the opportunity to choose the interface which would best fit their vision for the site, rather than being limited to a single UI or carving out time to design and create a custom interface altogether.

In closing, the steps I outlined above to create a custom search component should illustrate another great feature of Oracle CEC. That feature is the customizable nature of the platform, giving you the ability to extend upon its inherent capabilities to provide an experience molded specifically for your organization. As a company, Fishbowl Solutions recognizes the value of search within the overall user experience, and offers Mindbreeze Inspire search solutions. We also understand the important role search plays within content management, and how effective search solutions can lead to more adoption and use of products like Oracle CEC.

The post Oracle Content & Experience Cloud: Document Search appeared first on Fishbowl Solutions.

Categories: Fusion Middleware, Other

No More ANNOYING Java Applets! WebCenter Configuration Made Easy with Fishbowl’s Admin Suite

Anyone who has used WebCenter Content’s provided administration applets will tell you that using them can be problematic. Most browsers implement measures to protect against Java security issues, and the admin applets frequently get caught in these filters. Accessing the applets often means going through several security prompts, switching to older browsers, or even manually executing the applet files from the server’s file system. Even once the applets are launched, they are slow to load. The problems with these Java-based admin applets create unnecessary frustration when trying to configure and administer an instance of WebCenter Content.

With Fishbowl’s Admin Suite 2.0, the most-used applets have been remade into web-based applets that do not rely on the problematic Java applets. Specifically, Configuration Manager, System Properties, User Admin, and Workflow Admin have received a web makeover, with Repository Manager planned to be added by the end of 2017. All the same functionality is available – updating rules and profiles, editing localization settings, configuring aliases, defining security groups and roles, running workflows, and more – in an updated UI that doesn’t require any of the annoying workarounds listed above.

These new applets are laid out the same as the provided Java applets, complete with Oracle’s included help pages – familiarity with the Java applets will directly translate to the new versions. We’ve made compatibility a priority with these new applets; they have been designed to work with WebCenter Content 10g, 11g, and 12c.

Existing Admin Suite customers can get these new web applets free of charge by upgrading to 2.0.  In addition to these applets, Admin Suite still includes Fishbowl’s most popular products:

  • Advanced User Security Mapping – simplify security mapping and reduce LDAP maintenance with our powerful rules engine
  • Enterprise Batchloader – schedule and batch load content from ERP and CRM systems into WebCenter
  • Subscription Notifier – send automatic email notifications, trigger workflows, update metadata
  • Workflow Solution Set – enhance WebCenter workflows with search capabilities, the ability to filter views, and customize the review pane

You can get an overview of the capabilities and value of Admin Suite by watching a replay of this webinar. For a quick overview of Admin Suite, please visit this page on the Fishbowl website.

If you are interested in purchasing Admin Suite or upgrading your existing copy, please contact us at 952-465-3400 or info@fishbowlsolutions.com and we’d be happy to help you.

The post No More ANNOYING Java Applets! WebCenter Configuration Made Easy with Fishbowl’s Admin Suite appeared first on Fishbowl Solutions.

Categories: Fusion Middleware, Other

Taking Pivotal Cloud Foundry Small Footprint for a test drive

Pas Apicella - Wed, 2017-11-22 21:55
Pivotal Cloud Foundry (PCF) now has a small footprint edition. It features a deployment configuration with as few as 6 VMs. Review the documentation for download and installation instructions as follows

http://docs.pivotal.io/pivotalcf/1-12/customizing/small-footprint.html

There was also a Pivotal blog post on this as follows:

https://content.pivotal.io/blog/big-things-come-in-small-packages-getting-started-with-pivotal-cloud-foundry-small-footprint

As you can see from this image it's considerably smaller control plane that's obvious.



It is important to understand what the limitations of such an install are as per the docs link below.

http://docs.pivotal.io/pivotalcf/1-12/customizing/small-footprint.html#limits

Installing the small footprint looks identical from the Operations Manager UI in fact it's still labelled ERT and from the home page of Operations Manager UI your wouldn't even know you had the small footprint



If you dig a bit further and click on the "ERT tile" and then select "Resource Config" left hand link you will then clearly know it's the Small Footprint PCF install.


I choose to use internal MySQL database and if I didn't then it could be scaled back even more then the default 7 VM's I ended up with.

Lastly I was very curious to find out what jobs are placed on which service VM's. Here is what it looked like for me when I logged into bosh director and run some bosh CLI commands
  
ubuntu@ip-10-0-0-241:~$ bosh2 -e aws vms --column=Instance --column="Process State" --column=AZ --column="VM Type"
Using environment '10.0.16.5' as user 'director' (bosh.*.read, openid, bosh.*.admin, bosh.read, bosh.admin)

Task 73. Done

Deployment 'cf-a96683b17697c86b8c90'

Instance Process State AZ VM Type
backup-prepare/16356c40-1f20-42f0-8f2e-de45549be797 running ap-southeast-2a t2.micro
blobstore/b6e22107-018b-425d-8fe4-ab47eeaf2c75 running ap-southeast-2a m4.large
compute/5439f18f-c842-40a2-b6f3-faf6b6848716 running ap-southeast-2a r4.xlarge
control/68979d93-d12b-4d87-b110-d3d41a48b261 running ap-southeast-2a r4.xlarge
database/a3efedaa-4df6-48f5-9f20-61cf3d9f3c1b running ap-southeast-2a r4.large
mysql_monitor/d40ef638-d2d0-488e-b937-99a7f5b5b334 running ap-southeast-2a t2.micro
router/f9573547-c5a1-43d4-be02-38a1d9e9c73e running ap-southeast-2a t2.micro

7 vms

Succeeded
  
ubuntu@ip-10-0-0-241:~$ bosh2 -e aws instances --ps --column=Instance --column=Process
Using environment '10.0.16.5' as user 'director' (bosh.*.read, openid, bosh.*.admin, bosh.read, bosh.admin)

Task 68. Done

Deployment 'cf-a96683b17697c86b8c90'

Instance Process
autoscaling-register-broker/9feaef45-994e-472c-8ca3-f0c39467dd6b -
autoscaling/184df31d-a64c-49e0-8b6b-27eafdb31ca0 -
backup-prepare/16356c40-1f20-42f0-8f2e-de45549be797 -
~ service-backup
blobstore/b6e22107-018b-425d-8fe4-ab47eeaf2c75 -
~ blobstore_nginx
~ blobstore_url_signer
~ consul_agent
~ metron_agent
~ route_registrar
bootstrap/0dc22a1f-a1ee-4a03-85c6-fed08f37c44a -
compute/5439f18f-c842-40a2-b6f3-faf6b6848716 -
~ consul_agent
~ garden
~ iptables-logger
~ metron_agent
~ netmon
~ nfsv3driver
~ rep
~ route_emitter
~ silk-daemon
~ vxlan-policy-agent
control/68979d93-d12b-4d87-b110-d3d41a48b261 -
~ adapter
~ auctioneer
~ bbs
~ cc_uploader
~ cloud_controller_clock
~ cloud_controller_ng
~ cloud_controller_worker_1
~ cloud_controller_worker_local_1
~ cloud_controller_worker_local_2
~ consul_agent
~ doppler
~ file_server
~ locket
~ loggregator_trafficcontroller
~ metron_agent
~ nginx_cc
~ policy-server
~ reverse_log_proxy
~ route_registrar
~ routing-api
~ scheduler
~ silk-controller
~ ssh_proxy
~ statsd_injector
~ syslog_drain_binder
~ tps_watcher
~ uaa
database/a3efedaa-4df6-48f5-9f20-61cf3d9f3c1b -
~ cluster_health_logger
~ consul_agent
~ galera-healthcheck
~ gra-log-purger-executable
~ mariadb_ctrl
~ metron_agent
~ mysql-diag-agent
~ mysql-metrics
~ nats
~ route_registrar
~ streaming-mysql-backup-tool
~ switchboard
mysql-rejoin-unsafe/01a0aec3-b103-4c09-bc69-cabc61c513cc -
mysql_monitor/d40ef638-d2d0-488e-b937-99a7f5b5b334 -
~ replication-canary
nfsbrokerpush/829f0292-59ab-4824-8b0b-c4af4bddbce0 -
notifications-ui/50972440-36cd-499d-ad7c-eef4df7e604b -
notifications/968d625e-af63-4e2f-a59c-f6b789ef1cff -
push-apps-manager/3d9760d7-6f09-453c-a052-32604b6a3235 -
push-pivotal-account/5a8782ad-82eb-4469-8242-f0873bc4a587 -
push-usage-service/9b781db1-171b-4abe-92f4-7445fd3d487f -
router/f9573547-c5a1-43d4-be02-38a1d9e9c73e -
~ consul_agent
~ gorouter
~ metron_agent
smoke-tests/a8e2ff97-bae1-4594-90fc-ec8c430fd620 -

77 instances

Succeeded

Now, with Small Footprint, you have yet another way to bring PCF to your organization!
Categories: Fusion Middleware

Pages

Subscribe to Oracle FAQ aggregator - Fusion Middleware